anchor.diff:  -spec constructor_function(atom(), erl_anno:anno(), [ast()], [ast()]) -> ast().
   constructor_function(Typename, Anno, AllFieldsAsts, HiddenFieldsAsts) ->
     FieldsAsts  = AllFieldsAsts -- HiddenFieldsAsts,
  -  TupleAst    = type_tuple(Typename, AllFieldsAsts, HiddenFieldsAsts, create),
  +  TupleAst    = type_tuple(Typename, Anno, AllFieldsAsts, HiddenFieldsAsts, create),
     function_form(?CONSTRUCTOR, Anno, FieldsAsts, TupleAst).
   
   %% @doc Builds an accessor function for the specified type and field.
  
positive.code: 
    %% Expand the first argument to pattern match on all fields so that they are
    %% available in the functions scope.
    TypeTupleAst = type_tuple(Module, AllFieldsAsts, [], match),
    MethodsAsts1 = lists:map( fun(F) ->
                                  expand_first_argument(F, TypeTupleAst)
                              end
  
negative.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, Anno, AllFieldsAsts, HiddenFieldsAsts, TupleType) ->
    {MapFieldType, InfoAst} = case TupleType of
                                create -> {assoc, cerl:c_atom(?NIL)};
                                match  -> {exact, new_c_var([])}
  