sclass ChessOCR_BoardsFound { sclass ByFEN { double bestScore; Set> boardPositions = synchroSet(); } Map byFEN = synchroMap(); transient L onChange = synchroList(); // L void add(ChessOCR_RecognizedBoard b) { if (b == null || b.fen == null) ret; ByFEN bf = getOrCreate ByFEN(byFEN, b.fen); if (b.score <= bf.bestScore) ret; bf.bestScore = max(bf.bestScore, b.score); if (b.rectInOriginalImage != null) bf.boardPositions.add(pair(b.rectInOriginalImage, b.score)); pcallFAll(onChange, b.fen); } }