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());
        }