protected  String[]  parseRow( ) throws SQLException
    {
        String[]    newRow = new String[ COLUMN_NAMES.length ];
        String      nextLine = null;
        String      oldLine = "";

        while( true )
        {
            boolean     isContinuationLine = ( oldLine.length() != 0 );
            
            nextLine = readLine();

            // if at EOF, get out of here
            if ( nextLine == null )
            {
                if ( !isContinuationLine ) { return null; }
                else { nextLine = oldLine; }
            }

            nextLine = nextLine.trim();

            // skip blank lines and lines which start with the comment character
            if ( nextLine.startsWith( "#" ) ) { continue; }
            else if ( nextLine.length() == 0 )
            {
                if ( !isContinuationLine ) { continue; }
            }

            // handle continuation lines
            nextLine = oldLine + nextLine;

            if ( nextLine.endsWith( "\\" ) )
            {
                oldLine = nextLine.substring( 0, nextLine.length() - 1 );
                continue;
            }

            break;
        }

        int         equalsIdx = nextLine.indexOf( '=' );

        try {
            if ( equalsIdx >= 0 )
            {
                newRow[ PROPERTY_KEY ] = nextLine.substring( 0, equalsIdx );
                newRow[ PROPERTY_VALUE ] = nextLine.substring( equalsIdx + 1, nextLine.length() );
            }
            else
            {
                newRow[ PROPERTY_KEY ] = nextLine;
                newRow[ PROPERTY_VALUE ] = "";
            }
        }
        catch (Throwable t)
        {
            SQLException    se = new SQLException
                (
                 "Unparseable line number " + getLineNumber() + " in file " + getTextFileName() + ": " + nextLine
                 );
            se.initCause( t );

            throw se;
        }

        return newRow;
    }