autoGeneratedClassName(typeElement.getSimpleName().toString())), deduceDeriveVisibility(typeElement, Visibility.Same)),
EnumSet.of(constructors, Make.lazyConstructor, lambdaVisitor, Make.getters, Make.modifiers, Make.catamorphism,
Make.casesMatching, Make.caseOfMatching), EnumSet.noneOf(ArgOption.class), Collections.emptyMap());
}
private static DeriveVisibility deduceDeriveVisibility(TypeElement typeElement, Visibility visibility) {
<BUG>return Visibilities.cases()

.Same(typeElement.getModifiers().contains(Modifier.PUBLIC)
</BUG>
? DeriveVisibilities.Public()

autoGeneratedClassName(typeElement.getSimpleName().toString())), deduceDeriveVisibility(typeElement, Visibility.Same)),
EnumSet.of(constructors, Make.lazyConstructor, lambdaVisitor, Make.getters, Make.modifiers, Make.catamorphism,
Make.casesMatching, Make.caseOfMatching), EnumSet.noneOf(ArgOption.class), Collections.emptyMap());
}
private static DeriveVisibility deduceDeriveVisibility(TypeElement typeElement, Visibility visibility) {
return Visibilities.caseOf(visibility)
.Same(() -> typeElement.getModifiers().contains(Modifier.PUBLIC)
? DeriveVisibilities.Public()
