anchor.diff:    cerl:ann_c_clause([compiler_generated | Ann], [VarAst], FailAst).
   
   -spec clause({clj_analyzer:expr(), clj_analyzer:expr()}, state()) ->
  -  cerl:cerl().
  +  ast().
   clause({PatternExpr, BodyExpr}, StateAcc) ->
     #{ env   := EnvPattern
      , guard := GuardExpr
  
positive.code: %% @doc Builds a tuple abstract form tagged with atom ?TYPE which is used
  %%      to build Clojerl data types.
  -spec type_tuple( atom()
                  , [cerl:cerl()]
                  , [cerl:cerl()]
                  , [cerl:cerl()]
                  , create | match
                  ) ->
    cerl:cerl().
  type_tuple(Typename, Ann, AllFieldsAsts, HiddenFieldsAsts, TupleType) ->
    {MapFieldType, InfoAst} = case TupleType of
                                create -> {assoc, cerl:c_atom(?NIL)};
  
negative.code: %% ----- letrec -------
  
  -spec letrec_defs([ast()], [ast()], state()) ->
    {[{ast(), ast()}], state()}.
  letrec_defs(VarsExprs, FnsExprs, State0) ->
    {VarsAsts, State1} = pop_ast( lists:foldl(fun ast/2, State0, VarsExprs)
                                , length(VarsExprs)
  