anchor.diff:          C when C >= 0, C < $\s ->
               % Control characters must be unicode-encoded.
               Hex = lists:flatten(io_lib:format("~4.16.0b", [C])),
  -            encode_string(Cs, lists:reverse(Hex) ++ "u\\" ++ Acc); 		% "
  +            encode_string(Cs, lists:reverse(Hex) ++ "u\\" ++ Acc); % "
           C when C =< 16#FFFF -> encode_string(Cs, [C | Acc]);
           _ -> exit({json_encode, {bad_char, C}})
       end.
  
positive.code: encode_object({struct, _Props} = Obj) ->
      M = obj_fold(fun({Key, Value}, Acc) ->
  	S = case Key of
  	    L when is_list(L) -> encode_string(L);
  	    A when is_atom(A) -> encode_string(atom_to_list(A));
              _ -> exit({json_encode, {bad_key, Key}})
  
negative.code: encode(false) -> "false";
  encode(null) -> "null";
  encode(undefined) -> "null";
  encode(B) when is_binary(B) -> encode_string(B);
  encode(I) when is_integer(I) -> integer_to_list(I);
  encode(F) when is_float(F) -> io_lib:format("~g", [F]);
  encode(L) when is_list(L) ->
  