anchor.diff:  encode(false) -> "false";
   encode(null) -> "null";
   encode(undefined) -> "null";
  -encode(B) when is_binary(B) -> encode_string(binary_to_list(B));
  +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) ->
  
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 an Erlang string to JSON.
  %% Accumulate strings in reverse.
  
  encode_string(B) when is_binary(B) -> encode_string(binary_to_list(B));
  encode_string(S) -> encode_string(S, [$"]).  
  
  encode_string([], Acc) -> lists:reverse([$" | Acc]); 
  encode_string([C | Cs], Acc) ->
      case C of
  	$" -> encode_string(Cs, [$", $\\ | Acc]);
  