/// <summary> /// Returns an iterator which yields all elements of the sequence in the reverse order. /// </summary> /// <remarks>This should always be equivalent to, but faster than, /// <code> /// AsEnumerable().Reverse(); /// </code></remarks> public IEnumerable <Tuple <TKey, TValue> > ReverseIterator() { if (_count == 0) { yield break; } if (_right.Count() != 0) { foreach (var pair in _right.ReverseIterator()) { yield return(pair); } } yield return(Tuple.New(_key, _value)); if (_left.Count() != 0) { foreach (var pair in _left.ReverseIterator()) { yield return(pair); } } }