dispose method
Discards any resources used by the object. After this is called, the object is not in a usable state and should be discarded (calls to addListener and removeListener will throw after the object is disposed).
This method should only be called by the object's owner.
Implementation
@override
@protected
@mustCallSuper
void dispose() {
super.dispose();
for (final subscription in subscriptions) {
subscription.cancel();
}
subscriptions.clear();
_nextCount = 1;
}