anchor.diff:  
   -spec parse_loop(clj_env:env(), 'clojerl.List':type()) -> clj_env:env().
   parse_loop(Env, Form) ->
  -  LoopId    = clj_core:gensym(<<"loop_">>),
  -  OldLoopId = clj_env:get(Env, loop_id),
  +  OldLoopId     = clj_env:get(Env, loop_id),
  +  OldLoopLocals = clj_env:get(Env, loop_locals),
  +  LoopId        = clj_core:gensym(<<"loop_">>),
  +
     Env1 = clj_env:put(Env, loop_id, {loop, LoopId}),
   
     {LoopExprExtra, Env2} = analyze_let(Env1, Form),
  
positive.code: 
    FixedArity = case IsVariadic of true -> Arity - 1; false -> Arity end,
  
    OldLoopId = clj_env:get(Env1, loop_id),
  
    {BodyExpr, Env2} =
      case AnalyzeBody of
        true ->
          BodyEnv = clj_env:put_locals(Env1, ParamsExprs),
          BodyEnv1 = clj_env:context(BodyEnv, return),
          BodyEnv2 = clj_env:put(BodyEnv1, loop_id, LoopId),
          BodyEnv3 = clj_env:put(BodyEnv2, loop_locals, length(ParamsExprs)),
          Body = clj_core:rest(List),
          clj_env:pop_expr(analyze_body(BodyEnv3, Body));
        false ->
          {undefined, Env1}
  
negative.code:                         LoopExprExtra),
  
    Env3 = clj_env:put(Env2, loop_id, OldLoopId),
    Env4 = clj_env:put(Env3, loop_locals, OldLoopLocals),
    clj_env:push_expr(Env4, LoopExpr).
  
  -spec analyze_let(clj_env:env(), 'clojerl.List':type()) -> clj_env:env().
  analyze_let(Env, Form) ->
  