anchor.diff:     ;
   
   cast_expression
  -   : data_type_sub LPAREN expression (COMMA expression)* RPAREN
  -   ;
  -
  -data_type_sub
  +   : DATA_TYPE_SUB LPAREN expression (COMMA expression)* RPAREN
  +   ;
  +
  +data_type_name
      : DATA_TYPE_SUB
  -   ;
  -
  -data_type_name
  -   : data_type_sub
      | identifier_name
      ;
  
positive.code:    | event_body
     ;
  
  release_information
     : RELEASE NUMBER SEMI
     ;
  
  window_property
     : (attribute_name array_decl_sub? LPAREN window_property_attributes_sub? RPAREN)
     ;
  
  window_property_attributes_sub
     : window_property_attribute_sub +
     ;
  
  window_property_attribute_sub
     : ((NULL | numeric_atom | DQUOTED_STRING | DATE | TIME) COMMA?)
     | (attribute_name eq = EQ (attribute_value array_decl_sub? | LPAREN window_property_attributes_sub RPAREN)) COMMA?
     ;
  
  attribute_name
  
negative.code:    | REF
     | NULL
     | OPEN
     | LPAREN LPAREN (expression | DATA_TYPE_SUB) (COMMA (expression | DATA_TYPE_SUB))? RPAREN (COMMA LPAREN (expression | DATA_TYPE_SUB) (COMMA (expression | DATA_TYPE_SUB))? RPAREN)* RPAREN
     | DATA_TYPE_SUB (LPAREN NUMBER RPAREN)?
     ;
  
  forward_decl
     : FORWARD (datatype_decl | variable_decl)+ END FORWARD
     ;
  
  datatype_decl
     : scope_modif? TYPE identifier_name FROM (identifier_name TICK)? data_type_name (WITHIN identifier_name)? AUTOINSTANTIATE? (DESCRIPTOR DQUOTED_STRING EQ DQUOTED_STRING)?
       (variable_decl | event_forward_decl)*
       END TYPE
     ;
  
  type_variables_decl
  