docs: @Override
      public void setParameters(Object[] args) {
          //d470721 throw IllegalStateException if called from a
          // lifecycle callback interceptor method. ivMethod is only
          // set for AroundInvoke methods, so ivMethod being null
          // indicates a lifecycle callback interceptor method.
          if (ivMethod == null && !ivIsAroundConstruct) {
              throw new IllegalStateException("InvocationContext.setParameter can not be called by lifecycle callback methods");
          }
  
          Constructor<?> con = getConstructor();
          Class<?>[] parmTypes = con != null ? con.getParameterTypes() : ivMethod.getParameterTypes();
  
          String debug = con != null ? "constructor: " + con.getName() : "business method: " + ivMethod.getName();
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "setParameters for " + debug);
          }
  
          int n = parmTypes.length;
          if (args == null) // d386227
          {
              if (n > 0) {
                  throw new IllegalArgumentException("null not valid as argument for setParameters method.");
              }
          } else {
              if (args.length != n) {
                  throw new IllegalArgumentException("wrong number of parameters for method being invoked.");
              } else {
                  for (int i = 0; i < n; ++i) {
                      Class<?> parmType = parmTypes[i];
                      if (parmType.isPrimitive() == false) // d367572.6
                      {
                          if (args[i] != null && // d611096
                              (!parmType.isInstance(args[i]))) // d386227
                          {
                              throw new IllegalArgumentException("wrong data type for parameter " + (i + 1));
                          }
                      } else {
                          // d367572.6
                          // Verify argument corresponds to correct java primitive type.
                          if ((parmType == Integer.TYPE) && (!(args[i] instanceof Integer))) {
                              throw new IllegalArgumentException("parameter " + (i + 1) + " is a "
                                                                 + args[i].getClass().getName()
                                                                 + ", but it is required to be a Integer");
                          } else if ((parmType == Long.TYPE) && (!(args[i] instanceof Long))) {
                              throw new IllegalArgumentException("parameter " + (i + 1) + " is a "
                                                                 + args[i].getClass().getName()
                                                                 + ", but it is required to be a Long");
                          } else if ((parmType == Short.TYPE) && (!(args[i] instanceof Short))) {
                              throw new IllegalArgumentException("parameter " + (i + 1) + " is a "
                                                                 + args[i].getClass().getName()
                                                                 + ", but it is required to be a Short");
                          } else if ((parmType == Boolean.TYPE) && (!(args[i] instanceof Boolean))) {
                              throw new IllegalArgumentException("parameter " + (i + 1) + " is a "
                                                                 + args[i].getClass().getName()
                                                                 + ", but it is required to be a Boolean");
                          } else if ((parmType == Byte.TYPE) && (!(args[i] instanceof Byte))) {
                              throw new IllegalArgumentException("parameter " + (i + 1) + " is a "
                                                                 + args[i].getClass().getName()
                                                                 + ", but it is required to be a Byte");
                          } else if ((parmType == Character.TYPE) && (!(args[i] instanceof Character))) {
                              throw new IllegalArgumentException("parameter " + (i + 1) + " is a "
                                                                 + args[i].getClass().getName()
                                                                 + ", but it is required to be a Character");
                          } else if ((parmType == Float.TYPE) && (!(args[i] instanceof Float))) {
                              throw new IllegalArgumentException("parameter " + (i + 1) + " is a "
                                                                 + args[i].getClass().getName()
                                                                 + ", but it is required to be a Float");
                          } else if ((parmType == Double.TYPE) && (!(args[i] instanceof Double))) {
                              throw new IllegalArgumentException("parameter " + (i + 1) + " is a "
                                                                 + args[i].getClass().getName()
                                                                 + ", but it is required to be a Double");
                          }
                      }
                  }
  
                  // All of the arguments are of the correct data type, so set the parameters.
                  ivParameters = args;
                  ivParametersModified = true; //LIDB3294-41
  
              }
          }
      }