public static bool AllAt <TSource, TPredicate>(this ImmutableStack <TSource> source, TPredicate predicate = default) where TPredicate : struct, IFunction <TSource, int, bool> => ValueEnumerableExtensions.AllAt <ValueWrapper <TSource>, ValueWrapper <TSource> .Enumerator, TSource, TPredicate>(new ValueWrapper <TSource>(source), predicate);
public static bool AllAt <TEnumerable, TEnumerator, TSource, TPredicate>(this TEnumerable source, TPredicate predicate = default) where TEnumerable : IValueReadOnlyCollection <TSource, TEnumerator> where TEnumerator : struct, IEnumerator <TSource> where TPredicate : struct, IFunction <TSource, int, bool> => source.Count is 0 || ValueEnumerableExtensions.AllAt <TEnumerable, TEnumerator, TSource, TPredicate>(source, predicate);