if ( tokens.hasMoreTokens() ) { msgBuffer.append( context );  msgBuffer.append( "\n" );  msgBuffer.append( pointer );  context = tokens.nextToken( "\n" );  pointer = tokens.nextToken( "\n" ); }  String message = msgBuffer.toString();
    private CompilerError parseModernError( String error )    {        StringTokenizer tokens = new StringTokenizer( error, ":" );        try        {            String file = tokens.nextToken();            if ( file.length() == 1 )            {                file = new StringBuffer( file ).append( ":" ).append( tokens.nextToken() ).toString();            }            int line = Integer.parseInt( tokens.nextToken() );            StringBuffer msgBuffer = new StringBuffer();            msgBuffer.append( tokens.nextToken( "\n" ).substring( 1 ) );            msgBuffer.append( "\n" );            msgBuffer.append( tokens.nextToken( "\n" ) );            msgBuffer.append( "\n" );            msgBuffer.append( tokens.nextToken( "\n" ) );            String message = msgBuffer.toString();            String context = tokens.nextToken( "\n" );            String pointer = tokens.nextToken( "\n" );            int startcolumn = pointer.indexOf( "^" );            int endcolumn = context.indexOf( " ", startcolumn );            if ( endcolumn == -1 )            {                endcolumn = context.length();            }            return new CompilerError( file, true, line, startcolumn, line, endcolumn, message );        }        catch ( NoSuchElementException nse )        {            // TODO: exception?            return new CompilerError( "no more tokens - could not parse error message: " + error, true );        }        catch ( Exception nse )        {            // TODO: exception?            return new CompilerError( "could not parse error message: " + error, true );        }    }