anchor.diff:              {FieldName, FieldValue}
       end;
   
  +%% Value field
  +get_data(#data{ type=Type,
  +                offset=DataOffset,
  +                bits=Bits },
  +         #object{ offset=ObjOffset,
  +                  segment=Segment }) ->
  +    Offset = ObjOffset + DataOffset,
  +    get_value(Type, Offset, Bits, Segment).
  +
  +
   %% List fields
  -get_field(#ptr{ type={list, Type} }=Ptr, Object) ->
  +get_ptr(#ptr{ type={list, Type} }=Ptr, Object) ->
       case dereference_ptr(Ptr, Object) of
  -        #list_ptr{ 
  -           size=composite, 
  -           segment=S }=R ->
  +        #list_ptr{ size=composite, 
  +                   segment=S }=L ->
               {ok, T} = get_type(Type, Object),
  -            [Object#object{ offset=O, type=T, segment=S } || O <- get_list(R)]
  -%%% TODO: implement for ordinary lists
  +            [Object#object{ offset=O, type=T, segment=S } || O <- get_offset_list(L)];
  +        #list_ptr{ segment=S }=L -> 
  +            [get_value(Type, O, B, S) || {O, B} <- get_offset_list(L)]
       end;
   
   %% Text field
  -get_field(#ptr{ type=text }=Ptr, Object) ->
  +get_ptr(#ptr{ type=text }=Ptr, Object) ->
       #list_ptr{
          offset=Offset, 
          size=8,
  
positive.code:     proplists:get_value(Value, Values);
  
  %% Union field
  get_field(#data{ type={union, Fields},
                   offset=DataOffset,
                   bits=Bits },
            #object{ offset=ObjOffset,
                     segment=Segment}=Object) ->
      <<_:ObjOffset/binary-unit:64,
  
negative.code:     Text;
  
  %% Struct field
  get_ptr(#ptr{ type={struct, Type} }=Ptr, Object) ->
      {ok, T} = get_type(Type, Object),
      case dereference_ptr(Ptr, Object) of
          O when is_record(O, object) ->
              O#object{ type=T }
      end.
  
  %% Data field helpers
  -define(GET_VALUE(ValueType, Size, TypeSpec),
          get_value(ValueType, Offset, Bits, Segment) ->
                 <<_:Offset/binary-unit:64,
                   _:Bits/bits,
                   Value:Size/TypeSpec,
                   _/binary>> = Segment,
                 Value
  ).
  
  ?GET_VALUE(uint64, 64, integer-unsigned-little);
  ?GET_VALUE(uint32, 32, integer-unsigned-little);
  ?GET_VALUE(uint16, 16, integer-unsigned-little).
  
  
  %% Pointer field helpers
  dereference_ptr(
    #ptr{ offset=PtrOffset },
    #object{ offset=ObjOffset,
  