anchor.diff:        throw(<<"Can't refer to qualified var that doesn't exist">>);
       {Var, Env1} ->
         VarNsSym = 'clojerl.Var':namespace(Var),
  +      CurrentNs = clj_env:current_ns(Env1),
         clj_utils:throw_when( clj_core:namespace(VarSymbol) =/= undefined
  -                            andalso clj_env:current_ns(Env1) =/= VarNsSym
  +                            andalso not clj_core:equiv(CurrentNs, VarNsSym)
                             , <<"Can't create defs outside of current ns">>
                             ),
   
  
positive.code: analyze_let(Env, Form) ->
    validate_bindings(Form),
    Op = clj_core:first(Form),
    IsLoop = clj_core:symbol(<<"loop*">>) == Op,
  
    PairUp = fun
               PairUp([], Pairs) ->
  
negative.code:     true ->
        NsSym = case clj_core:namespace(VarSymbol) of
                  undefined -> undefined;
                  NsStr     -> clj_core:symbol(NsStr)
                end,
  
        NameSym   = clj_core:symbol(clj_core:name(VarSymbol)),
        InternFun = fun(Ns) -> clj_namespace:intern(Ns, NameSym) end,
  
        CurrentNs = clj_env:current_ns(Env),
        case clj_core:equiv(CurrentNs, NsSym) of
          Equal when Equal; NsSym == undefined ->
            NewEnv = clj_env:update_ns(Env, CurrentNs, InternFun),
            lookup_var(VarSymbol, false, NewEnv);
          false ->
            lookup_var(VarSymbol, false, Env)
        end
    end;
  