// Path: src/main/java/org/paukov/combinatorics3/Generator.java
// @SafeVarargs
// public static <T> IGenerator<List<T>> cartesianProduct(List<T>... args) {
//   return cartesianProduct(Arrays.asList(args));
// }


import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
import static java.util.stream.Collectors.toList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.paukov.combinatorics3.Generator.cartesianProduct;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Test;
package org.paukov.combinatorics3;



public final class CartesianProductTest {

  @Test
  public void test_cartesian_product_number() {
// Path: src/main/java/org/paukov/combinatorics3/Generator.java
// @SafeVarargs
// public static <T> IGenerator<List<T>> cartesianProduct(List<T>... args) {
//   return cartesianProduct(Arrays.asList(args));
// }


// Path: src/test/java/org/paukov/combinatorics3/CartesianProductTest.java
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
import static java.util.stream.Collectors.toList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.paukov.combinatorics3.Generator.cartesianProduct;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Test;

package org.paukov.combinatorics3;



public final class CartesianProductTest {

  @Test
  public void test_cartesian_product_number() {
    List<List<Integer>> cartesianProduct =