anchor.diff:      :   ','
       ;
   
  -DOT
  -    :   '.'
  -    ;
  -
  -ELLIPSIS
  -    :   '...'
  -    ;
  -
   EQ
       :   '='
       ;
  
positive.code: 
  ENTRY
      :   '->'
      ;
  
  RANGE
      :   '..'
      ;
      
  COMPARE
  
negative.code:     : expression | existsCondition | nonemptyCondition | isCondition
      ;
  
  existsCondition
      : 'exists' controlVariableOrExpression
      -> ^(EXISTS_EXPR controlVariableOrExpression)
      ;
      
  nonemptyCondition
      : 'nonempty' controlVariableOrExpression
      -> ^(NONEMPTY_EXPR controlVariableOrExpression)
      ;
  
  isCondition
      : 'is' type ( (memberName '=') => memberName specifier | expression )
      -> ^(IS_EXPR type memberName? specifier? expression?)
  