protected void parseImpl( BufferedReader reader ) throws IOException, ParsingException
    {
        String currentGroup = null;
        
        String line = null;
        int lineNr = 0;
        boolean proceedParse = true;
        while ( proceedParse && ( ( line = reader.readLine() ) != null ) )
        {
            line = line.trim();
            lineNr++;
            
            if ( line.length() == 0 )
                continue;
            
            if ( line.startsWith( "[" ) )
            {
                if ( line.endsWith( "]" ) )
                {
                    currentGroup = line.substring( 1, line.length() - 1 ).trim();
                    proceedParse = onGroupParsed( lineNr, currentGroup );
                    continue;
                }
                
                int idx = line.indexOf( "]" );
                if ( idx < 0 )
                    throw new ParsingException( "Illegal line #" + lineNr + ": " + line );
                
                currentGroup = line.substring( 1, idx ).trim();
                proceedParse = onGroupParsed( lineNr, currentGroup );
                continue;
            }
            
            proceedParse = parseLine( lineNr, currentGroup, line );
        }
        
        onParsingFinished();
    }