anchor.diff:  // Control structures.
   
   condition
  -    : expression | existsCondition | isCondition
  -    ;
  -
  -// Backtracking here is needed for exactly the same reason as localOrStatement.
  +    : expression | existsCondition | nonemptyCondition | isCondition
  +    ;
  +
   existsCondition
  -    : ('exists' | 'nonempty') ( (variableStart) => variable specifier | expression )
  +    : 'exists' controlVariableOrExpression
  +    ;
  +    
  +nonemptyCondition
  +    : 'nonempty' controlVariableOrExpression
       ;
       
   isCondition
  
positive.code:     :   ','
      ;
  
  DOT
      :   '.'
      ;
  
  ELLIPSIS
      :   '...'
      ;
  
  EQ
      :   '='
      ;
  
negative.code: 
  //special rule for syntactic predicate
  variableStart
      : variable ('in'|'=')
      ;
  
  // Lexer
  
  fragment
  Digits
      : ('0'..'9')+
      ;
  
  fragment 
  Exponent    
      :   ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ 
      ;
  
  fragment FLOATLITERAL :;
  fragment ELLIPSIS :;
  fragment RANGE :;
  fragment DOT :;
  NATURALLITERAL
      : Digits 
        ( { input.LA(2) != '.' }? => '.' Digits Exponent? { $type = FLOATLITERAL; } )?
      | '.' ( '..' { $type = ELLIPSIS; } | '.'  { $type = RANGE; } | { $type = DOT; } )
      ;
  
  CHARLITERAL
  