func getNearestAncestor(comparable gorivets.Comparable, names *gorivets.SortedSlice) logNameProvider { if names.Len() == 0 { return nil } nProvider := comparable.(logNameProvider) for idx := gorivets.Min(names.Len()-1, names.GetInsertPos(nProvider.(gorivets.Comparable))); idx >= 0; idx-- { candidate := names.At(idx).(logNameProvider) if ancestor(candidate.name(), nProvider.name()) { return candidate } } return nil }