private DerivedCodeSpec generateOptionalGetter(DataArgument field, AlgebraicDataType adt) {
String arg = asParameterName(adt);
OptionModel optionModel = deriveUtils.optionModel(adt.deriveConfig().flavour());
DeclaredType returnType = deriveUtils.types()
.getDeclaredType(optionModel.typeElement(), field.type().accept(asBoxedType, deriveUtils.types()));
<BUG>return DataConstructions.cases()
.multipleConstructors(MultipleConstructorsSupport.cases()</BUG>
.visitorDispatch(
(visitorParam, visitorType, constructors) -> visitorDispatchOptionalGetterImpl(optionModel, adt, visitorType,
constructors, arg, field, returnType))

private DerivedCodeSpec generateOptionalGetter(DataArgument field, AlgebraicDataType adt) {
String arg = asParameterName(adt);
OptionModel optionModel = deriveUtils.optionModel(adt.deriveConfig().flavour());
DeclaredType returnType = deriveUtils.types()
.getDeclaredType(optionModel.typeElement(), field.type().accept(asBoxedType, deriveUtils.types()));
return caseOf(adt.dataConstruction())
.multipleConstructors(MultipleConstructorsSupport.cases()
.visitorDispatch(
(visitorParam, visitorType, constructors) -> visitorDispatchOptionalGetterImpl(optionModel, adt, visitorType,
constructors, arg, field, returnType))
