anchor.diff: +%% @doc Clojerl emitter.
  +%%
  +%% Emits Core Erlang from the expressions it receives from the
  +%% analyzer.
  +%%
  +%% This is the third and last step in the compilation process.
  +%%
  +%% The generated Core Erlang modules are maintained and updated in
  +%% memory through the usage of `clj_module'.
   -module(clj_emitter).
   
   -include("clojerl.hrl").
  
positive.code: to_atom(Symbol) ->
    binary_to_atom('clojerl.Symbol':name(Symbol), utf8).
  
  -spec new_c_var(cerl:ann()) -> cerl:c_var().
  new_c_var(Ann) ->
    N = case erlang:get(local_var_counter) of
  
negative.code:   Asts  = lists:reverse(maps:get(asts, State)),
    {Asts, Env}.
  
  %%------------------------------------------------------------------------------
  %% Internal functions
  %%------------------------------------------------------------------------------
  
  -spec initial_state() -> state().
  initial_state() ->
    #{ asts                => []
     , lexical_renames     => clj_scope:new()
     , force_remote_invoke => false
     }.
  
  -spec ast(expr(), state()) -> state().
  ast(#{op := constant, form := Form, env := Env}, State) when is_binary(Form) ->
  