private void startChildWorkflow(final StartChildWorkflowExecutionParameters parameters,
final Settable<StartChildWorkflowReply> reply, final Settable<String> result) {
String workflowId = parameters.getWorkflowId();
WorkflowType workflowType = parameters.getWorkflowType();
WorkflowExecution childExecution = new WorkflowExecution();
final String runId = UUID.randomUUID().toString();
//TODO: Validate parameters against registration options to find missing timeouts or other options
try {
DecisionContext parentDecisionContext = decisionContextProvider.getDecisionContext();
if (workflowId == null) {
workflowId = decisionContextProvider.getDecisionContext().getWorkflowClient().generateUniqueId();
}
childExecution.setWorkflowId(workflowId);
childExecution.setRunId(runId);
final GenericActivityClient activityClient = parentDecisionContext.getActivityClient();
final WorkflowClock workflowClock = parentDecisionContext.getWorkflowClock();
WorkflowDefinitionFactory factory;
if (factoryFactory == null) {