anchor.diff:  prop_struct_data() ->
       ?FORALL(
          {#struct_ref{ dsize=Data, psize=Ptr },
  -        Off, Size, Value}, struct_data(),
  +        {Off, Size, Value}}, struct_data(),
          begin
              D = data(Data, Ptr),
              Ref = ecapnp_ref:get(0, 0, D),
  
positive.code: 
  %% generate text and idx for struct ref
  text_data() -> ?LET([R, T], [struct_ref_ptr(), binary()],
                      ?LET(I, range(0, R#struct_ref.psize - 1),
                           {R, I, T})).
  
  
  %%% ----------------------------------------
  
negative.code: %% generate struct ref in a given size range for data and pointer sections
  struct_ref(Td, Tp) -> ?LET([D, P], [Td, Tp], #struct_ref{ dsize=D, psize=P }).
  
  struct_data_value(R) ->
      ?LET(O, range(0, (R#struct_ref.dsize * 64) - 2),
           ?LET(S, range(1, (R#struct_ref.dsize * 64) - O),
                ?LET(V, bitstring(S),
                     {O, S, V}))).
  
  %% generate offset and size for struct ref
  struct_data() -> ?LET(R, struct_ref_data(),
                        {R, struct_data_value(R)}).
  
  struct_ptr_idx(R) -> ?LET(I, range(0, R#struct_ref.psize - 1), I).
  
  %% generate ptr ref and idx for struct ref
  struct_ptr() -> ?LET([R, K], [struct_ref_ptr(), ref_kind()],
                       {R, struct_ptr_idx(R), K}).
  
  %% generate a ref
  ref_kind() -> union(
  