release method
Implementation
@override
void release() {
if (_released) return;
_released = true;
final notice = _stream;
if (notice != null) {
notice.detach();
final streams = _group.streams!;
streams.remove(notice);
if (streams.isEmpty) _group.streams = null;
_stream = null;
}
if (--_group.scopes != 0) return;
final leases = _group.leases.values.toList(growable: false);
_group.leases.clear();
_group.exempt = null;
// Cleanup may reenter disposal or other operations. This group is already
// detached, so reentrant release cannot release any accepted use twice.
for (final lease in leases.reversed) {
lease.release();
}
}