@Override
    public void visitMethodCallExpression(@NotNull PsiMethodCallExpression expression) {
      super.visitMethodCallExpression(expression);
      PsiExpression outerExpression = expression;
      while (outerExpression.getParent() instanceof PsiExpression) {
        outerExpression = (PsiExpression)outerExpression.getParent();
      }
      final PsiElement parent = outerExpression.getParent();
      if (!(parent instanceof PsiExpressionList)) {
        return;
      }
      final PsiElement grandParent = parent.getParent();
      if (!(grandParent instanceof PsiCallExpression)) {
        return;
      }
      if (JavaPsiConstructorUtil.isConstructorCall(grandParent)) {
        //ignore nested method calls at the start of a constructor,
        //where they can't be extracted
        return;
      }
      if (m_ignoreFieldInitializations) {
        final PsiElement field = PsiTreeUtil.getParentOfType(expression, PsiField.class);
        if (field != null) {
          return;
        }
      }
      final PsiMethod method = expression.resolveMethod();
      if (method == null) {
        return;
      }
      if (ignoreStaticMethods || ignoreGetterCalls) {
        if (ignoreStaticMethods && method.hasModifierProperty(PsiModifier.STATIC)) {
          return;
        }
        if (ignoreGetterCalls && PropertyUtil.isSimpleGetter(method)) {
          return;
        }
      }
      registerMethodCallError(expression);
    }
@Override
    public void visitMethodCallExpression(@NotNull PsiMethodCallExpression expression)