anchor.diff:      end;
   read_list(#ref{ kind=null }, Default) -> Default.
   
  +%% @doc Read text.
  +%%
  +%% NOTICE: The required trailing `NULL' byte is silently dropped when
  +%% reading the text.
  +-spec read_text(#ref{}) -> binary().
   read_text(Ref) -> read_text(Ref, <<>>).
  +
  +%% @doc Read text.
  +%%
  +%% NOTICE: The required trailing `NULL' byte is silently dropped when
  +%% reading the text.
  +-spec read_text(#ref{}, any()) -> binary() | Default.
   read_text(#ref{ kind=#list_ref{ size=byte, count=0 } }, _) -> <<>>;
   read_text(#ref{ kind=#list_ref{ size=byte, count=Count } }=Ref, _) ->
       binary_part(get_segment(1 + ((Count - 2) div 8), Ref), 0, Count - 1);
   read_text(#ref{ kind=null }, Default) -> Default.
   
  +%% @doc Read data.
  +-spec read_data(#ref{}) -> binary().
   read_data(Ref) -> read_data(Ref, <<>>).
  +
  +%% @doc Read data.
  +-spec read_data(#ref{}, any()) -> binary() | Default.
   read_data(#ref{ kind=#list_ref{ size=byte, count=0 } }, _) -> <<>>;
   read_data(#ref{ kind=#list_ref{ size=byte, count=Count } }=Ref, _) ->
       binary_part(get_segment(1 + ((Count - 1) div 8), Ref), 0, Count);
   read_data(#ref{ kind=null }, Default) -> Default.
   
  +%% @doc Write to struct data section.
  +-spec write_struct_data(integer(), integer(), binary(), #ref{}) -> ok.
   write_struct_data(Align, Len, Value,
                     #ref{ kind=#struct_ref{ dsize=DSize } }=Ref)
     when Align + Len =< DSize * 64 ->
  
positive.code:         = get_segment(1 + ((Align + Len - 1) div 64), Ref),
      set_segment(<<Pre/bits, Value:Len/bits, Post/bits>>, Ref).
  
  write_struct_ptr(Ptr, Ref) ->
      check_ptr(Ptr, Ref),
      write(Ptr).
  
  write_text(Text, Ptr, Ref) ->
      write_data(<<Text/binary, 0>>, Ptr, Ref).
  
  write_data(Data, Ptr, #ref{ segment=SegmentId, data=Pid }=Ref) ->
      check_ptr(Ptr, Ref),
      Count = size(Data),
  
negative.code:                      + ((Size div Count) * Idx) }
      end.
  
  %% @doc Read from data section of a struct ref.
  %%
  %% `Align' is number of bits into the data section to read from, and
  %% `Len' is number of bits to read.
  -spec read_struct_data(integer(), integer(), #ref{}) -> binary().
  read_struct_data(Align, Len, Ref) ->
      read_struct_data(Align, Len, Ref, <<0:Len/integer>>).
  
  %% @doc Read from data section of a struct ref.
  %%
  %% `Align' is number of bits into the data section to read from, and
  %% `Len' is number of bits to read.
  -spec read_struct_data(integer(), integer(), #ref{}, any()) -> binary() | Default.
  read_struct_data(_, _, #ref{ kind=null }, Default) -> Default;
  read_struct_data(Align, Len,
                   #ref{ kind=#struct_ref{ dsize=DSize }}=Ref,
  