anchor.diff:    case_from_clauses(Ann, ClauseAsts).
   
   -spec case_from_clauses([term()], [cerl:c_clause()]) ->
  -  {[cerl:c_var()], cerl:cerl()}.
  +  {[cerl:c_var()], ast()}.
   case_from_clauses(Ann, [ClauseAst | _] = ClausesAst) ->
     Patterns = cerl:clause_pats(ClauseAst),
     Vars = [new_c_var(Ann) || _ <- lists:seq(0, length(Patterns) - 1)],
  
positive.code: %% ----- letrec -------
  
  -spec letrec_defs([ast()], [ast()], state()) ->
    {[{cerl:cerl(), cerl:cerl()}], state()}.
  letrec_defs(VarsExprs, FnsExprs, State0) ->
    {VarsAsts, State1} = pop_ast( lists:foldl(fun ast/2, State0, VarsExprs)
                                , length(VarsExprs)
  
negative.code: %% ----- Map -------
  
  %% cerl:c_map_pair_exact/2 doesn't exist in 18.3
  -spec c_map_pair_exact(ast(), ast()) -> cerl:c_map_pair().
  c_map_pair_exact(K, V) ->
    Exact = cerl:c_atom(exact),
    cerl:ann_c_map_pair([], Exact, K, V).
  