anchor.diff:      ;
   
   multiplicativeExpression
  -    : asExpression (multiplicativeOperator NL* asExpression)*
  -    ;
  -
  -asExpression
  -    : prefixUnaryExpression asExpressionTail?
  -    ;
  -
  -asExpressionTail
  -    : NL* asOperator NL* type asExpressionTail?
  +    : typeRHS (multiplicativeOperation NL* typeRHS)*
  +    ;
  +
  +typeRHS
  +    : prefixUnaryExpression (NL* typeOperation prefixUnaryExpression)*
       ;
   
   prefixUnaryExpression
  -    : prefixUnaryOperator* postfixUnaryExpression
  -    | annotations* postfixUnaryExpression
  +    : prefixUnaryOperation* postfixUnaryExpression
       ;
   
   postfixUnaryExpression
  -    : assignableExpression
  -    | callExpression
  -    | labeledExpression
  -    | dotQualifiedExpression
  -    | assignableExpression postfixUnaryOperator*
  -    | LPAREN callableReference RPAREN postfixUnaryOperator+
  -    | callableReference
  -    ;
  -
  -callExpression
  -    : assignableExpression typeArguments? valueArguments? annotatedLambda*
  -    ;
  -
  -labeledExpression
  -    : labelDefinition postfixUnaryExpression
  -    ;
  -
  -dotQualifiedExpression
  -    : assignableExpression (NL* memberAccessOperator postfixUnaryExpression)+
  -    ;
  -
  -assignableExpression
  -    : primaryExpression
  -    | indexingExpression
  -    ;
  -
  -indexingExpression
  -    : identifier arrayAccess+
  +    : (atomicExpression | callableReference) postfixUnaryOperation*
  +    ;
  +
  +atomicExpression
  +    : parenthesizedExpression
  +    | literalConstant
  +    | functionLiteral
  +    | thisExpression // THIS labelReference?
  +    | superExpression // SUPER (LANGLE type RANGLE)? labelReference?
  +    | conditionalExpression // ifExpression, whenExpression
  +    | tryExpression
  +    | objectLiteral
  +    | jumpExpression
  +    | loopExpression
  +    | collectionLiteral
  +    | simpleIdentifier
  +    ;
  +
  +parenthesizedExpression
  +    : LPAREN expression RPAREN
       ;
   
   callSuffix
  
positive.code:     ;
  
  packageHeader
      : (PACKAGE identifier semi?)?
      ;
  
  importList
  
negative.code:     | propertyDeclaration
      | anonymousInitializer
      | secondaryConstructor
      | typeAlias) anysemi*
      ;
  
  anonymousInitializer
  