@VisibleForTesting
    TaskModel createDynamicForkTask(
            TaskMapperContext taskMapperContext, List<WorkflowTask> dynForkTasks) {
        TaskModel forkDynamicTask = taskMapperContext.createTaskModel();
        forkDynamicTask.setTaskType(TaskType.TASK_TYPE_FORK);
        forkDynamicTask.setTaskDefName(TaskType.TASK_TYPE_FORK);
        forkDynamicTask.setStartTime(System.currentTimeMillis());
        forkDynamicTask.setEndTime(System.currentTimeMillis());
        List<String> forkedTaskNames =
                dynForkTasks.stream()
                        .map(WorkflowTask::getTaskReferenceName)
                        .collect(Collectors.toList());
        forkDynamicTask.getInputData().put("forkedTasks", forkedTaskNames);
        forkDynamicTask
                .getInputData()
                .put(
                        "forkedTaskDefs",
                        dynForkTasks); // TODO: Remove this parameter in the later releases
        forkDynamicTask.setStatus(TaskModel.Status.COMPLETED);
        return forkDynamicTask;
    }
This method creates a FORK task and adds the list of dynamic fork tasks keyed by
"forkedTaskDefs" and their names keyed by "forkedTasks" into {@link TaskModel#getInputData()}

@param taskMapperContext: The {@link TaskMapperContext} which wraps workflowTask, workflowDef
    and workflowModel
@param dynForkTasks: The list of dynamic forked tasks, the reference names of these tasks
    will be added to the forkDynamicTask
@return A new instance of {@link TaskModel} representing a {@link TaskType#TASK_TYPE_FORK}
core/src/main/java/com/netflix/conductor/core/execution/mapper/ForkJoinDynamicTaskMapper.java