<s> package org . eclipse . jdt . internal . core . util ; import org . eclipse . jdt . internal . core . JavaElement ; public class MementoTokenizer { private static final String COUNT = Character . toString ( JavaElement . JEM_COUNT ) ; private static final String JAVAPROJECT = Character . toString ( JavaElement . JEM_JAVAPROJECT ) ; private static final String PACKAGEFRAGMENTROOT = Character . toString ( JavaElement . JEM_PACKAGEFRAGMENTROOT ) ; private static final String PACKAGEFRAGMENT = Character . toString ( JavaElement . JEM_PACKAGEFRAGMENT ) ; private static final String FIELD = Character . toString ( JavaElement . JEM_FIELD ) ; private static final String METHOD = Character . toString ( JavaElement . JEM_METHOD ) ; private static final String INITIALIZER = Character . toString ( JavaElement . JEM_INITIALIZER ) ; private static final String COMPILATIONUNIT = Character . toString ( JavaElement . JEM_COMPILATIONUNIT ) ; private static final String CLASSFILE = Character . toString ( JavaElement . JEM_CLASSFILE ) ; private static final String TYPE = Character . toString ( JavaElement . JEM_TYPE ) ; private static final String PACKAGEDECLARATION = Character . toString ( JavaElement . JEM_PACKAGEDECLARATION ) ; private static final String IMPORTDECLARATION = Character . toString ( JavaElement . JEM_IMPORTDECLARATION ) ; private static final String LOCALVARIABLE = Character . toString ( JavaElement . JEM_LOCALVARIABLE ) ; private static final String TYPE_PARAMETER = Character . toString ( JavaElement . JEM_TYPE_PARAMETER ) ; private static final String ANNOTATION = Character . toString ( JavaElement . JEM_ANNOTATION ) ; private final char [ ] memento ; private final int length ; private int index = 0 ; public MementoTokenizer ( String memento ) { this . memento = memento . toCharArray ( ) ; this . length = this . memento . length ; } public boolean hasMoreTokens ( ) { return this . index < this . length ; } public String nextToken ( ) { int start = this . index ; StringBuffer buffer = null ; switch ( this . memento [ this . index ++ ] ) { case JavaElement . JEM_ESCAPE : buffer = new StringBuffer ( ) ; buffer . append ( this . memento [ this . index ] ) ; start = ++ this . index ; break ; case JavaElement . JEM_COUNT : return COUNT ; case JavaElement . JEM_JAVAPROJECT : return JAVAPROJECT ; case JavaElement . JEM_PACKAGEFRAGMENTROOT : return PACKAGEFRAGMENTROOT ; case JavaElement . JEM_PACKAGEFRAGMENT : return PACKAGEFRAGMENT ; case JavaElement . JEM_FIELD : return FIELD ; case JavaElement . JEM_METHOD : return METHOD ; case JavaElement . JEM_INITIALIZER : return INITIALIZER ; case JavaElement . JEM_COMPILATIONUNIT : return COMPILATIONUNIT ; case JavaElement . JEM_CLASSFILE : return CLASSFILE ; case JavaElement . JEM_TYPE : return TYPE ; case JavaElement . JEM_PACKAGEDECLARATION : return PACKAGEDECLARATION ; case JavaElement . JEM_IMPORTDECLARATION : return IMPORTDECLARATION ; case JavaElement . JEM_LOCALVARIABLE : return LOCALVARIABLE ; case JavaElement . JEM_TYPE_PARAMETER : return TYPE_PARAMETER ; case JavaElement . JEM_ANNOTATION : return ANNOTATION ; } loop : while ( this . index < this . length ) { switch ( this . memento [ this . index ] ) { case JavaElement . JEM_ESCAPE : if ( buffer == null ) buffer = new StringBuffer ( ) ; buffer . append ( this . memento , start , this . index - start ) ; start = ++ this . index ; break ; case JavaElement . JEM_COUNT : case JavaElement . JEM_JAVAPROJECT : case JavaElement . JEM_PACKAGEFRAGMENTROOT : case JavaElement . JEM_PACKAGEFRAGMENT : case JavaElement . JEM_FIELD : case JavaElement . JEM_METHOD : case JavaElement . JEM_INITIALIZER : case JavaElement . JEM_COMPILATIONUNIT : case JavaElement . JEM_CLASSFILE : case JavaElement . JEM_TYPE : case JavaElement . JEM_PACKAGEDECLARATION : case JavaElement . JEM_IMPORTDECLARATION : case JavaElement . JEM_LOCALVARIABLE : case JavaElement . JEM_TYPE_PARAMETER : case JavaElement . JEM_ANNOTATION : break loop ; } this . index ++ ; } if ( buffer != null ) { buffer . append ( this . memento , start , this . index - start ) ; return buffer . toString ( ) ; } else { return new String ( this . memento , start , this . index - start ) ; } } } </s>