@Contract(pure = true)
  public static boolean isCallDuringObjectConstruction(PsiMethodCallExpression expression) {
    PsiExpression qualifier = expression.getMethodExpression().getQualifierExpression();
    if (qualifier != null && !(qualifier instanceof PsiQualifiedExpression)) {
      return false;
    }
    final PsiMember member = PsiTreeUtil.getParentOfType(expression, PsiMember.class, true, PsiClass.class, PsiLambdaExpression.class);
    if (member == null) {
      return false;
    }
    final PsiClass containingClass = member.getContainingClass();
    if (containingClass == null || containingClass.hasModifierProperty(PsiModifier.FINAL)) {
      return false;
    }
    if (member instanceof PsiClassInitializer || member instanceof PsiField) {
      return !member.hasModifierProperty(PsiModifier.STATIC);
    }
    if (member instanceof PsiMethod method) {
      if (method.isConstructor()) {
        return true;
      }
      if (CloneUtils.isClone(method)) {
        return true;
      }
      if (MethodUtils.simpleMethodMatches(method, null, "void", "readObject", "java.io.ObjectInputStream")) {
        return true;
      }
      return MethodUtils.simpleMethodMatches(method, null, "void", "readObjectNoData");
    }
    return false;
  }
@Contract(pure = true)
  public static boolean isCallDuringObjectConstruction(PsiMethodCallExpression expression)