docs: public static Callable<?> serializableCallable(@SuppressWarnings("rawtypes") 
                  Constructor<? extends Callable> constructorToUse, Object... args)
              throws IllegalArgumentException {
          if (args.length > (int)Byte.MAX_VALUE) {
              throw new IllegalArgumentException(
                  "Max number of arguments exceeded: " + Byte.MAX_VALUE);
          }
          Class<?>[] params = constructorToUse.getParameterTypes();
          
          if (params.length != args.length) {
              throw new IllegalArgumentException("Number of arguments ["
                      + args.length + "] doesn't match number of arguments for "
                      + "constructor [" + params.length + "]");
          }
          
          for (int i = 0; i < args.length; ++i) {
              Object arg = args[i];
              if (arg instanceof Serializable ||
                      arg instanceof Streamable) {
                  Class<?> classArg = params[i];
                  
                  if (!classArg.isInstance(arg)) {
                      throw new IllegalArgumentException("Argument [" + arg + 
                          "] is not an instance of [" + classArg + "]");
                  }
              }
              else {
                  throw new IllegalArgumentException(
                      "Argument is not serializable, externalizable or streamable: " + arg);
              }
          }
          @SuppressWarnings("unchecked")
          Class<? extends Callable<?>> classToUse = 
              (Class<? extends Callable<?>>)constructorToUse.getDeclaringClass();
          Constructor<?>[] constructors = classToUse.getConstructors();
          byte constructorPosition = -1;
          for (int i = 0; i < constructors.length; ++i) {
              Constructor<?> constructor = constructors[i];
              if (constructor.equals(constructorToUse)) {
                  if (i > (int)Byte.MAX_VALUE) {
                      throw new IllegalArgumentException(
                          "Constructor position in array cannot be higher than "
                                  + Byte.MAX_VALUE);
                  }
                  constructorPosition = (byte)i;
              }
          }
          if (constructorPosition == -1) {
              throw new IllegalArgumentException(
                  "Constructor was not found in public constructor array on class");
          }
          return new StreamableCallable(classToUse, constructorPosition, args);
      }