anchor.diff:  map_key -> expr : '$1'.
   
   
  -%% N.B. This is called from expr_700.
  +%% N.B. This is called from expr.
   %% N.B. Field names are returned as the complete object, even if they are
   %% always atoms for the moment, this might change in the future.
   
  
positive.code: top_types -> top_type                     : ['$1'].
  top_types -> top_type ',' top_types       : ['$1'|'$3'].
  
  top_type -> var '::' top_type_100         : {ann_type, ?anno('$1'), ['$1','$3']}.
  top_type -> top_type_100                  : '$1'.
  
  top_type_100 -> type_200                  : '$1'.
  top_type_100 -> type_200 '|' top_type_100 : lift_unions('$1','$3').
  
  type_200 -> type_300 '..' type_300        : {type, ?anno('$1'), range,
                                               ['$1', '$3']}.
  type_200 -> type_300                      : '$1'.
  
  type_300 -> type_300 add_op type_400      : ?mkop2('$1', '$2', '$3').
  type_300 -> type_400                      : '$1'.
  
  type_400 -> type_400 mult_op type_500     : ?mkop2('$1', '$2', '$3').
  type_400 -> type_500                      : '$1'.
  
  type_500 -> prefix_op type                : ?mkop1('$1', '$2').
  type_500 -> type                          : '$1'.
  
  type -> '(' top_type ')'                  : '$2'.
  type -> var                               : '$1'.
  type -> atom                              : '$1'.
  
negative.code: record_field -> var '=' expr : {record_field,?anno('$1'),'$1','$3'}.
  record_field -> atom '=' expr : {record_field,?anno('$1'),'$1','$3'}.
  
  %% N.B. This is called from expr.
  
  function_call -> expr_remote argument_list :
  	{call,?anno('$1'),'$1',element(1, '$2')}.
  
  
  