public IObject Zip(ICollection collection, Lambda lambda) => terminate().Zip(collection, lambda);
public TakeWhileAction(Lambda predicate) { this.predicate = predicate; taking = true; }
public IObject Sort(Lambda lambda, bool ascending) => terminate().Sort(lambda, ascending);
public Boolean Any(Lambda predicate) => terminate().Any(predicate);
public IObject Cross(ICollection collection, Lambda lambda) => terminate().Cross(collection, lambda);
public IObject First(Lambda predicate) => terminate().First(predicate);
public IObject GroupBy(Lambda lambda) => terminate().GroupBy(lambda);
public IObject FlatMap(Lambda lambda) => Copy(new FlatMapAction(lambda));
public IObject Replace(Lambda predicate, Lambda lambda) => Copy(new MapIfAction(lambda, predicate));
public IObject ReduceRight(Lambda lambda) => terminate().ReduceRight(lambda);
public Int Count(Lambda predicate) => terminate().Count(predicate);
public IObject ReduceRight(IObject initialValue, Lambda lambda) => terminate().ReduceRight(initialValue, lambda);
public IObject FoldRight(Lambda lambda) => terminate().FoldRight(lambda);
public IObject FoldRight(IObject initialValue, Lambda lambda) => terminate().FoldRight(initialValue, lambda);
public IObject Min(Lambda lambda) => terminate().Min(lambda);
public IObject IfNot(Lambda predicate) => Copy(new IfNotAction(predicate));
public IObject Max(Lambda lambda) => terminate().Max(lambda);
public IObject SkipWhile(Lambda predicate) => Copy(new SkipWhileAction(predicate));
public IObject Last(Lambda predicate) => terminate().Last(predicate);
public IObject SkipUntil(Lambda predicate) => Copy(new SkipUntilAction(predicate));
public Boolean None(Lambda predicate) => terminate().None(predicate);
public IObject TakeWhile(Lambda predicate) => Copy(new TakeWhileAction(predicate));
public Boolean All(Lambda predicate) => terminate().All(predicate);
public IObject TakeUntil(Lambda predicate) => Copy(new TakeUntilAction(predicate));
public IObject Span(Lambda predicate) => terminate().Span(predicate);
public IObject Indexes(Lambda predicate) => terminate().Indexes(predicate);
public SkipWhileAction(Lambda predicate) { this.predicate = predicate; skipping = true; }
public CompositeLambda(IInvokable invokable1, IInvokable invokable2) : base(invokable1) { lambda1 = new Lambda(invokable1); lambda2 = new Lambda(invokable2); }