private List<ProcessNode> getNextActivitiesInAndBlock(ActivityNode lastMatchedNode) {
		List<ProcessNode> nextNodes = new ArrayList<ProcessNode>();
		
		AndSplit matchingAndSplit = model.getContainingAndBlock(lastMatchedNode);
		if (matchingAndSplit == null) {
			return nextNodes;
		}
		
		for (ProcessEdge edge : model.outgoingEdgesOf(matchingAndSplit)) {	
			List<ProcessNode> branchNodes = new ArrayList<ProcessNode>();
			
			ProcessNode node = model.getEdgeTarget(edge);
			boolean branchContinues = true;
			while (branchContinues && !(node instanceof AndJoin)) {
				if (node.equals(lastMatchedNode)) {
					branchNodes.clear();
					for (ProcessEdge nextEdge : model.outgoingEdgesOf(node)) {
						branchNodes.add(model.getEdgeTarget(nextEdge));
					}
					branchContinues = false;
				} else {
					branchNodes.add(node);
					Set<ProcessEdge> nextEdges = model.outgoingEdgesOf(node);
					if (nextEdges.size() > 1) {
						throw new UnsupportedOperationException("Process models currently cannot contain " +
								"control connectors in And-blocks.");
					}
					Iterator<ProcessEdge> edgeIterator = nextEdges.iterator();
					if (edgeIterator.hasNext()) {
						node = model.getEdgeTarget(edgeIterator.next());
					} else {
						branchContinues = false;
					}
				}
			}
			nextNodes.addAll(branchNodes);			
		}

		return nextNodes;
	}