public Enumerator(SplittingEnumerable <T> parent, IEnumerator <T> backingEnumerator)
 {
     this.parent            = parent;
     this.backingEnumerator = backingEnumerator;
     this.parent.hasCurrent = this.backingEnumerator.MoveNext();
     if (this.parent.hasCurrent)
     {
         this.parent.lastItem = this.backingEnumerator.Current;
     }
 }
 public NextEnumerable(SplittingEnumerable <T> splitter, IEnumerator <T> backingEnumerator)
 {
     this.splitter          = splitter;
     this.backingEnumerator = backingEnumerator;
 }
 public NextEnumerator(SplittingEnumerable <T> splitter, NextEnumerable parent, IEnumerator <T> enumerator)
 {
     this.splitter   = splitter;
     this.parent     = parent;
     this.enumerator = enumerator;
 }