public static IList<Tuple<T, T>> Join<T>( this IList<T> this, joinCartesianType t = joinCartesianType.AllPairs )