code: private static <T> ParTask<T> vapar(final Task<?>... tasks) {
      final List<Task<T>> taskList = new ArrayList<Task<T>>(tasks.length);
      for (Task<?> task : tasks) {
        @SuppressWarnings("unchecked")
        final Task<T> typedTask = (Task<T>) task;
        taskList.add(typedTask);
      }
      return par(taskList);
    }
docs: Creates a new task that will run each of the supplied tasks in parallel (e.g.
  tasks[0] can be run at the same time as task2). <strong>This method is not
  type-safe</strong> - prefer one of the {@code par} options when possible.
  <p>
  When all tasks complete successfully, you can use
  {@link com.linkedin.parseq.ParTask#get()} to get a list of the results. If
  at least one task failed, then this task will also be marked as failed. Use
  {@link com.linkedin.parseq.ParTask#getTasks()} or
  {@link com.linkedin.parseq.ParTask#getSuccessful()} to get results in this
  case.
  
  @param tasks the tasks to run in parallel
  @return a new task that will run the given tasks in parallel