anchor.diff:      <<1:8/integer-unsigned-little>>;
   encode({instance, primitive, bool, false}, _Spec) ->
       <<0:8/integer-unsigned-little>>;
  +encode({instance, primitive, f32, pos_inf}, _Spec) -> <<0,0,128,127>>;
  +encode({instance, primitive, f32, neg_inf}, _Spec) -> <<0,0,128,255>>;
  +encode({instance, primitive, f32, nan}, _Spec) -> <<0,0,192,255>>;
  +encode({instance, primitive, f32, Value}, _Spec) -> <<Value:32/float-signed-little>>;
  +encode({instance, primitive, f64, pos_inf}, _Spec) -> <<0,0,0,0,0,0,240,127>>;
  +encode({instance, primitive, f64, neg_inf}, _Spec) -> <<0,0,0,0,0,0,240,255>>;
  +encode({instance, primitive, f64, nan}, _Spec) -> <<0,0,0,0,0,0,248,255>>;
  +encode({instance, primitive, f64, Value}, _Spec) -> <<Value:64/float-signed-little>>;
   
   encode({instance, synonym, Name, Value}, Spec) ->
       {descriptor, synonym, Name, RefName} = lookup_type(Name, Spec),
  
positive.code: decode_internal(<<Val:64/integer-signed-little,Rem/binary>>, primitive, s64, _Spec) -> {Val,Rem};
  decode_internal(<<1:8/integer-unsigned-little,Rem/binary>>, primitive, bool, _Spec) -> {true,Rem};
  decode_internal(<<0:8/integer-unsigned-little,Rem/binary>>, primitive, bool, _Spec) -> {false,Rem};
  
  decode_internal(Bin, synonym, RefName, Spec) ->
      {descriptor, RefProto, RefName, _Desc} = lookup_type(RefName, Spec),
  
negative.code: -module(cauterize).
  -export([decode/3, encode/2]).
  
  
  decode(Bin, Name, Spec) ->
      {descriptor, Prototype, Name, Desc} = lookup_type(Name, Spec),
  