sclass G22ForegroundFinder { // input settable L allRegions; // internal gettable Rect borderRect; // output Set foregroundRegions; Set foregroundRegions() { run(); ret foregroundRegions; } run { if (foregroundRegions != null) ret; borderRect(mergeRects(map(allRegions, r -> r.getBounds()))); for (allRegions) foregroundRegions = new LinkedHashSet; } swappable bool isForegroundRegion(IImageRegion region) { throw unimplemented(); } }