/// <summary>
        /// Updates the caches with the current states for each input device.
        /// </summary>
        /// <param name="gameTime">The amount of time that has passed since the last call to Update.</param>
        public override void Update(GameTime gameTime)
        {
            _LastKeyboardState = _KeyboardState;
                        _KeyboardState = Keyboard.GetState();

                        _LastGamePadStates = _GamePadStates;
                        _GamePadStates = GetGamePadStates();

                        _LastMouseState = _MouseState;
                        _MouseState = Mouse.GetState(Game.Window);

                        foreach (MouseButton button in new MouseButton[]{MouseButton.Left, MouseButton.Right, MouseButton.Middle, MouseButton.XButton1, MouseButton.XButton2})
                        {
                                MouseActionTracker clickOptions;
                                if(_MouseActions.TryGetValue(button, out clickOptions) == false)
                                {
                                        clickOptions = new MouseActionTracker();
                                        _MouseActions[button] = clickOptions;
                                }
                                clickOptions.ElapsedMillisecondsSinceLastClick = System.Convert.ToInt32(clickOptions.ElapsedMillisecondsSinceLastClick + gameTime.ElapsedGameTime.TotalMilliseconds);

                                if(HasBeenPressed(button) == false)
                                {
                                        clickOptions.LastClickWasConsideredDoubleClick = false;
                                        continue;
                                }

                                clickOptions.LastClickWasConsideredDoubleClick = (clickOptions.ElapsedMillisecondsSinceLastClick < DoubleClickMillisecondCeiling);

                                clickOptions.ElapsedMillisecondsSinceLastClick = 0;
                        }

                        base.Update(gameTime);
        }