@Test
  public void test_construction_permutations() {
    for (int a = 0; a < 6; a++) {
      compare_order(newSet(a), setOf(a));
      for (int b = 0; b < 6; b++) {
        compare_order(newSet(a, b), setOf(a, b));
        for (int c = 0; c < 6; c++) {
          compare_order(newSet(a, b, c), setOf(a, b, c));
          for (int d = 0; d < 6; d++) {
            compare_order(newSet(a, b, c, d), setOf(a, b, c, d));
            for (int e = 0; e < 6; e++) {
              compare_order(newSet(a, b, c, d, e), setOf(a, b, c, d, e));
              for (int f = 0; f < 6; f++) {
                Integer[] elements = new Integer[] {a, b, c, d, e, f};
                Set<Integer> expected = newSet(elements);
                Collection<Integer> collection = Arrays.asList(elements);

                // setOf
                compare_order(expected, setOf(a, b, c, d, e, f));
                // asSet(array)
                compare_order(expected, asSet(elements));
                // asSet(collection)
                compare_order(expected, asSet(collection));
                // asSet(iterator)
                compare_order(expected, asSet(collection.iterator()));
              }
            }
          }
        }
      }
    }
  }
  @Test
  public void test_asSet_collection() {
    assertSame(emptySet(), asSet(Arrays.asList()));
    compare_sets(newSet(1), asSet(Arrays.asList(1)));
    compare_sets(newSet(1, 2), asSet(Arrays.asList(1, 2)));
    compare_sets(newSet(1, 2, 3), asSet(Arrays.asList(1, 2, 3)));
    compare_sets(newSet(1, 2, 3, 4), asSet(Arrays.asList(1, 2, 3, 4)));
    compare_sets(newSet(1, 2, 3, 4, 5), asSet(Arrays.asList(1, 2, 3, 4, 5)));
    compare_sets(newSet(1, 2, 3, 4, 5, 6), asSet(Arrays.asList(1, 2, 3, 4, 5, 6)));

    // ConstSet should just be returned as-is.
    ConstSet<Integer> set;
    set = setOf(1);
    assertSame(set, asSet(set));
    set = setOf(1, 2);
    assertSame(set, asSet(set));
    set = setOf(1, 2, 3);
    assertSame(set, asSet(set));
    set = setOf(1, 2, 3, 4, 5, 6, 7, 8, 9);
    assertSame(set, asSet(set));

    // However, ConstSortedSet should be converted to a regular ConstSet.
    set = sortedSetOf(null, 1);
    assertNotSame(set, asSet(set));
  }
 @Test
 public void test_asSet_collection_types() {
   assertEquals(BasicSet1.class, asSet(Arrays.asList(1)).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2)).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2, 3)).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2, 3, 4)).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2, 3, 4, 5)).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2, 3, 4, 5, 6)).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2, 3, 4, 5, 6, 7)).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8)).getClass());
 }
 @Test
 public void test_asSet_iterator_types() {
   assertEquals(BasicSet1.class, asSet(Arrays.asList(1).iterator()).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2).iterator()).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2, 3).iterator()).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2, 3, 4).iterator()).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2, 3, 4, 5).iterator()).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2, 3, 4, 5, 6).iterator()).getClass());
   assertEquals(BasicSetN.class, asSet(Arrays.asList(1, 2, 3, 4, 5, 6, 7).iterator()).getClass());
   assertEquals(
       BasicSetN.class, asSet(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8).iterator()).getClass());
 }
 @Test
 public void test_asSet_iterator() {
   assertSame(emptySet(), asSet(Arrays.asList().iterator()));
   compare_sets(newSet(1), asSet(Arrays.asList(1).iterator()));
   compare_sets(newSet(1, 2), asSet(Arrays.asList(1, 2).iterator()));
   compare_sets(newSet(1, 2, 3), asSet(Arrays.asList(1, 2, 3).iterator()));
   compare_sets(newSet(1, 2, 3, 4), asSet(Arrays.asList(1, 2, 3, 4).iterator()));
   compare_sets(newSet(1, 2, 3, 4, 5), asSet(Arrays.asList(1, 2, 3, 4, 5).iterator()));
   compare_sets(newSet(1, 2, 3, 4, 5, 6), asSet(Arrays.asList(1, 2, 3, 4, 5, 6).iterator()));
 }