anchor.diff:     ;
   
   lvalue_sub
  -   : (atom_sub (DOT identifier_name_ex))
  -   | (atom_sub_call1)
  -   | (atom_sub_array1)
  -   | (atom_sub_ref1)
  -   | (atom_sub_member1)
  -   ;
  -
  -return_sub
  +   : atom_sub DOT identifier_name_ex
  +   | atom_sub_call1
  +   | atom_sub_array1
  +   | atom_sub_ref1
  +   | atom_sub_member1
  +   ;
  +
  +return_statement
      : RETURN expression?
      ;
   
  -return_statement
  -   : return_sub
  -   ;
  -
   function_call_expression_sub
  -   : (atom_sub (DOT identifier_name_ex))
  +   : atom_sub DOT identifier_name_ex
      | atom_sub_call1
      ;
   
   function_virtual_call_expression_sub
  -   : identifier_name DOT DYNAMIC (EVENT)? function_call_expression_sub
  -   | identifier_name DOT EVENT DYNAMIC function_call_expression_sub
  +   : identifier_name DOT (DYNAMIC EVENT? | EVENT DYNAMIC) function_call_expression_sub
      ;
   
   open_call_sub
  
positive.code:    : TRY statement* (CATCH LPAREN variable_decl_sub RPAREN statement*)* (FINALLY statement*)? END TRY
     ;
  
  throw_stat_sub
     : THROW expression
     ;
  
  throw_stat
     : throw_stat_sub
     ;
  
  identifier
  
negative.code:    ;
  
  attribute_value
     : atom_sub_call1
     | atom_sub_member1
     | MINUS? numeric_atom
     | boolean_atom
     | ENUM
     | DQUOTED_STRING
  