anchor.diff:      ?FORALL({Repeater},
   	    {repeater_person()},
   	    begin
  -		repeater_pb:decode_person(repeater_pb:encode_person(Repeater)),
  -		true
  +		Decoded = repeater_pb:decode_person(repeater_pb:encode_person(Repeater)),
  +		compare_messages(Repeater,Decoded)
   	    end).
   
   prop_protobuffs_packed_repeated() ->
       ?FORALL({Repeater},
   	    {repeater_person()},
   	    begin
  -		packed_repeated_pb:decode_person(packed_repeated_pb:encode_person(Repeater)),
  -		true
  +		Decoded = packed_repeated_pb:decode_person(packed_repeated_pb:encode_person(Repeater)),
  +		compare_messages(Repeater,Decoded)
   	    end).
   
   special_words() ->
  
positive.code: 	     default(undefined, sint32()),
  	     default(undefined, sint64()),
  	     default(undefined, bool()),
  	     default(undefined, string()),
  	     default(undefined, binary())},
  	    begin
  		{empty,Real1,Float11,
  		 Int1,Int2,Int3,Int4,Int5,
  		 Int6,Int7,Int8,Int9,Int10,
  		 Val1,Str1,Bit1} = empty_pb:decode_empty(
  				     empty_pb:encode_empty({empty,
  							    Real1,Float1,
  							    Int1,Int2,Int3,Int4,Int5,
  							    Int6,Int7,Int8,Int9,Int10,
  							    Val1,Str1,Bit1})),
  		fuzzy_match(Float1,Float11,3)
  	    end).
  
  check_with_default(Expected,Result,undefined,Fun) ->
      Fun(Expected,Result);
  check_with_default(undefined,Result,Default,Fun) ->
      Fun(Default,Result);
  check_with_default(Expected,Result,_Default,Fun) ->
      Fun(Expected,Result).
  
  prop_protobuffs_has_default() ->
      ?FORALL({Real1, Float1, Int1,
  	     Int2, Int3, Int4,
  	     Int5, Int6, Int7,
  	     Int8, Int9, Int10,
  	     Val1, Str1
  	    },
  	    {default(undefined, real()),
  	     default(undefined, real()),
  	     default(undefined, sint32()),
  	     default(undefined, sint64()),
  	     default(undefined, uint32()),
  	     default(undefined, uint64()),
  	     default(undefined, sint32()),
  	     default(undefined, sint64()),
  	     default(undefined, uint32()),
  	     default(undefined, uint64()),
  	     default(undefined, sint32()),
  	     default(undefined, sint64()),
  	     default(undefined, bool()),
  	     default(undefined, string())},
  	    begin
  		{withdefault,Real11,Float11,
  		 Int11,Int12,Int13,Int14,Int15,Int16,
  		 Int17,Int18,Int19,Int110,
  		 Val11,Str11} = hasdefault_pb:decode_withdefault(
  				  hasdefault_pb:encode_withdefault(
  				    {withdefault,
  				     Real1,Float1,
  				     Int1,Int2,Int3,Int4,Int5,Int6,
  				     Int7,Int8,Int9,Int10,
  				     Val1,Str1})),
  		check_with_default(
  		  Real1,Real11,1.0,
  		  fun(Expected,Result) -> Expected == Result end), 
  		check_with_default(
  		  Float1,Float11,2.0,
  		  fun(Expected,Result) -> fuzzy_match(Expected,Result,3) end),
  		check_with_default(
  		  Int1,Int11,1,
  		  fun(Expected,Result) -> Expected == Result end),
  		check_with_default(
  		  Int2,Int12,2,
  		  fun(Expected,Result) -> Expected == Result end),
  		check_with_default(
  		  Int3,Int13,3,
  		  fun(Expected,Result) -> Expected == Result end),
  		check_with_default(
  		  Int4,Int14,4,
  		  fun(Expected,Result) -> Expected == Result end),
  		check_with_default(
  		  Int5,Int15,5,
  		  fun(Expected,Result) -> Expected == Result end),
  		check_with_default(
  		  Int6,Int16,6,
  		  fun(Expected,Result) -> Expected == Result end),
  		check_with_default(
  		  Int7,Int17,7,
  		  fun(Expected,Result) -> Expected == Result end),
  		check_with_default(
  		  Int8,Int18,8,
  		  fun(Expected,Result) -> Expected == Result end),
  		check_with_default(
  		  Int9,Int19,9,
  		  fun(Expected,Result) -> Expected == Result end),
  		check_with_default(
  		  Int10,Int110,10,
  		  fun(Expected,Result) -> Expected == Result end),
  		check_with_default(
  		  Val1,Val11,true,
  		  fun(Expected,Result) -> Expected == Result end),
  		check_with_default(
  		  Str1,Str11,"test",
  		  fun(Expected,Result) -> Expected == Result end)
  	    end).
  
  location() ->
  
negative.code: 	    end).
  
  prop_protobuffs_empty() ->
      ?FORALL({Empty},
  	    {{empty,default(undefined, real()),
  		    default(undefined, real()),
  		    default(undefined, sint32()),
  		    default(undefined, sint64()),
  		    default(undefined, uint32()),
  		    default(undefined, uint64()),
  		    default(undefined, sint32()),
  		    default(undefined, sint64()),
  		    default(undefined, uint32()),
  		    default(undefined, uint64()),
  		    default(undefined, sint32()),
  		    default(undefined, sint64()),
  		    default(undefined, bool()),
  		    default(undefined, string()),
  		    default(undefined, binary())}},
  	    begin
  		Decoded = empty_pb:decode_empty(empty_pb:encode_empty(Empty)),
  		compare_messages(Empty,Decoded)
  	    end).
  
  check_with_default(Expected,Result,undefined,Fun) ->
      Fun(Expected,Result);
  check_with_default(undefined,Result,Default,Fun) ->
      Fun(Default,Result);
  check_with_default(Expected,Result,_Default,Fun) ->
      Fun(Expected,Result).
  
  prop_protobuffs_has_default() ->
      ?FORALL({Withdefault},
  	    {{withdefault,default(undefined, real()),
  	     default(undefined, real()),
  	     default(undefined, sint32()),
  	     default(undefined, sint64()),
  