@Override
		public Element[] walk(Element[] context, Split pjs) {
			// Producing this kind of output:
			// <split id="split1" task-executor="taskExecutor">
			//   ...
			// </split>
			Element split = doc.createElement("split");
			String splitId = "split" + (splitIdCounter++);
			split.setAttribute("task-executor", "taskExecutor");
			split.setAttribute("id", splitId);

			if (context != null) {
				// context is an array of earlier elements that should point to this one
				for (Element element : context) {
					addNextAttribute(element, "COMPLETED", splitId);
					if (!isMappingExitStatus(element, "*")) {
						addFailAttribute(element, "*");
					}
				}
			}

			currentElement.peek().appendChild(split);
			currentElement.push(split);
			Element[] inputContext = new Element[] {};//context;
			Element[] result = new Element[0];
			for (JobNode jn : pjs.getSeries()) {
				transitionNamesToElementIdsInFlow.push(new LinkedHashMap<String, String>());
				Object outputContext = walk(inputContext, jn);
				transitionNamesToElementIdsInFlow.pop();
				result = merge(result, outputContext);
			}
			currentElement.pop();
			// The only element from here to connect to the 'next thing' is the split node.
			// This means only the split gets a 'next on="*"' element.
			return new Element[] { split };
		}
Visit a job reference. Rules:
<ul>
<li>The flow surrounding element for the step is created if inside a split
</ul>
spring-xd-dirt/src/main/java/org/springframework/xd/dirt/job/dsl/JobSpecification.java