public <TInner, TKey, TResult> Queryable<TResult> groupJoin(
     Enumerable<TInner> inner,
     FunctionExpression<Function1<T, TKey>> outerKeySelector,
     FunctionExpression<Function1<TInner, TKey>> innerKeySelector,
     FunctionExpression<Function2<T, Enumerable<TInner>, TResult>> resultSelector) {
   return factory.groupJoin(getThis(), inner, outerKeySelector, innerKeySelector, resultSelector);
 }