void ( @NotNull PsiMethodCallExpression expression) { super.visitMethodCallExpression(expression); final PsiReferenceExpression methodExpression = expression.getMethodExpression(); @NonNls final String methodName = methodExpression.getReferenceName(); if (!"start".equals(methodName)) { return; } final PsiMethod method = expression.resolveMethod(); if (method == null) { return; } final PsiParameterList parameterList = method.getParameterList(); if (!parameterList.isEmpty()) { return; } final PsiClass methodClass = method.getContainingClass(); if (methodClass == null || !InheritanceUtil.isInheritor(methodClass, "java.lang.Thread")) { return; } final PsiClass containingClass = ClassUtils.getContainingClass(expression); if (containingClass == null || containingClass.hasModifierProperty( PsiModifier.FINAL)) { return; } registerMethodCallError(expression); }