if (log.isDebugEnabled()) log.debug("There are changes.");
    private void do_execute(BlackboardService bbs)    {	if (!sub.hasChanged()) {	    if (log.isDebugEnabled())		log.debug("No Frame changes");	    return;	}	if (log.isDebugEnabled())	    log.debug("There are changes.");	Enumeration en;			// New Frames	en = sub.getAddedList();	FrameSet frameSet = null;	while (en.hasMoreElements()) {	    Frame frame = (Frame) en.nextElement();	    if (frameSet == null)		frameSet = frame.getFrameSet();	    if (log.isDebugEnabled()) {		log.debug("Observed added "+frame);	    }	    // Handle new Frame	    frameCache.add(frame);	    newFramesPresent = true;	}		if (helper == null || newFramesPresent) {	    if (log.isDebugEnabled()) 		log.debug("setting frames on the display");	    helper = new FrameHelper(frameCache, frameSet);	    pluginDisplay.setFrameHelper(helper);	    newFramesPresent = false;	}					// Changed Frames	en = sub.getChangedList();	ArrayList transitions = new ArrayList();	while (en.hasMoreElements()) {	    Frame frame = (Frame) en.nextElement();	    if (log.isDebugEnabled()) {		log.debug("Observed changed "+frame);	    }	    Collection changes = sub.getChangeReports(frame);	    // A collection of Frame.Change instances.	    if (changes != null) {		if (frame.isa("relationship"))  		    transitions.addAll(processRelationshipChanges(frame, changes.iterator()));	    }	}	if (transitions.size() > 0) {	    //pluginDisplay.updateFrameView();	    pluginDisplay.tickEventOccured(new TickEvent(this, tickNumber++, TICK_EVENT_LABEL, transitions));    }	// Remove Frames.  Won't happen.	en = sub.getRemovedList();	while (en.hasMoreElements()) {	    Frame frame = (Frame) en.nextElement();	    if (log.isDebugEnabled()) {					log.debug("Observed removed "+frame);	    }	}    }