@Test
	public void nestedSplit2() {
		js = parse("<jobA & <jobB & jobC> & jobD>");
		assertEquals("<jobA & <jobB & jobC> & jobD>", js.getJobDefinitionText());
		assertEquals("<jobA & <jobB & jobC> & jobD>", js.stringify());
		JobNode jn = js.getJobNode();

		assertTrue(jn.isSplit());
		assertEquals(3, jn.getSeriesLength());

		JobNode j1 = jn.getSeriesElement(0);
		assertTrue(j1.isJobDescriptor());
		assertEquals("jobA", j1.stringify());

		JobNode j2 = jn.getSeriesElement(1);
		assertTrue(j2.isSplit());
		assertEquals(2, j2.getSeriesLength());

		JobNode j3 = jn.getSeriesElement(2);
		assertTrue(j3.isJobDescriptor());
		assertEquals("jobD", j3.stringify());
	}
Parse job specifications and verify either the correct abstract syntax tree is produced or the current exception comes out.
The parser does no semantic validation, it is purely syntax checking.

@author Andy Clement
spring-xd-dirt/src/test/java/org/springframework/xd/dirt/job/dsl/JobParserTests.java