public IEnumerable <TValue> LessThanOrEqual(TKey ltKey) { int compare = comparer.Compare(theKey, ltKey); if (compare > 0) { foreach (var value in Left.LessThanOrEqual(ltKey)) { yield return(value); } yield break; } foreach (var value in Left.LessThanOrEqual(ltKey)) { yield return(value); } yield return(Value); if (compare == 0) { yield break; } foreach (var value in Right.LessThanOrEqual(ltKey)) { yield return(value); } }