internal static IOption FindSubOption(IOptionWithSubOptions opt, string optName) { foreach (IOption subOpt in opt.SubOptions) { if (subOpt == null) continue; if (subOpt.Name == optName) return subOpt; if (subOpt is IOptionWithSubOptions) { var result = (subOpt as IOptionWithSubOptions).Find(optName); if (result != null) return result; } } return null; }
internal static bool MatchesSearchIncludingSubOptions(IOptionWithSubOptions opt, string searchText) { if (MatchesSearch((IOption) opt, searchText)) return true; foreach (IOption subOpt in opt.SubOptions) { if (subOpt != null && subOpt.MatchesSearch(searchText)) return true; } return false; }