anchor.diff:                      }
                       || {var, _, FieldName} = FieldAst <- AllFieldsAsts
                     ],
  -  TupleItemsAst = [ {atom,  0, ?TYPE}
  -                  , {atom,  0, Typename}
  -                  , {map,   0, MapAssocs}
  -                  , Info
  -                  ],
  -  {tuple, 0, TupleItemsAst}.
  +  MapAst        = {map, 0, MapAssocsAsts},
  +  type_tuple_ast(Typename, MapAst, InfoAst).
  +
  +-spec type_tuple_ast(atom(), ast(), ast()) -> ast().
  +type_tuple_ast(Typename, DataAst, InfoAst) ->
  +  { tuple
  +  , 0
  +  , [ {atom,  0, ?TYPE}
  +    , {atom,  0, Typename}
  +    , DataAst
  +    , InfoAst
  +    ]
  +  }.
   
   -spec function_form(atom(), [ast()]) -> ast().
   function_form(Name, [Clause | _] = Clauses) when is_atom(Name) ->
  
positive.code: do_list_ast([H | Hs], Tail) ->
    {cons, 0, H, do_list_ast(Hs, Tail)}.
  
  -spec expand_first_argument(ast(), ast()) -> ast().
  expand_first_argument( {function, _, _, _, [ClauseAst]} = Function
                       , TypeTupleAst
  
negative.code: %%      to build Clojerl data types.
  -spec type_tuple(atom(), [ast()], [ast()], create | match) -> ast().
  type_tuple(Typename, AllFieldsAsts, HiddenFieldsAsts, TupleType) ->
    {MapFieldType, InfoAst} =
      case TupleType of
        create ->
          {map_field_assoc, {atom, 0, undefined}};
  