Function<TypeVariable, Optional<TypeName>> polymorphism = tv -> uniqueTypeVariables.stream()
.filter(utv -> deriveUtils.types().isSameType(tv, utv))
.findFirst()
.map(utv -> TypeVariableName.get(adt.matchMethod().returnTypeVariable().toString() + utv.toString()));
TypeMirror boxedFieldType = field.type().accept(Utils.asBoxedType, deriveUtils.types());
<BUG>String smartSuffix = DeriveVisibilities.cases().Smart("0").otherwise("").apply(adt.deriveConfig().targetClass().visibility());
String modMethodName = "mod" + Utils.capitalize(field.fieldName()) + smartSuffix;</BUG>
NameAllocator nameAllocator = new NameAllocator();
nameAllocator.newName(modMethodName);
String adtArg = nameAllocator.newName(Utils.uncapitalize(adt.typeConstructor().declaredType().asElement().getSimpleName()));

Function<TypeVariable, Optional<TypeName>> polymorphism = tv -> uniqueTypeVariables.stream()
.filter(utv -> deriveUtils.types().isSameType(tv, utv))
.findFirst()
.map(utv -> TypeVariableName.get(adt.matchMethod().returnTypeVariable().toString() + utv.toString()));
TypeMirror boxedFieldType = field.type().accept(Utils.asBoxedType, deriveUtils.types());
String smartSuffix = caseOf(adt.deriveConfig().targetClass().visibility())
.Smart_("0")
.otherwise_("");
String modMethodName = "mod" + Utils.capitalize(field.fieldName()) + smartSuffix;
NameAllocator nameAllocator = new NameAllocator();
nameAllocator.newName(modMethodName);
String adtArg = nameAllocator.newName(Utils.uncapitalize(adt.typeConstructor().declaredType().asElement().getSimpleName()));
