!7 sclass ImagePreview extends DynSCP { new DynModuleRef mate; transient Image shownImage; JComponent visualize2() { Image image = shownImage; if (image == null) ret jcenteredlabel("Need image"); ret jimage(image); } Image imageFromMate() { ret castCall(mate!, 'getImage); } void update { lock lock; // notice mate gone away if (mate! != null && !dm_moduleStillThere(mate!)) { mate.set(null); setField(shownImage := null); revisualize2(); } // find new mate if (mate! == null) if (setField(mate := DynModuleRef(dm_findMateOfType(this, 'ImageInfo)))) revisualize2(); if (setField(shownImage := imageFromMate())) revisualize2(); } }