private void RemoveHookEventHandler(HookType type, Delegate value) { BaseHook key = GetHookObjectForType(type); Events.RemoveHandler(key, value); if (Events[key] == null) key.Dispose(); hooks.Remove(key); }