private static void addActivities( Set<TransitionTarget> visited, List<TransitionTarget> targets, IActivityInstance ai, TransitionOptions options, boolean forward, Stack<TransitionStep> steps) { if (ai != null) { steps.push(TransitionTargetFactory.createTransitionStep(ai)); // add activities from current process definition addActivities(visited, targets, ai.getActivity(), options, forward, steps); // step up into the calling process - starting activity cannot be a relocation target if (options.isTransitionOutOfSubprocessesAllowed()) { addActivities( visited, targets, ai.getProcessInstance().getStartingActivityInstance(), options, forward, steps); } steps.pop(); } }