protected virtual void Dispose(bool disposing) { if (IsDeleted) { return; } if (disposing) { IsDeleted = true; OnDeleted(); } Runtime.UnregisterObject(handle); }