}
protected void handleSeparatePaths(List<SequenceFlow> outgoing, PathContextManager manager, BoundaryEvent bEvent) {
List<PathContext> locked = new ArrayList<PathContext>();
PathContext context = manager.getContextFromStack();
for (SequenceFlow seqFlow : outgoing) {
FlowElement target = seqFlow.getTargetRef();
PathContext separatePath = manager.cloneGiven(context);
// replace boundary event with a wrapper if sequence flow does not go out if it
if (!seqFlow.getSourceRef().equals(bEvent)) {
separatePath.removePathElement(bEvent);
separatePath.addPathElement(new WrappedBoundaryEvent(bEvent));
}
manager.addToPath(seqFlow, separatePath);
super.handle(target, manager);
separatePath.setLocked(true);
locked.add(separatePath);
}
// unlock