void (PsiClass aClass, boolean skipImplemented, Map<MethodSignature, PsiMethod> abstracts, Map<MethodSignature, PsiMethod> finals, Map<MethodSignature, PsiMethod> concretes, HierarchicalMethodSignature signature, PsiMethod method) { PsiUtilCore.ensureValid(method); if (GrModifierListUtil.hasCodeModifierProperty(method, PsiModifier.STATIC) || GrModifierListUtil.hasCodeModifierProperty(method, PsiModifier.FINAL) || GrModifierListUtil.hasCodeModifierProperty(method, PsiModifier.PRIVATE)) return; PsiClass hisClass = method.getContainingClass(); if (hisClass == null) return; // filter non-immediate super constructors if (method.isConstructor() && (!aClass.isInheritor(hisClass, false) || aClass instanceof PsiAnonymousClass || aClass.isEnum())) { return; } // filter already implemented if (skipImplemented) { PsiMethod implemented = MethodSignatureUtil.findMethodBySignature(aClass, signature, false); if (implemented != null && !(implemented instanceof GrTraitMethod) && !(implemented instanceof GrLightMethodBuilder)) { return; } } if (method.hasModifierProperty(PsiModifier.FINAL)) { finals.put(signature, method); return; } Map<MethodSignature, PsiMethod> map = method.hasModifierProperty(PsiModifier.ABSTRACT) ? abstracts : concretes; fillMap(signature, method, map); if (isDefaultMethod(method)) { fillMap(signature, method, concretes); } }