@Nullable
  public static String findObjectExpression(@NotNull PsiReferenceExpression reference,
                                            @NotNull PsiMember member,
                                            @NotNull PsiClass outerClass,
                                            @NotNull PsiMethodCallExpression generatedCall,
                                            @NotNull PsiElementFactory elementFactory) {
    if (member.hasModifierProperty(PsiModifier.STATIC)) {
      return null;
    }

    PsiExpression qualifierExpression = reference.getQualifierExpression();
    if (qualifierExpression != null) {
      PsiType expressionType = qualifierExpression.getType();
      return expressionType == null ? null : qualifierExpression.getText();
    }

    JavaResolveResult resolveResult = reference.advancedResolve(false);
    PsiElement resolveScope = resolveResult.getCurrentFileResolveScope();
    if (resolveScope instanceof PsiClass) {
      return handleThisReference(reference, (PsiClass)resolveScope, outerClass, generatedCall, elementFactory);
    }

    return null;
  }
@Nullable
  public static String findObjectExpression(@NotNull PsiReferenceExpression reference,
                                            @NotNull PsiMember member,
                                            @NotNull PsiClass outerClass,
                                            @NotNull PsiMethodCallExpression generatedCall,
                                            @NotNull PsiElementFactory elementFactory)