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