anchor.diff:  	{ strip_object(Object,[]), Rest }.
   
   extract(Data,Schema) ->
  -	extract(Data,Schema,[]).
  +	case extract(Data,Schema,[]) of
  +	{ [ Result ], <<>>, [] }  -> Result;
  +	{ [ Result ], Rest, Fmt } -> { Result, Rest, Fmt }
  +	end.
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %% Private Methods
  
positive.code: extract(<<Size:16/big-unsigned-integer,String:Size/binary,Rest/binary>>, [ $s | T ], Acc ) ->
  	extract(Rest, T, [ String | Acc ]);
  extract(<<Size:16/big-unsigned-integer,Array:Size/binary,Rest/binary>>, [ $a | T ], Acc ) ->
  	extract(Array, T, [] );
  extract(<<Size:16/big-unsigned-integer,Array:Size/binary,Rest/binary>>, [ [$a|S] | T ], Acc ) ->
  	extract(Rest, T, [ extract(Array,S,[]) | Acc ]);
  
  extract(<<Size:16/big-unsigned-integer,Object:Size/binary,Rest/binary>>, [ $o | T ], Acc ) ->
  	extract_object(Object, T, [] );
  extract(<<Size:16/big-unsigned-integer,Object:Size/binary,Rest/binary>>, [ [$o|S] | T ], Acc ) ->
  	extract(Rest, T, [ extract_object(Object,S,[]) | Acc ]).
  
  
negative.code: 	lists:reverse(Acc);
  extract_object(<<Len:16/big-unsigned-integer,Key:Len/binary,Value/binary>>, [ Tag | T ], Acc) ->
  	{ [ V ], Rem, _ } = extract(Value, [ Tag ], []),
  	extract_object(Rem, T, [ { Key, V } | Acc ]).
  	
  