DataFrame parent = child_cache.get(rframe);
DataFrame parent = parent_cache.get(rframe);
    public void valueUpdated(DataFrame frame, String slot, Object value) {	if (frame instanceof RelationFrame) {	    RelationFrame rframe = (RelationFrame) frame;	    synchronized (relation_lock) {		if (slot.startsWith("child")) {		    DataFrame child = child_cache.get(rframe);		    child_cache.remove(rframe);		    Set<RelationFrame> rframes = inverse_child_cache.get(child);		    rframes.remove(rframe);		} else if (slot.startsWith("parent")) {		    DataFrame parent = child_cache.get(rframe);		    parent_cache.remove(frame);		    Set<RelationFrame> rframes = inverse_child_cache.get(parent);		    rframes.remove(rframe);		}		cacheRelation(rframe);	    }	}	    	// Publish the frame itself as the change, or just a change	// record for the specific slot?	Frame.Change change = new Frame.Change(frame.getUID(), slot, value);	publishChange(frame, change);    }