public void RegisterAbilityChain(AbilityChain abilityChain)
        {
            if (Main.Product != Product.Premium)
            {
                return;
            }
            if (HotkeysManager.Hotkeys.Any(o => o.Name == "Paws_" + abilityChain.Name))
            {
                return;
            }

            AbilityChains.Add(abilityChain);

            var hotKey = HotkeysManager.Hotkeys.FirstOrDefault(o => o.Name == abilityChain.Name);

            if (hotKey != null)
            {
                HotkeysManager.Unregister(hotKey);
            }

            var registeredHotKey = HotkeysManager.Register("Paws_" + abilityChain.Name, abilityChain.HotKey,
                                                           abilityChain.ModiferKey, KeyIsPressed);

            Log.AbilityChain(string.Format("Ability chain successfully registered ({0}: {1} + {2}).",
                                           registeredHotKey.Name, registeredHotKey.ModifierKeys, registeredHotKey.Key));
        }
        /// <summary>
        ///     The internal method used to handle hotkeys that are pressed. This will subsequently call the Trigger method
        ///     provided the various checks and balances pass.
        /// </summary>
        private void KeyIsPressed(Hotkey hotKey)
        {
            // Ability Chain Check... placing a "Paws_" prefix ensures that no other registered hotkeys are messed with in the system.
            var abilityChain = AbilityChains.SingleOrDefault(o => "Paws_" + o.Name == hotKey.Name);

            if (abilityChain == null)
            {
                return;
            }
            if (StyxWoW.Me.Specialization == abilityChain.Specialization)
            {
                // We have a triggered Ability Chain
                Trigger(abilityChain);
            }
            else
            {
                Log.AbilityChain(
                    string.Format(
                        "Hotkey detected, but your specialization must be {0} to trigger the {1} ability chain.",
                        abilityChain.Specialization.ToString().Replace("Druid", string.Empty), hotKey.Name));
            }
        }