anchor.diff:  -spec read_data(ref(), any()) -> binary() | any().
   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);
  +    binary_part(read(1 + ((Count - 1) div 8), Ref), 0, Count);
   read_data(#ref{ kind=null }, Default) -> Default.
   
   %% @doc Write to struct data section.
  
positive.code: list_element_size(pointer) -> 64;
  list_element_size(inlineComposite) -> inlineComposite.
  
  get_segment(Len, #ref{ segment=SegmentId, pos=Pos,
                         offset=Offset, data=Data }) ->
      ecapnp_data:get_segment(SegmentId, Pos + 1 + Offset, Len, Data).
  
  set_segment(Value, #ref{ segment=SegmentId, pos=Pos,
                           offset=Offset, data=Data }) ->
      ecapnp_data:update_segment({SegmentId, Pos + 1 + Offset}, Value, Data).
  
  write(#ref{ pos=-1 }) -> ok;
  write(#ref{ offset=Offset }=Ref) ->
      write(create_ptr(Offset, Ref), 0, Ref).
  
  write(Bin, #ref{ offset=Offset }=Ref) ->
      write(Bin, Offset + 1, Ref).
  
  write(Bin, Offset, #ref{ segment=SegmentId, pos=Pos, data=Data }) ->
      ecapnp_data:update_segment({SegmentId, Pos + Offset}, Bin, Data).
  
  check_ptr(#ref{ segment=SegmentId, pos=Ptr, data=Data },
            #ref{ segment=SegmentId, pos=Pos, data=Data, offset=Offset,
  
negative.code: -spec read_text(ref(), any()) -> binary() | any().
  read_text(#ref{ kind=#list_ref{ size=byte, count=0 } }, _) -> <<>>;
  read_text(#ref{ kind=#list_ref{ size=byte, count=Count } }=Ref, _) ->
      binary_part(read(1 + ((Count - 2) div 8), Ref), 0, Count - 1);
  read_text(#ref{ kind=null }, Default) -> Default.
  
  %% @doc Read data.
  