Decodes an "encoded" Object and returns a "decoded" Object. Note that the implementation of this interface will
try to cast the Object parameter to the specific type expected by a particular Decoder implementation. If a
ClassCastException occurs this decode method will throw a DecoderException.
source - the object to decode
a 'decoded" object
DecoderException - a decoder exception can be thrown for any number of reasons. Some good candidates are that the
parameter passed to this method is null, a param cannot be cast to the appropriate type for a