dispose method
Releases the dirty-event stream. The holder typically lives for the process lifetime, but tests that construct it directly should call this so the subscription doesn't outlive the test.
Implementation
@mustCallSuper
Future<void> dispose() async {
await _dirtySub.cancel();
await _dirtyController.close();
}