code: @Override
      public ConcurrentMap<String, Object> deserializeAttributes(final byte[] in ) {
          ByteArrayInputStream bis = null;
          ObjectInputStream ois = null;
          try {
              bis = new ByteArrayInputStream( in );
              ois = createObjectInputStream( bis );
  
              final ConcurrentMap<String, Object> attributes = new ConcurrentHashMap<String, Object>();
              final int n = ( (Integer) ois.readObject() ).intValue();
              for ( int i = 0; i < n; i++ ) {
                  final String name = (String) ois.readObject();
                  final Object value = ois.readObject();
                  if ( ( value instanceof String ) && ( value.equals( NOT_SERIALIZED ) ) ) {
                      continue;
                  }
                  if ( LOG.isDebugEnabled() ) {
                      LOG.debug( "  loading attribute '" + name + "' with value '" + value + "'" );
                  }
                  attributes.put( name, value );
              }
  
              return attributes;
          } catch ( final ClassNotFoundException e ) {
              LOG.warn( "Caught CNFE decoding "+ in.length +" bytes of data", e );
              throw new TranscoderDeserializationException( "Caught CNFE decoding data", e );
          } catch ( final IOException e ) {
              LOG.warn( "Caught IOException decoding "+ in.length +" bytes of data", e );
              throw new TranscoderDeserializationException( "Caught IOException decoding data", e );
          } finally {
              closeSilently( bis );
              closeSilently( ois );
          }
      }
docs: Get the object represented by the given serialized bytes.
  
  @param in
  the bytes to deserialize
  @return the resulting object