anchor.diff:  %% @see data/1
   %% @see type/1
   
  --spec tree(atom(), term()) -> #tree{}.
  +-spec tree(atom(), term()) -> tree().
   
   tree(Type, Data) ->
       #tree{type = Type, data = Data}.
  
positive.code: -record(tree, {type           :: atom(),
  	       attr = #attr{} :: #attr{},
  	       data           :: term()}).
  
  %% `wrapper' records are used for attaching new-form node information to
  %% `erl_parse' trees.
  
negative.code: -record(wrapper, {type           :: atom(),
  		  attr = #attr{} :: #attr{},
  		  tree           :: erl_parse()}).
  -type wrapper() :: #wrapper{}.
  
  %% =====================================================================
  
  -type syntaxTree() :: tree() | wrapper() | erl_parse().
  
  -type erl_parse() :: erl_parse:abstract_clause()
                     | erl_parse:abstract_expr()
                     | erl_parse:abstract_form()
                     | erl_parse:abstract_type()
                     | erl_parse:form_info()
                     | erl_parse:af_binelement(term())
                     | erl_parse:af_generator()
                     | erl_parse:af_remote_function().
  
  %% The representation built by the Erlang standard library parser
  %% `erl_parse'. This is a subset of the {@link syntaxTree()} type.
  