private @Nullable PsiMember pushConstructorArguments(PsiConstructorCall call) {
    PsiExpressionList args = call.getArgumentList();
    PsiMember ctr = call.resolveConstructor();
    PsiSubstitutor substitutor = PsiSubstitutor.EMPTY;
    if (call instanceof PsiNewExpression newExpression) {
      if (ctr == null) {
        PsiJavaCodeReferenceElement classRef = newExpression.getClassReference();
        ctr = classRef == null ? null : ObjectUtils.tryCast(classRef.resolve(), PsiClass.class);
      }
      substitutor = call.resolveMethodGenerics().getSubstitutor();
    }
    if (args != null) {
      PsiExpression[] arguments = args.getExpressions();
      PsiParameter[] parameters = ctr instanceof PsiMethod method ? method.getParameterList().getParameters() : null;
      for (int i = 0; i < arguments.length; i++) {
        PsiExpression argument = arguments[i];
        argument.accept(this);
        if (parameters != null && i < parameters.length) {
          generateBoxingUnboxingInstructionFor(argument, substitutor.substitute(parameters[i].getType()));
        }
      }
      foldVarArgs(call, parameters);
    }
    return ctr;
  }
private @Nullable PsiMember pushConstructorArguments(PsiConstructorCall call)