	@Test
	public void testConversion() {

		final SimulationTreeTableToModelConverter converter = new SimulationTreeTableToModelConverter();
		final BPMNProcess process = converter.convertTreeToModel(this.tree);
		Assert.assertTrue("Should be 14, but was " + process.getBPMNElementsWithOutSequenceFlows().size(), process.getBPMNElementsWithOutSequenceFlows().size() == 14);
		Assert.assertNotNull(process.getStartEvent());
		final BPMNStartEvent startEvent = process.getStartEvent();
		Assert.assertTrue(startEvent.getSuccessors().size() == 1);
		Assert.assertTrue(startEvent.getSuccessors().iterator().next() instanceof BPMNXORGateway);
		final BPMNXORGateway xor1 = (BPMNXORGateway) startEvent.getSuccessors().iterator().next();
		List<AbstractBPMNElement> successors = SetUtil.asList(xor1.getSuccessors());
		Assert.assertTrue(successors.size() == 2);
		Assert.assertTrue(successors.get(0) instanceof BPMNTask);
		Assert.assertTrue(successors.get(1) instanceof BPMNTask);
		Assert.assertTrue(successors.get(0).getSuccessors().iterator().next() instanceof BPMNXORGateway);
		final BPMNXORGateway xor2 = (BPMNXORGateway) successors.get(0).getSuccessors().iterator().next();

		Assert.assertTrue(xor2.getSuccessors().size() == 1);
		Assert.assertTrue("Should be BPMNAndGateway, but was " + xor2.getSuccessors().iterator().next(), xor2.getSuccessors().iterator().next() instanceof BPMNAndGateway);
		final BPMNAndGateway and1 = (BPMNAndGateway) xor2.getSuccessors().iterator().next();
		Assert.assertTrue(and1.getSuccessors().size() == 2);
		successors = SetUtil.asList(and1.getSuccessors());
		for (final AbstractBPMNElement successor : successors) {
			if (successor instanceof BPMNTask) {
				final BPMNTask task = (BPMNTask) successor;
				if (task.getMonitoringPoints().get(0).getEventType().equals(this.e1)) {
					Assert.assertTrue(task.getSuccessors().iterator().next() instanceof BPMNTask);
				}
			} else {
				Assert.assertTrue(successor instanceof BPMNXORGateway);
				final BPMNXORGateway loopEntry = (BPMNXORGateway) successor;
				Assert.assertTrue(loopEntry.getPredecessors().size() == 2);
				Assert.assertTrue(loopEntry.getSuccessors().size() == 1);
				Assert.assertTrue(loopEntry.getSuccessors().iterator().next() instanceof BPMNTask);
				final BPMNTask loopTask1 = (BPMNTask) loopEntry.getSuccessors().iterator().next();
				Assert.assertTrue(loopTask1.getSuccessors().size() == 1);
				Assert.assertTrue(loopTask1.getSuccessors().iterator().next() instanceof BPMNTask);
				final BPMNTask loopTask2 = (BPMNTask) loopTask1.getSuccessors().iterator().next();
				Assert.assertTrue(loopTask2.getSuccessors().size() == 1);
				Assert.assertTrue(loopTask2.getSuccessors().iterator().next() instanceof BPMNXORGateway);
				final BPMNXORGateway loopExit = (BPMNXORGateway) loopTask2.getSuccessors().iterator().next();
				Assert.assertTrue(loopExit.getSuccessors().size() == 2);
				for (final AbstractBPMNElement loopExitSuccessor : loopExit.getSuccessors()) {
					if (loopExitSuccessor instanceof BPMNAndGateway) {
						Assert.assertTrue(loopExitSuccessor.getPredecessors().size() == 2);
						Assert.assertTrue(loopExitSuccessor.getSuccessors().size() == 1);
						Assert.assertTrue(loopExitSuccessor.getSuccessors().contains(process.getEndEvent()));
					}
				}
			}
		}
	}