private void storeMissingCovariantMethods(List declaredMethods, Map methodsToAdd, Map genericsSpec, List<MethodNode> methodNodeList) { for (Object declaredMethod : declaredMethods) { MethodNode method = (MethodNode) declaredMethod; if (method.isStatic()) continue; storeMissingCovariantMethods(methodNodeList, method, methodsToAdd, genericsSpec, false); } }
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); } }
MethodNode method = (MethodNode) it.next(); if (method.isStatic()) continue; storeMissingCovariantMethods(classMethods,method,methodsToAdd,genericsSpec); MethodNode method = (MethodNode) it.next(); if (method.isStatic()) continue; storeMissingCovariantMethods(abstractMethods.values(),method,methodsToAdd,Collections.EMPTY_MAP); MethodNode method = (MethodNode) it.next(); if (method.isStatic()) continue; storeMissingCovariantMethods(interfacesMethods,method,methodsToAdd,genericsSpec);
MethodNode method = (MethodNode) it.next(); if (method.isStatic()) continue; storeMissingCovariantMethods(classMethods,method,methodsToAdd,genericsSpec); MethodNode method = (MethodNode) it.next(); if (method.isStatic()) continue; storeMissingCovariantMethods(abstractMethods.values(),method,methodsToAdd,Collections.EMPTY_MAP); MethodNode method = (MethodNode) it.next(); if (method.isStatic()) continue; storeMissingCovariantMethods(interfacesMethods,method,methodsToAdd,genericsSpec);
MethodNode method = (MethodNode) it.next(); if (method.isStatic()) continue; storeMissingCovariantMethods(classMethods,method,methodsToAdd,genericsSpec); MethodNode method = (MethodNode) it.next(); if (method.isStatic()) continue; storeMissingCovariantMethods(abstractMethods.values(),method,methodsToAdd,Collections.EMPTY_MAP); MethodNode method = (MethodNode) it.next(); if (method.isStatic()) continue; storeMissingCovariantMethods(interfacesMethods,method,methodsToAdd,genericsSpec);
MethodNode method = (MethodNode) declaredMethod; if (method.isStatic()) continue; storeMissingCovariantMethods(classMethods, method, methodsToAdd, genericsSpec); MethodNode method = (MethodNode) classMethod; if (method.isStatic()) continue; storeMissingCovariantMethods(abstractMethods.values(), method, methodsToAdd, Collections.EMPTY_MAP); MethodNode method = (MethodNode) declaredMethod; if (method.isStatic()) continue; storeMissingCovariantMethods(interfacesMethods, method, methodsToAdd, genericsSpec);