addCovariantMethods(classNode, declaredMethods, abstractMethods, methodsToAdd, genericsSpec);
private void addCovariantMethods(ClassNode classNode, List declaredMethods, Map abstractMethods, Map methodsToAdd, Map oldGenericsSpec) { ClassNode sn = classNode.getUnresolvedSuperClass(false); if (sn != null) { Map genericsSpec = createGenericsSpec(sn, oldGenericsSpec); List<MethodNode> classMethods = sn.getMethods(); // original class causing bridge methods for methods in super class storeMissingCovariantMethods(declaredMethods, methodsToAdd, genericsSpec, classMethods); // super class causing bridge methods for abstract methods in original class if (!abstractMethods.isEmpty()) { for (Object classMethod : classMethods) { MethodNode method = (MethodNode) classMethod; if (method.isStatic()) continue; storeMissingCovariantMethods(abstractMethods.values(), method, methodsToAdd, Collections.EMPTY_MAP, true); } } addCovariantMethods(sn.redirect(), declaredMethods, abstractMethods, methodsToAdd, genericsSpec); } ClassNode[] interfaces = classNode.getInterfaces(); for (ClassNode anInterface : interfaces) { List interfacesMethods = anInterface.getMethods(); Map genericsSpec = createGenericsSpec(anInterface, oldGenericsSpec); storeMissingCovariantMethods(declaredMethods, methodsToAdd, genericsSpec, interfacesMethods); addCovariantMethods(anInterface, declaredMethods, abstractMethods, methodsToAdd, genericsSpec); } }
node.visitContents(this); checkForDuplicateMethods(node); addCovariantMethods(node);
addCovariantMethods(classNode, declaredMethods, abstractMethods, methodsToAdd, genericsSpec);
addCovariantMethods(classNode, declaredMethods, abstractMethods, methodsToAdd, genericsSpec);
addCovariantMethods(classNode, declaredMethods, abstractMethods, methodsToAdd, genericsSpec);
addCovariantMethods(sn.redirect(),declaredMethods,abstractMethods,methodsToAdd,genericsSpec); storeMissingCovariantMethods(interfacesMethods,method,methodsToAdd,genericsSpec); addCovariantMethods(interfaces[i],declaredMethods,abstractMethods,methodsToAdd,genericsSpec);
addCovariantMethods(sn.redirect(),declaredMethods,abstractMethods,methodsToAdd,genericsSpec); storeMissingCovariantMethods(interfacesMethods,method,methodsToAdd,genericsSpec); addCovariantMethods(interfaces[i],declaredMethods,abstractMethods,methodsToAdd,genericsSpec);
addCovariantMethods(sn.redirect(),declaredMethods,abstractMethods,methodsToAdd,genericsSpec); storeMissingCovariantMethods(interfacesMethods,method,methodsToAdd,genericsSpec); addCovariantMethods(interfaces[i],declaredMethods,abstractMethods,methodsToAdd,genericsSpec);
addCovariantMethods(classNode, declaredMethods, abstractMethods, methodsToAdd, genericsSpec);
addCovariantMethods(sn.redirect(), declaredMethods, abstractMethods, methodsToAdd, genericsSpec); storeMissingCovariantMethods(interfacesMethods, method, methodsToAdd, genericsSpec); addCovariantMethods(anInterface, declaredMethods, abstractMethods, methodsToAdd, genericsSpec);
node.getObjectInitializerStatements().clear(); node.visitContents(this); addCovariantMethods(node);
checkReturnInObjectInitializer(node.getObjectInitializerStatements()); node.getObjectInitializerStatements().clear(); addCovariantMethods(node); node.visitContents(this);
checkReturnInObjectInitializer(node.getObjectInitializerStatements()); node.getObjectInitializerStatements().clear(); addCovariantMethods(node); node.visitContents(this);
checkReturnInObjectInitializer(node.getObjectInitializerStatements()); node.getObjectInitializerStatements().clear(); addCovariantMethods(node); node.visitContents(this);