public bool MoveNext()
        {
            if (this.current == null)
            {
                this.current = new NextEnumerable(this.parent, this.backingEnumerator);
                return(true);
            }
            else
            {
                if (!this.current.IsComplete)
                {
                    using (var enumerator = this.current.GetEnumerator())
                    {
                        while (enumerator.MoveNext())
                        {
                        }
                    }
                }
            }

            if (!this.parent.hasCurrent)
            {
                return(false);
            }

            this.current = new NextEnumerable(this.parent, this.backingEnumerator);
            return(true);
        }
 public NextEnumerator(SplittingEnumerable <T> splitter, NextEnumerable parent, IEnumerator <T> enumerator)
 {
     this.splitter   = splitter;
     this.parent     = parent;
     this.enumerator = enumerator;
 }