partialMatchMethods = partialMatching.partialMatchMethodBuilders(adt, previousConstructors, nextConstructors)

.map(mb -> mb.addTypeVariable(returnTypeVarName).build());</BUG>
} else {
<BUG>totalMatchBuilder.addTypeVariable(returnTypeVarName)
.superclass(ParameterizedTypeName.get(adt.deriveConfig()
.targetClass()
.className()
.nestedClass(OtherwiseMatchingStepDerivator.otherwiseBuilderClassName()),
PatternMatchingDerivator.matcherVariables(adt).map(TypeName::get).toArray(TypeName[]::new)))</BUG>
.addMethod(MethodSpec.constructorBuilder()

currentConstructor);
final Stream<MethodSpec> partialMatchMethods;
if (previousConstructors.isEmpty()) {
currentConstructorTotalMatchMethod.addTypeVariable(returnTypeVarName);
currentConstructorTotalMatchConstantMethod.addTypeVariable(returnTypeVarName);
totalMatchBuilder.addMethod(MethodSpec.constructorBuilder().build());
partialMatchMethods = IntStream.rangeClosed(1, nextConstructors.size())
.mapToObj(i -> partialMatching.partialMatchMethodBuilder(adt, previousConstructors, i, nextConstructors.get(i - 1),
superClass(adt, nextConstructors.subList(i, nextConstructors.size()))))
.flatMap(Function.identity())
.map(mb -> mb.addTypeVariable(returnTypeVarName).build());
} else {
totalMatchBuilder.addTypeVariable(returnTypeVarName)
.superclass(superClass(adt, nextConstructors))
