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