public static <C, T> DaemonTask<C, T> submitTask(Supplier<DaemonResponse<T>> taskSupplier, String name, long timeout) { DaemonTask task = getTask(); DaemonTask<C, T> result; if (task != null) { result = task.spawnChild(taskSupplier, name, timeout); log.info(task + " spawned child " + result); } else { result = TaskRepository.submitTask(taskSupplier, name, timeout); } return result; }