# File lib/wordnet/lexicon.rb, line 157
                def lookupSynsets( word, partOfSpeech, sense=nil )
                        wordkey = self.makeWordKey( word, partOfSpeech )
                        pos = self.makePos( partOfSpeech )
                        synsets = []

                        # Look up the index entry, trying first the word as given, and if
                        # that fails, trying morphological conversion.
                        entry = @indexDb[ wordkey ]
                        if entry.nil? && (word = self.morph( word, partOfSpeech ))
                                entry = @indexDb[ wordkey ]
                        end

                        # If the lookup failed both ways, just abort
                        return nil unless entry

                        # Make synset keys from the entry, narrowing it to just the sense
                        # requested if one was specified.
                        synkeys = entry.split( SubDelimRe ).collect {|off| "#{off}%#{pos}" }
                        if sense
                                return lookupSynsetsByKey( synkeys[sense - 1] )
                        else
                                return [ lookupSynsetsByKey(*synkeys) ].flatten
                        end
                end