anchor.diff:        ('>'|'<'|','|'...')
       ;
   
  -elementSelectionOperator
  -    : '?[' | '['
  -    ;
  -
  -elementsSpec
  +indexOrIndexRange
       : l=index
       (
         -> ^(ELEMENT $l)
  
positive.code:     | parExpression
      ;
  
  lambda
      : /*'function'*/ parameters functionalArgumentBody
      -> ^(LAMBDA parameters functionalArgumentBody)
      ;
  
  memberSelectionOperator
      : '.' | '?.' | '[].' 
      ;
  
  memberReference
      : memberName ((typeArgumentsStart) => typeArguments)? 
      ;
  
  typeReference
      : typeName ((typeArgumentsStart) => typeArguments)?
      ;
  
  //special rule for syntactic predicate so
  //that qualified type names are consumed
  //greedily into a single TYPE_REF node
  typeInExpressionStart
      : '.' typeName
      ;
  
  //special rule for syntactic predicate to 
  
negative.code:     | INCREMENT_OP -> ^(POSTFIX_INCREMENT_OP[$INCREMENT_OP])
      ;
  
  base 
      : nonstringLiteral
      | stringExpression
  