protected virtual void _Remove() { if (!Removed) { Removed = true; State = State.Ended; Impl.Remove(); } }