docs: public Object invokeSetterMethodOnTarget( String javaPropertyName,
                                                Object target,
                                                Object argument )
          throws NoSuchMethodException, SecurityException, IllegalArgumentException, IllegalAccessException,
          InvocationTargetException {
          String[] methodNamesArray = findMethodNames("set" + javaPropertyName);
          try {
              return invokeBestMethodOnTarget(methodNamesArray, target, argument);
          } catch (NoSuchMethodException e) {
              // If the argument is an Object[], see if it works with an array of whatever type the actual value is ...
              if (argument instanceof Object[]) {
                  Object[] arrayArg = (Object[])argument;
                  for (Object arrayValue : arrayArg) {
                      if (arrayValue == null) continue;
                      Class<?> arrayValueType = arrayValue.getClass();
                      // Create an array of this type ...
                      Object typedArray = Array.newInstance(arrayValueType, arrayArg.length);
                      Object[] newArray = (Object[])typedArray;
                      for (int i = 0; i != arrayArg.length; ++i) {
                          newArray[i] = arrayArg[i];
                      }
                      // Try to execute again ...
                      try {
                          return invokeBestMethodOnTarget(methodNamesArray, target, typedArray);
                      } catch (NoSuchMethodException e2) {
                          // Throw the original exception ...
                          throw e;
                      }
                  }
              }
              throw e;
          }
      }