anchor.diff:      Length = Pos2 - Pos1,
       {ok, Value1, Pos1} = marshal(uint32, Length, Pos0),
       {ok, [<<0:Pad>>, Value1, Value2], Pos2};
  -marshal({struct, SubTypes}=Type, Value, Pos) when is_tuple(Value) ->
  +marshal({struct, _SubTypes}=Type, Value, Pos) when is_tuple(Value) ->
       marshal(Type, tuple_to_list(Value), Pos);
   marshal({struct, SubTypes}, Value, Pos) when is_list(Value) ->
       marshal_struct(SubTypes, Value, Pos);
  
positive.code:     {ok, Header, Body, Data1}.
  
  header_fetch(Code, Header) ->
      {ok, Field} = header_find(Code, Header).
  
  header_find(Code, Header) ->
      Headers = Header#header.headers,
  
negative.code:     unmarshal_array(SubType, Length - Size, Data1, Res ++ [Value], Pos1).
  
  unmarshal_list(Types, Data) when is_list(Types), is_binary(Data) ->
      {ok, Data1, Res, Pos} = unmarshal_list(Types, Data, 0),
      {ok, Data1, Res, Pos}.
  
  unmarshal_list(Types, Data, Pos) when is_list(Types) ->
  