anchor.diff:  // Need to handle the conflicts of BQL keywords and common Java method
   // names supported by BQL.
   java_method
  -    :   { "contains".equals(input.LT(1).getText()) }? CONTAINS
  +    :   { "contains".equals(_input.LT(1).getText()) }? CONTAINS
       |   IDENT
       ;
   
  
positive.code:     ;
  
  primitive_type
      :   { "boolean".equals(input.LT(1).getText()) }? BOOLEAN
      |   'char'
      |   { "byte".equals(input.LT(1).getText()) }? BYTE
      |   'short'
      |   { "int".equals(input.LT(1).getText()) }? INT
      |   { "long".equals(input.LT(1).getText()) }? LONG
      |   'float'
      |   { "double".equals(input.LT(1).getText()) }? DOUBLE
      ;
  
  boxed_type
      :   { "Boolean".equals(input.LT(1).getText()) }? BOOLEAN
      |   'Character'
      |   { "Byte".equals(input.LT(1).getText()) }? BYTE
      |   'Short'
      |   'Integer'
      |   { "Long".equals(input.LT(1).getText()) }? LONG
      |   'Float'
      |   { "Double".equals(input.LT(1).getText()) }? DOUBLE
      ;
  
  limited_type
  
negative.code:     ;
  
  boolean_literal
      :   { "true".equals(_input.LT(1).getText()) }? TRUE
      |   { "false".equals(_input.LT(1).getText()) }? FALSE
      ;
  
  selector
  