combinations

@JvmName(name = "combinationsExtension")
fun <A, B> List<A>.combinations(listB: List<B>): List<Pair<A, B>>
@JvmName(name = "combinations")
fun <A, B> combinations(listA: List<A>, listB: List<B>): List<Pair<A, B>>
@JvmName(name = "combinationsExtension")
fun <A, B, C> List<A>.combinations(listB: List<B>, listC: List<C>): List<Triple<A, B, C>>
@JvmName(name = "combinations")
fun <A, B, C> combinations(listA: List<A>, listB: List<B>, listC: List<C>): List<Triple<A, B, C>>
fun <T> combinations(vararg listOfList: List<T>): List<List<T>>