anchor.diff:                                   ),
           FunAst   = cerl:ann_c_fun(Ann, [ArgsVar], LetAst),
   
  -        push_ast(FunAst, StateAcc2)
  +        push_ast({FNameAst, FunAst}, StateAcc2)
       end,
   
  -  {FnsAsts, State2} = pop_ast( lists:foldl(FoldFun, State1, FnsExprs)
  -                             , length(FnsExprs)
  -                             ),
  -
  -  {lists:zip(FNamesAsts, FnsAsts), State2}.
  +  PairsExprs = lists:zip(FNamesAsts, FnsExprs),
  +
  +  pop_ast( lists:foldl(FoldFun, State1, PairsExprs)
  +         , length(PairsExprs)
  +         ).
   
   %% ----- Binary literal -------
   
  
positive.code:                ],
  
    FoldFun =
      fun(#{op := fn} = FnExpr, StateAcc) ->
          #{ methods := Methods
           , env     := Env
           } = FnExpr,
  
negative.code: 
          %% Create the clause that will handle the cases when the arguments
          %% provided are wrong or there is no match in the clauses
          CatchAllVar = new_c_var(Ann),
          Length      = call_mfa(erlang, length, [CatchAllVar], Ann),
          FName0      = cerl:fname_id(FNameAst),
          FName1      = cerl:abstract(atom_to_binary(FName0, utf8)),
          ErrorCtror  = call_mfa( 'clojerl.ArityError'
                                , ?CONSTRUCTOR
                                , [Length, FName1]
                                , Ann),
          ThrowErr    = call_mfa(erlang, error, [ErrorCtror], Ann),
          CatchAll    = cerl:ann_c_clause( Ann
                                         , [CatchAllVar]
                                         , cerl:abstract(true)
                                         , ThrowErr
                                         ),
  
          ArgsVar  = new_c_var(Ann),
          CaseAst  = cerl:ann_c_case(Ann, ArgsVar, ClausesAsts ++ [CatchAll]),
  