@Nullable
  public static PsiMethodCallExpression findThisOrSuperCallInConstructor(@NotNull PsiMethod constructor) {
    if (!constructor.isConstructor()) return null;
    return CachedValuesManager.getCachedValue(constructor, () -> {
      PsiCodeBlock body = constructor.getBody();
      if (body == null) return new CachedValueProvider.Result<>(null, PsiModificationTracker.MODIFICATION_COUNT);
      Ref<PsiMethodCallExpression> result = new Ref<>();
      PsiTreeUtil.processElements(body, PsiMethodCallExpression.class, call -> {
        if (isConstructorCall(call) && PsiTreeUtil.getParentOfType(call, PsiMethod.class) == constructor) {
          result.set(call);
          return false;
        }
        return true;
      });
      return new CachedValueProvider.Result<>(result.get(), PsiModificationTracker.MODIFICATION_COUNT);
    });
  }
@Nullable
  public static PsiMethodCallExpression findThisOrSuperCallInConstructor(@NotNull PsiMethod constructor)