public FlagSet<E> copy() {
    return new FlagSet<>(enumClass,  prefix, flags);
  }
@Test
  public void testCopy() throws Throwable {
    FlagSet<SimpleEnum> s1 =
            createFlagSet(SimpleEnum.class, KEYDOT, SimpleEnum.a, SimpleEnum.b);
    s1.makeImmutable();
    FlagSet<SimpleEnum> s2 = s1.copy();
    Assertions.assertThat(s2)
        .describedAs("copy of %s", s1)
        .isNotSameAs(s1);
    Assertions.assertThat(!s2.isImmutable())
        .describedAs("set %s is immutable", s2)
        .isTrue();
    Assertions.assertThat(s1)
        .describedAs("s1 == s2")
        .isEqualTo(s2);
  }