private static void addActivities( Set<TransitionTarget> visited, List<TransitionTarget> targets, IActivity activity, TransitionOptions options, boolean forward, Stack<TransitionStep> steps) { ModelElementList<ITransition> transitions = forward ? activity.getOutTransitions() : activity.getInTransitions(); JoinSplitType jsType = forward ? activity.getSplitType() : activity.getJoinType(); if (JoinSplitType.And == jsType && transitions.size() > 1) { IActivity target = consume( activity, asList(transitions), CollectionUtils.<ITransition>newHashSet(), forward, options.areLoopsAllowed()); if (target != null) { addActivity(visited, targets, target, options, forward, steps); } } else { for (ITransition transition : transitions) { IActivity target = forward ? transition.getToActivity() : transition.getFromActivity(); jsType = forward ? target.getJoinType() : target.getSplitType(); if (JoinSplitType.And != jsType) { addActivity(visited, targets, target, options, forward, steps); } } } }