anchor.diff:      ;
   
   boolean_literal
  -    :   { "true".equals(input.LT(1).getText()) }? TRUE
  -    |   { "false".equals(input.LT(1).getText()) }? FALSE
  +    :   { "true".equals(_input.LT(1).getText()) }? TRUE
  +    |   { "false".equals(_input.LT(1).getText()) }? FALSE
       ;
   
   selector
  
positive.code:     ;
  
  else_statement
      :   { "else".equals(input.LT(1).getText()) }? ELSE java_statement
      ;
  
  switch_block_statement_groups
  
negative.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
  