    # File convertdb.rb, line 214
    def parseIndexLine( string, lineNumber, pos=nil )
            $scanner.string = string
            synsets = []
            lemma, pos, polycnt = nil, nil, nil

            raise "whole error" unless $scanner.scan( IndexEntry )
            lemma, pos, polycnt, pcnt = $scanner[1], $scanner[2], $scanner[3], $scanner[4]

            # Discard pointer symbols
            pcnt.to_i.times do |i|
                    $scanner.skip( PointerSymbol ) or raise "couldn't skip pointer #{i}"
            end

            # Parse sense and tagsense counts
            $scanner.scan( SenseCounts ) or raise "couldn't parse sense counts"
            senseCount, tagSenseCount = $scanner[1], $scanner[2]

            # Find synsets
            senseCount.to_i.times do |i|
                    $scanner.scan( SynsetId ) or raise "couldn't parse synset #{i}"
                    synset = $scanner[1]
                    synsets.push( synset )
                    $senseIndex[ synset + "%" + pos + "%" + lemma ] = i.to_s
            end

            # Make the index entry and return it
            key = lemma + "%" + pos
            data = synsets.join(WordNet::SubDelim)

            return key, data
    rescue => err
            message "Index entry did not parse: %s at '%s...' (line %d)\n\t%s\n" % [
                    err.message,
                    $scanner.rest[0,20],
                    lineNumber,
                    err.backtrace[0]
            ]
            return nil
    end