public void process() throws IOException {
  section=null;
  try {
    counterdr=new LineNumberReader(new BufferedReader(new InputStreamReader(in,Charset.forName("UTF-8"))));
    reader=new MemoPushbackReader(counterdr);
    listener.setup();
    Token tok;
    skipWhitespace(true);
    flushWhitespace();
    while ((tok=peekToken()) != Token.eof) {
switch (tok) {
case section:
        handleSection();
      break;
case option:
    if (section != null) {
      handleOption();
    }
 else {
      throw new InvalidPropertiesFormatException("Option without section in configuration file at line " + (counterdr.getLineNumber() + 1));
    }
  break;
case comment:
skipToNextLine();
listener.onComment(reader.getAndClearMemo());
break;
case eol:
skipToNextLine();
listener.onWhitespace(reader.getAndClearMemo());
break;
default :
throw new InvalidPropertiesFormatException("Unexpected token in configuration file at line " + (counterdr.getLineNumber() + 1));
}
skipWhitespace(true);
flushWhitespace();
}
listener.cleanup();
}
  finally {
if (reader != null) {
reader.close();
}
}
}

public void process ( ) throws IOException { section = null ; try { counterdr = new LineNumberReader ( new BufferedReader ( new InputStreamReader ( in , Charset . forName ( "UTF-8" ) ) ) ) ; reader = new MemoPushbackReader ( counterdr ) ; listener . setup ( ) ; Token tok ; skipWhitespace ( true ) ; flushWhitespace ( ) ; while ( ( tok = peekToken ( ) ) != Token . eof ) { switch ( tok ) { case section : handleSection ( ) ; break ; case option : if ( section != null ) { handleOption ( ) ; } else { throw new InvalidPropertiesFormatException ( "Option without section in configuration file at line " + ( counterdr . getLineNumber ( ) + 1 ) ) ; } break ; case comment : skipToNextLine ( ) ; listener . onComment ( reader . getAndClearMemo ( ) ) ; break ; case eol : skipToNextLine ( ) ; listener . onWhitespace ( reader . getAndClearMemo ( ) ) ; break ; default : throw new InvalidPropertiesFormatException ( "Unexpected token in configuration file at line " + ( counterdr . getLineNumber ( ) + 1 ) ) ; } skipWhitespace ( true ) ; flushWhitespace ( ) ; } listener . cleanup ( ) ; } finally { if ( reader != null ) { reader . close ( ) ; } } }
starts the actual processing of the input
