public boolean oneOutgoingTransitionLeavesCompositeWithExitActions(State state){
  Set<State> sourceParentStates=new HashSet<State>(getParentStates(state));
  for (  Transition transition : state.getOutgoingTransitions()) {
    Set<State> targetParentStates=getParentStates(transition.getTarget());
    Set<State> crossedStates=new HashSet<State>(sourceParentStates);
    crossedStates.removeAll(targetParentStates);
    for (    State crossedCompositeState : crossedStates) {
      if (hasExitAction(crossedCompositeState))       return true;
    }
  }
  return false;
}

public boolean oneOutgoingTransitionLeavesCompositeWithExitActions ( State state ) { Set < State > sourceParentStates = new HashSet < State > ( getParentStates ( state ) ) ; for ( Transition transition : state . getOutgoingTransitions ( ) ) { Set < State > targetParentStates = getParentStates ( transition . getTarget ( ) ) ; Set < State > crossedStates = new HashSet < State > ( sourceParentStates ) ; crossedStates . removeAll ( targetParentStates ) ; for ( State crossedCompositeState : crossedStates ) { if ( hasExitAction ( crossedCompositeState ) ) return true ; } } return false ; }
checks if at least one of the outgoing transitions of the specified state leaves a parent composite of this state which has exit actions .
