void (@NotNull PsiMethodCallExpression expression) { super.visitMethodCallExpression(expression); if (!MethodCallUtils.isCallDuringObjectConstruction(expression)) { return; } final PsiReferenceExpression methodExpression = expression.getMethodExpression(); final PsiExpression qualifier = methodExpression.getQualifierExpression(); if (qualifier != null) { if (!(qualifier instanceof PsiThisExpression) && !(qualifier instanceof PsiSuperExpression)) { return; } } final PsiMethod calledMethod = (PsiMethod)methodExpression.resolve(); if (calledMethod == null || calledMethod.isConstructor() || !calledMethod.hasModifierProperty(PsiModifier.ABSTRACT)) { return; } final PsiClass calledMethodClass = calledMethod.getContainingClass(); if (calledMethodClass == null) { return; } final PsiClass containingClass = PsiTreeUtil.getParentOfType(expression, PsiClass.class); if (!calledMethodClass.equals(containingClass)) { return; } registerMethodCallError(expression); }