public <TAccumulate> TAccumulate aggregate(
     TAccumulate seed, FunctionExpression<Function2<TAccumulate, T, TAccumulate>> selector) {
   return factory.aggregate(getThis(), seed, selector);
 }
 public <TAccumulate, TResult> TResult aggregate(
     TAccumulate seed,
     FunctionExpression<Function2<TAccumulate, T, TAccumulate>> func,
     FunctionExpression<Function1<TAccumulate, TResult>> selector) {
   return factory.aggregate(getThis(), seed, func, selector);
 }
 public T aggregate(FunctionExpression<Function2<T, T, T>> selector) {
   return factory.aggregate(getThis(), selector);
 }