public static bool IsEnumerator(this Type type, out EnumeratorInfo enumeratorInfo)
        {
            if (type is null)
            {
                throw new ArgumentNullException(nameof(type));
            }

            var isEnumerator = type.IsEnumeratorType(out var current, out var moveNext, out var reset, out var dispose);

            enumeratorInfo = new EnumeratorInfo(current, moveNext, reset, dispose);
            return(isEnumerator);
        }
 internal EnumerableInfo(MethodInfo getEnumerator, EnumeratorInfo enumeratorInfo)
 {
     GetEnumerator  = getEnumerator;
     EnumeratorInfo = enumeratorInfo;
 }
 public EnumerableInfo(MethodInfo getEnumerator, EnumeratorInfo enumeratorInfo)
 {
     GetEnumerator  = getEnumerator;
     EnumeratorInfo = enumeratorInfo;
 }
 public Enumerator(EnumerableWrapper <TEnumerable, TItem> enumerable)
 {
     info     = enumerable.Info.EnumeratorInfo;
     instance = enumerable.Info.InvokeGetEnumerator(enumerable.Instance);
 }