anchor.diff:      fitbits(abs(Int),63);
   in_range(Int,uint64) ->
       fitbits(Int,64);
  +in_range(Float,float) ->
  +    fitbits(Float,32);
  +in_range(Float,double) ->
  +    fitbits(Float,64);
   in_range(false,bool) ->
       true;
   in_range(true,bool) ->
       true.
   
  +compare(Float1, Float2) when is_float(Float1), is_float(Float2) ->
  +    (abs(Float1 - Float2) =< ?Mach_Eps);
  +compare(A,A) -> true;
  +compare(_,_) -> false.
  +    
  +fitbits(Float,32) when is_float(Float) -> true;
  +fitbits(Float,64) when is_float(Float) -> true;
   fitbits(Int,Bits) ->
       RestBits = 80-Bits,
       << NoFit:RestBits, _:Bits >> = <<Int:80>>,
  
positive.code:     	    begin
          		{{N, RData}, <<>>} = protobuffs:decode(list_to_binary(protobuffs:encode(FieldNum, Data, Type)), Type),
          		FieldNum=:=N andalso 
          		(Data==RData orelse foreign_type(Type,Data,RData))  
      	    end
  	    )).
  
  
negative.code: 			     {{N, RData}, <<>>} = protobuffs:decode(list_to_binary(Bin), Type),
      			 in_range(Data,Type) andalso
      			     FieldNum=:=N andalso
      			     (compare(Data,RData) orelse foreign_type(Type,Data,RData))
  	     end).
  
  prop_encode_decode() ->
  