sclass Lowest { A best; double score; transient O onChange; bool isNewBest(double score) { ret best == null || score < this.score; } double bestScore() { ret best == null ? Double.NaN : score; } float floatScore() { ret best == null ? Float.NaN : (float) score; } bool put(A a, double score) { if (a != null && isNewBest(score)) { best = a; this.score = score; pcallF(onChange); ret true; } ret false; } A get() { ret best; } bool has() { ret best != null; } }