private static List <JmdictEntity> GetMatchedWords(WordInformation word, Database dictionary, string queryCommmand, bool isSkipSurfaceIfHasBaseForm, string conjungation = null) { //Use Dictionary to ensure unique entries Dictionary <int, JmdictEntity> entries = new Dictionary <int, JmdictEntity>(); if (WordInformation.IsHave(word.BaseForm)) { if (word.IsMaybeAmbiguousGodan()) { var allVariants = GetPossibleGodanVerb(word); AddPossibleGodanVerbsDictionaryEntry(allVariants, dictionary, entries, conjungation); if (allVariants.Count == 1) { AddPossibleSpecialSuruVerb(word, dictionary, conjungation, entries); } } else { if (word.IsIAdjectiveConjugation()) { HandleIAdjective(word, dictionary, conjungation, entries); } else if (word.IsVerb()) { HandleVerb(word, dictionary, conjungation, entries); } else if (word.IsAuxiliaryVerb()) { AddVerbDictionaryEntry(word.BaseForm, dictionary, entries, conjungation); } else { AddAllDictionaryEntry(word.BaseForm + queryCommmand, dictionary, entries); } } } if (word.BaseForm == null || entries.Count == 0 || !word.BaseForm.EqualsOrdinalIgnore(word.Surface)) { if (entries.Count == 0 || !isSkipSurfaceIfHasBaseForm) { AddAllDictionaryEntry(word.Surface + queryCommmand, dictionary, entries); } } return(entries.Values.ToList()); }