deriveUtils.resolveToTypeName(adt.typeConstructor().declaredType(), polymorphism)))
.addStatement("return $L(__ -> $L)", modMethodName, setterArgName);
if (smartSuffix.isEmpty()) {
setMethod.addModifiers(Modifier.PUBLIC);
}
<BUG>return DataConstructions.cases()
.multipleConstructors(MultipleConstructorsSupport.cases()</BUG>
.visitorDispatch((visitorParam, visitorType, constructors) -> {
String visitorVarName = Utils.uncapitalize(visitorType.asElement().getSimpleName());
return DerivedCodeSpec.methodSpecs(Arrays.asList(setMethod.build(), modBuilder.addStatement("$T $L = $L($L)",

deriveUtils.resolveToTypeName(adt.typeConstructor().declaredType(), polymorphism)))
.addStatement("return $L(__ -> $L)", modMethodName, setterArgName);
if (smartSuffix.isEmpty()) {
setMethod.addModifiers(Modifier.PUBLIC);
}
return caseOf(adt.dataConstruction())
.multipleConstructors(MultipleConstructorsSupport.cases()
.visitorDispatch((visitorParam, visitorType, constructors) -> {
String visitorVarName = Utils.uncapitalize(visitorType.asElement().getSimpleName());
return DerivedCodeSpec.methodSpecs(Arrays.asList(setMethod.build(), modBuilder.addStatement("$T $L = $L($L)",
