anchor.diff:         true -> Default
       end.
   
  +%% @doc Read elements from a list ref.
  +-spec read_list(#ref{}) -> [#ref{}] | [binary()].
   read_list(Ref) -> read_list(Ref, []).
  +
  +%% @doc Read elements from a list ref.
  +-spec read_list(#ref{}, any()) -> [#ref{}] | [binary()] | Default.
   read_list(#ref{ kind=#list_ref{ count=0 } }, _) -> [];
   read_list(#ref{ segment=SegmentId, pos=Pos, offset=Offset, data=Data,
                   kind=#list_ref{ size=Size, count=Count } }, _) ->
  
positive.code:                      + ((Size div Count) * Idx) }
      end.
  
  read_struct_data(Align, Len, Ref) ->
      read_struct_data(Align, Len, Ref, <<0:Len/integer>>).
  read_struct_data(_, _, #ref{ kind=null }, Default) -> Default;
  read_struct_data(Align, Len,
                   #ref{ kind=#struct_ref{ dsize=DSize }}=Ref,
  
negative.code:         = get_segment(1 + ((Align + Len - 1) div 64), Ptr),
      set_segment(<<Pre/bits, Value:Len/bits, Post/bits>>, Ptr).
  
  %% @doc Resolve a far pointer.
  %%
  %% Usually this is done automatically when reading ref's.
  -spec follow_far(#ref{}) -> #ref{}.
  follow_far(#ref{ offset=Offset, data=Data,
                   kind=#far_ref{ segment=SegmentId, double_far=Double } }) ->
      Pad = get(SegmentId, Offset, Data, false),
  