/// <inheritdoc cref="M:VariableIrony.IEnumerableExtensions.LeftJoin``4(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1},System.Func{``0,``2},System.Func{``1,``2},System.Func{``0,``1,``3},System.Collections.Generic.IEqualityComparer{``2})" />
 /// <remarks>
 /// <inheritdoc cref="M:VariableIrony.IEnumerableExtensions.LeftJoin``4(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1},System.Func{``0,``2},System.Func{``1,``2},System.Func{``0,``1,``3},System.Collections.Generic.IEqualityComparer{``2})" />
 /// <para>This method is called when using query expressions where the sequence on the right side is an <see cref="T:VariableIrony.Linq.IOuterEnumerable`1" /> (for example, by calling <see cref="M:VariableIrony.IEnumerableExtensions.AsOuter``1(System.Collections.Generic.IEnumerable{``0})" />).</para>
 /// </remarks>
 public static IEnumerable <TResult> Join <TInner, TOuter, TKey, TResult>(this IEnumerable <TInner> inner, IOuterEnumerable <TOuter> outer, Func <TInner, TKey> innerKeySelector, Func <TOuter, TKey> outerKeySelector, Func <TInner, TOuter, TResult> resultSelector, IEqualityComparer <TKey> comparer)
 {
     return(LeftJoin(GetSource(outer), inner, outerKeySelector, innerKeySelector, (x, y) => resultSelector(y, x), comparer));
 }
 /// <inheritdoc cref="M:VariableIrony.IEnumerableExtensions.Join``4(System.Collections.Generic.IEnumerable{``0},VariableIrony.Linq.IOuterEnumerable{``1},System.Func{``0,``2},System.Func{``1,``2},System.Func{``0,``1,``3},System.Collections.Generic.IEqualityComparer{``2})" />
 public static IEnumerable <TResult> Join <TInner, TOuter, TKey, TResult>(this IEnumerable <TInner> inner, IOuterEnumerable <TOuter> outer, Func <TInner, TKey> innerKeySelector, Func <TOuter, TKey> outerKeySelector, Func <TInner, TOuter, TResult> resultSelector)
 {
     return(inner.Join(outer, innerKeySelector, outerKeySelector, resultSelector, null));
 }