anchor.diff:  }
       {boolean isDecimal=false; Token t=null;}
       :
  -/*OBS*
  -        '.' {_ttype = DOT;}
  -        (
  -            (('0'..'9')+ (EXPONENT)? (f1:FLOAT_SUFFIX {t=f1;})?
  -            {
  -                if (t != null && t.getText().toUpperCase().indexOf('F')>=0) {
  -                    _ttype = NUM_FLOAT;
  -                }
  -                else {
  -                    _ttype = NUM_DOUBLE; // assume double
  -                }
  -            })
  -        |
  -            // JDK 1.5 token for variable length arguments
  -            (".." {_ttype = TRIPLE_DOT;})
  -        )?
  -    |
  -*OBS*/
           // TODO:  This complex pattern seems wrong.  Verify or fix.
           (   '0' {isDecimal = true;} // special case for just '0'
               (   // hex digits
  
positive.code:             #importStatement = #(create(IMPORT,"import",first,LT(1)),an,is);}
      ;
  
  // TODO REMOVE
  // A type definition is either a class, interface, enum or annotation with possible additional semis.
  //typeDefinition
  //      options {defaultErrorHandler = true;}
  //      :       m:modifiers!
  //              typeDefinitionInternal[#m]
  //      |       SEMI!
  //      ;
  
  // Added this production, even though 'typeDefinition' seems to be obsolete,
  // as this is referenced by many other parts of the grammar.
  // Protected type definitions production for reuse in other productions
  protected typeDefinitionInternal[AST mods]
      :   cd:classDefinition[#mods]       // inner class
  
negative.code:         dd:declaration
          {#classField = #dd;}
      |
          // type definition
          (typeDefinitionStart)=>
          mods:modifiersOpt!
          (   td:typeDefinitionInternal[#mods]
                  {#classField = #td;}
  