anchor.diff:  -spec parse_ns(clj_env:env(), 'clojerl.List':type()) -> clj_env:env().
   parse_ns(Env, List) ->
     Second = clj_core:second(List),
  -  case 'symbol?'(Second) of
  +  case clj_core:'symbol?'(Second) of
       true ->
         {_, NewEnv} = clj_env:find_or_create_ns(Env, Second),
         NewEnv;
  
positive.code: 
  -spec special_forms() -> #{'clojerl.Symbol':type() => fun() | undefined}.
  special_forms() ->
    #{
       symbol(<<"ns">>)       => fun parse_ns/2,
       symbol(<<"def">>)      => fun parse_def/2,
       symbol(<<"quote">>)    => fun parse_quote/2,
       symbol(<<"fn*">>)      => fun parse_fn/2,
       symbol(<<"do">>)       => fun parse_do/2,
       symbol(<<"if">>)       => fun parse_if/2,
       symbol(<<"let*">>)     => fun parse_let/2,
       symbol(<<"loop*">>)    => fun parse_loop/2,
  
       symbol(<<"recur">>)    => undefined,
       symbol(<<"case*">>)    => undefined,
       symbol(<<"letfn*">>)   => undefined,
       symbol(<<"var">>)      => undefined,
       symbol(<<"import*">>)  => undefined,
       symbol(<<"deftype*">>) => undefined,
       symbol(<<"reify*">>)   => undefined,
       symbol(<<"try">>)      => undefined,
       %% symbol(<<"monitor-enter">>),
       %% symbol(<<"monitor-exit">>),
       %% symbol(<<"new">>),
       %% symbol(<<"&">>),
       symbol(<<"throw">>)    => undefined,
       symbol(<<"catch">>)    => undefined,
       symbol(<<"finally">>)  => undefined
     }.
  
  -spec analyze_forms(clj_env:env(), [any()]) -> clj_env:env().
  
negative.code: -spec parse_def(clj_env:env(), 'clojerl.List':type()) -> clj_env:env().
  parse_def(Env, List) ->
    Docstring = validate_def_args(List),
    VarSymbol = clj_core:second(List),
    case lookup_var(VarSymbol, Env) of
      {undefined, _} ->
        throw(<<"Can't refer to qualified var that doesn't exist">>);
      {Var, Env1} ->
        VarNsSym = 'clojerl.Var':namespace(Var),
        case {clj_env:current_ns(Env1), clj_core:namespace(VarSymbol)} of
          {VarNsSym, _} -> ok;
          {_ , undefined} -> ok;
          _ -> throw(<<"Can't create defs outside of current ns">>)
        end,
  
        Meta = clj_core:meta(VarSymbol),
        DynamicKeyword = clj_core:keyword(<<"dynamic">>),
        IsDynamic = clj_core:boolean(clj_core:get(Meta, DynamicKeyword)),
        Var1 = 'clojerl.Var':dynamic(Var, IsDynamic),
  
        %% TODO: show warning when not dynamic but name suggests otherwise.
  