anchor.diff:                     }
                  end,
     {FnNamesExprs, Env1} = lists:foldr(BindingFun, {[], Env}, FnNames),
  -  {FnsExprs, Env2}     = clj_env:last_exprs( length(FnNames)
  -                                           , analyze_forms(FnForms, Env1)
  +  Env2                 = clj_env:push(#{context => expr}, Env1),
  +  {FnsExprs, Env3}     = clj_env:last_exprs( length(FnNames)
  +                                           , analyze_forms(FnForms, Env2)
                                              ),
   
  -  {BodyExpr, Env3} = clj_env:pop_expr(analyze_body(Body, Env2)),
  +  {BodyExpr, Env4} = clj_env:pop_expr(analyze_body(Body, Env3)),
   
     LetFnExpr = #{ op   => letfn
                  , env  => Env
  
positive.code: 
    {InvokeExpr1, Env5} = add_type_tag(Form, InvokeExpr0, Env4),
  
    clj_env:push_expr(InvokeExpr1, Env5).
  
  -spec signature_tag( integer()
                     , expr() | ?NO_TAG
  
negative.code:                          , args => [TargetExpr | ArgsExprs]
                           },
  
        clj_env:push_expr(InvokeExpr, Env5)
    end.
  
  %% @doc Adds the type tag of the provided form if it is other than ?NO_TAG
  