anchor.diff:  
   %% @spec encoder([encoder_option()]) -> function()
   %% @doc Create an encoder/1 with the given options.
  +%% @type encoder_option() = handler_option() | utf8_option()
  +%% @type utf8_option() = boolean(). Emit unicode as utf8 (default - false)
   encoder(Options) ->
       State = parse_encoder_options(Options, #encoder{}),
       fun (O) -> json_encode(O, State) end.
  
positive.code: parse_encoder_options([], State) ->
      State;
  parse_encoder_options([{handler, Handler} | Rest], State) ->
      parse_encoder_options(Rest, State#encoder{handler=Handler}).
  
  parse_decoder_options([], State) ->
      State;
  
negative.code: %% @type json_term() = json_string() | json_number() | json_array() |
  %%                     json_object()
  
  -record(encoder, {handler=null,
                    utf8=false}).
  
  -record(decoder, {object_hook=null,
                    offset=0,
  