InterfaceInfo handle(TypeElement element) throws ProcessingException {
ClassName modelClassName = ClassName.get(element);
ClassName outputClassName = ClassName.get(modelClassName.packageName(), generateClassName(modelClassName));
TypeSpec.Builder typeBuilder = TypeSpec.classBuilder(outputClassName)
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
<BUG>.addSuperinterface(modelClassName);
List<InterfaceFieldInfo> interfaceInfoList = new ArrayList<>();</BUG>
for (Element enclosedElement : element.getEnclosedElements()) {
if (enclosedElement.getKind() == ElementKind.METHOD) {
ExecutableType methodType = (ExecutableType) enclosedElement.asType();

InterfaceInfo handle(TypeElement element) throws ProcessingException {
ClassName modelClassName = ClassName.get(element);
ClassName outputClassName = ClassName.get(modelClassName.packageName(), generateClassName(modelClassName));
TypeSpec.Builder typeBuilder = TypeSpec.classBuilder(outputClassName)
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
.addSuperinterface(modelClassName);
MethodSpec.Builder constructorBuilder = MethodSpec.constructorBuilder()
.addModifiers(Modifier.PUBLIC);
List<InterfaceFieldInfo> interfaceInfoList = new ArrayList<>();
for (Element enclosedElement : element.getEnclosedElements()) {
if (enclosedElement.getKind() == ElementKind.METHOD) {
ExecutableType methodType = (ExecutableType) enclosedElement.asType();
