processGenericBuilderInterface(result);
result.getBuilderModel().setType(
new TypeM(constructBuilderPackage(input), constructAbstractBuilderClassname(input))
.withTypeParameter(pojoType.getTypeParameters()
.collectDistinctTypeVariablesRecursevly(new TypeListM()).asArray()));
result.getBuilderModel().setAbstract(true);
result.setManualBuilderModel(new ManualBuilderM());
result.getManualBuilderModel().setType(
new TypeM(constructBuilderPackage(input), constructBuilderClassname(input))
.withTypeParameter(pojoType.getTypeParameters()
.collectDistinctTypeVariablesRecursevly(new TypeListM()).asArray()));
result.getManualBuilderModel().setBaseType(result.getBuilderModel().getType());
result.getManualBuilderModel().setPojoType(pojoType);
result.getBuilderModel().setSelfType(result.getManualBuilderModel().getType());
} else {
processBaseClass(result);
processGenericBuilderInterface(result);
result.getBuilderModel().setType(
new TypeM(constructBuilderPackage(input), constructBuilderClassname(input))
.withTypeParameter(pojoType.getTypeParameters()
.collectDistinctTypeVariablesRecursevly(new TypeListM()).asArray()));
result.getBuilderModel().setSelfType(result.getBuilderModel().getType());
}
scanSourceCode(input, result);
if (input.getDirectives().isGenerateCopyMethod()) {