sclass DoneFlag extends Flag { transient volatile O error; void done() { raise(); } void done(O error) { this.error = error; raise(); } bool hasError() { ret error != null; } bool isDone() { ret isUp(); } }