if (log.isDebugEnabled()) log.debug("frame "+frame+"  changed   slot="+slotName+"  value="+value+" child="+frame.getValue("child-value"));
    protected Collection processRelationshipChanges(Frame frame, Iterator changes) {	String slotName;	Object value;	ShapeGraphic child, parent;	Frame ff[];	ArrayList transitions = new ArrayList();	while (changes.hasNext()) {	    Frame.Change change = (Frame.Change) changes.next();	    // Handle change to existing frame	    slotName = change.getSlotName();	    value    = change.getValue();	    if (log.isDebugEnabled()) 		log.debug("frame "+frame+"  changed   slot="+slotName+"  value="+value+" child="+frame.getValue("child-value"));	    ff = helper.getParentAndChild(frame);	    if (log.isDebugEnabled()) 		log.debug("processRelationshipChanges parentFrame="+ff[0]+"  childFrame="+ff[1]); 	    parent = pluginDisplay.findShape(ff[0]);	    child  = pluginDisplay.findShape(ff[1]);	    if (parent == null || child == null) {		if (log.isDebugEnabled()) 		    log.debug("did not find shapes");		continue;	    }	    if (child.getParent() == null || child.getParent().getId().equals(parent.getId())) {		if (log.isDebugEnabled()) 		    log.debug("error: old parent = "+child.getParent()+" new parent="+parent+", ignoring..."); 		continue;	    }	    transitions.add(new Transition(child, child.getParent(), (ShapeContainer)parent));	} 	return transitions;    } 