anchor.diff:  msg_elems -> ';' msg_elems:             '$2'.
   msg_elems -> '$empty':                  [].
   
  -msg_elem -> cardinality type identifier '=' dec_lit ';':
  +msg_elem -> cardinality type fidentifier '=' dec_lit ';':
                                           #field{occurrence='$1',
                                                  type='$2',
                                                  name=identifier_name('$3'),
                                                  fnum=literal_value('$5'),
                                                  opts=[]}.
  -msg_elem -> cardinality type identifier '=' dec_lit '[' opt_field_opts ']' ';':
  +msg_elem -> cardinality type fidentifier '=' dec_lit '[' opt_field_opts ']' ';':
                                           #field{occurrence='$1',
                                                  type='$2',
                                                  name=identifier_name('$3'),
  
positive.code: msg_elem -> message_def:                '$1'.
  msg_elem -> enum_def:                   '$1'.
  msg_elem -> extensions_def:             {extensions,lists:sort('$1')}.
  
  opt_field_opts -> field_opts:           '$1'.
  opt_field_opts -> '$empty':             [].
  
negative.code: -export([fetch_imports/1]).
  
  identifier_name({identifier, _Line, Name}) -> list_to_atom(Name).
  
  kw_to_identifier({Kw, Line}) ->
      {identifier, Line, atom_to_list(Kw)}.
  
  literal_value({_TokenType, _Line, Value}) -> Value.
  
  