anchor.diff:  
   package_def -> package name ';':            {package, '$2'}.
   
  -name -> '.' identifiers:                    concat_dot_identifiers('$1').
  -name -> identifiers:                        concat_identifiers('$1').
  -
  -identifiers -> identifier '.' identifiers:      [identifier_name('$1') | '$3'].
  +name -> '.' identifiers:                    ['.' | '$2'].
  +name -> identifiers:                        '$1'.
  +
  +identifiers -> identifier '.' identifiers:      [identifier_name('$1'), '.'
  +                                                 | '$3'].
   identifiers -> identifier:                      [identifier_name('$1')].
   
   option_def -> option name '=' constant:  {option, '$2', '$4'}.
  
positive.code:           ]).
  
  parses_dotted_references_test() ->
      {ok, [{{msg,'Msg3'}, [#field{name=y, type={ref,'Msg.Msg2'}}]}]} =
          parse_lines(
            ["message Msg3 {",
             "  repeated Msg.Msg2 y=1;",
  
negative.code: 
  literal_value({_TokenType, _Line, Value}) -> Value.
  
  parses_simple_msg_test() ->
      {ok, [{{msg,'Msg'}, [#field{name=x, type=uint32, fnum=1,
                                  occurrence=optional, opts=[]}]}]} =
  