sclass VMBusListenerWithLivelinessCheck implements IF2 { Set listeners; // where we were added IF0 livelinessCheck; O listener; bool verbose; *(Set *listeners, IF0 *livelinessCheck, O *listener) {} *(Set *listeners, IF0 *livelinessCheck, IVF2 *listener) {} public O get(S msg, O arg) { if (livelinessCheck != null && !livelinessCheck.get()) { if (verbose) print VMBusListenerWithLivelinessCheck("Removing VM bus listener"); remove(listeners, this); } ret callF(listener, msg, arg); } }