boolean (@Nullable PsiElement element) { if (!(element instanceof PsiNewExpression newExpression)) return false; PsiJavaCodeReferenceElement reference = newExpression.getClassOrAnonymousClassReference(); if (reference == null) return false; PsiElement qualifier = reference.getQualifier(); PsiElement memberName = reference.getReferenceNameElement(); if (!(qualifier instanceof PsiJavaCodeReferenceElement referenceElement) || memberName == null) return false; PsiClass clazz = tryCast(referenceElement.resolve(), PsiClass.class); if (clazz == null) return false; if (newExpression.getArgumentList() == null) { PsiField field = clazz.findFieldByName(memberName.getText(), true); return field != null && field.hasModifierProperty(PsiModifier.STATIC); } PsiMethod[] methods = clazz.findMethodsByName(memberName.getText(), true); for (PsiMethod method : methods) { if (method.hasModifierProperty(PsiModifier.STATIC)) { PsiClass containingClass = method.getContainingClass(); assert containingClass != null; if (!containingClass.isInterface() || containingClass == clazz) { // a static method in an interface is not resolvable from its subclasses return true; } } } return false; }