anchor.diff:  read_struct_ptr(_, #ref{ kind=null }, Default) -> Default;
   read_struct_ptr(Idx, #ref{ segment=SegmentId, pos=Pos,
                              offset=Offset, data=Data,
  -                           kind={Kind, DSize, PSize} },
  -                Default)
  -  when Kind == struct_ref; Kind == interface_ref ->
  +                           kind=#struct_ref{ dsize=DSize, psize=PSize } },
  +                Default) ->
       if Idx >= 0 andalso Idx < PSize ->
               get(SegmentId, Pos + 1 + Offset + DSize + Idx, Data);
          true -> Default
  
positive.code: %% or a "unpositioned" ref pointing to where a inlineComposite element
  %% holds its data).
  ptr(Idx, #ref{ segment=SegmentId, pos=Pos, offset=Offset, data=Data,
                 kind={Kind, DSize, PSize} })
    when (Kind == struct_ref orelse Kind == interface_ref),
         Idx >= 0, Idx < PSize ->
      #ref{ segment=SegmentId,
            pos=Pos + 1 + Offset + DSize + Idx,
            data=Data };
  
negative.code: %% word will be truncated.
  paste(<<DataRef:64/bits, Data/binary>>, Ref) ->
      #ref{ offset=0, kind=Kind } = read_ref(DataRef, Ref),
      if is_record(Kind, struct_ref);
         is_record(Kind, list_ref) ->
              case {size(Data) div 8, ref_data_size(Kind)} of
                  {Size, RefSize} when Size >= RefSize ->
                      Ref1 = alloc_data(Size, Ref#ref{ kind=Kind }),
                      ok = write(<<Data:Size/binary-unit:64>>, Ref1),
                      Ref1
              end;
         Kind == null -> set(Kind, Ref)
      end.
  
  %% @doc Get a null pointer.
  