/// <summary>Advances to the next element in the flattened enumerable. Enumerables that contain no elements are automatically skipped.</summary>
            /// <returns><see langword="true"/> if the enumerator advanced to the next element, otherwise <see langword="false"/> if there were no remaining elements to enumerate.</returns>
            public bool MoveNext()
            {
                while (innerFlattenedEnumerator?.MoveNext() != true)
                {
                    if (!outerEnumerator.MoveNext())
                    {
                        return(false);
                    }

                    innerFlattenedEnumerator = new(outerEnumerator.Current.GetEnumerator());
                }

                current = innerFlattenedEnumerator.Current;
                return(true);
            }
 /// <summary>Initializes a new instance of the <seealso cref="Enumerator"/> class out of a <seealso cref="FlattenedEnumerables2D{T}"/> instance.</summary>
 /// <param name="instance">The <seealso cref="FlattenedEnumerables2D{T}"/> whose enumerables will be flattened.</param>
 public Enumerator(FlattenedEnumerables2D <T> instance)
 {
     outerEnumerator = instance.enumerables.GetEnumerator();
 }
 /// <inheritdoc/>
 public void Reset()
 {
     outerEnumerator.Reset();
     innerFlattenedEnumerator = null;
 }