@Override
      public void visitMethodCallExpression(
        @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 =
          PsiUtil.getContainingClass(expression);
        if (containingClass == null ||
            containingClass.hasModifierProperty(
              PsiModifier.FINAL)) {
          return;
        }
        registerMethodCallError(expression);
      }
@Override
      public void visitMethodCallExpression(
        @NotNull PsiMethodCallExpression expression)