anchor.diff:          true ->
             syntax_quote_coll(Form, undefined, Env)
         end;
  -    IsLiteral -> Form;
  -    true      -> clj_core:list([QuoteSymbol, Form])
  +    IsLiteral -> {Form, Env};
  +    true      -> {clj_core:list([QuoteSymbol, Form]), Env}
     end.
   
   flatten_map(Map) ->
  
positive.code: 
    QuoteSymbol = clj_core:symbol(<<"quote">>),
    if
      IsSpecial    -> clj_core:list([QuoteSymbol, Form]);
      IsSymbol     -> syntax_quote_symbol(Form, Env);
      IsUnquote    -> clj_core:second(Form);
      IsUnquoteSpl -> throw(<<"unquote-splice not in list">>);
      IsColl ->
        IsMap = clj_core:'map?'(Form),
  
negative.code:   erlang:put(gensym_env, #{}),
    %% TODO: change syntax_quote/2 so that if it changes the env
    %%       (because of find var) we keep the changes.
    {QuotedForm, Env1}      = syntax_quote(Form, Env),
    {NewFormWithMeta, Env2} = add_meta(Form, Env1, QuotedForm),
    erlang:erase(gensym_env),
    push_form(NewFormWithMeta, NewState#{env => Env2}).
  
  syntax_quote(Form, Env) ->
    IsSpecial    = clj_analyzer:is_special(Form),
  