internal void Dispose() { if (Interlocked.Increment(ref _dispose) == 1) { _parent.Dispose(_source); } }