private void CreateTransientWorkStepsRecursively(string transientRootPath, WorkStep rootStep, string workItemId)
{
var subSteps = WorkflowRepository.GetChildWorkSteps(rootStep.Path).Where(ws => ws.Type != WorkStepType.Transient);
foreach (var childStep in subSteps)
{
var offset = childStep.Path.Remove(0, rootStep.Path.Length);
var childTransientPath = transientRootPath + offset;
var workItemClass = WorkItemClass.Combine(childStep.WorkItemClass, workItemId);
WorkflowRepository.CreateWorkStep(WorkStep.New(childTransientPath).UpdateFrom(childStep).UpdateWorkItemClass(workItemClass));
CreateTransientWorkStepsRecursively(childTransientPath, childStep, workItemId);
}
}