anchor.diff:  do_list_ast([H | Hs], Tail) ->
     {cons, 0, H, do_list_ast(Hs, Tail)}.
   
  +%% @doc Replaces the first argument of a function with a pattern match.
  +%%
  +%% This function is used for deftype methods so that the fields are available
  +%% in the scope of the body of each method.
   -spec expand_first_argument(ast(), ast()) -> ast().
   expand_first_argument( {function, _, _, _, [ClauseAst]} = Function
                        , TypeTupleAst
  
positive.code:   AccessorName = field_fun_name(FieldName),
    function_form(AccessorName, ClausesAsts).
  
  -spec field_fun_name(atom()) -> atom().
  field_fun_name(FieldName) when is_atom(FieldName) ->
    list_to_atom("-" ++ atom_to_list(FieldName)).
  
negative.code:         {map_field_exact, {var, 0, '_'}}
      end,
  
    MapAssocsAsts = [ { MapFieldType
                      , 0
                      , {atom, 0, FieldName}
                      , case lists:member(FieldAst, HiddenFieldsAsts) of
  