private void handleNewReleased(InputState state, InputKey releasedKey) { var pressedCombination = KeyCombination.FromInputState(state); // we don't want to consider exact matching here as we are dealing with bindings, not actions. var newlyReleased = pressedBindings.Where(b => !b.KeyCombination.IsPressed(pressedCombination, KeyCombinationMatchingMode.Any)).ToList(); Trace.Assert(newlyReleased.All(b => KeyCombination.ContainsKey(b.KeyCombination.Keys, releasedKey))); foreach (var binding in newlyReleased) { pressedBindings.Remove(binding); PropagateReleased(getInputQueue(binding), binding.GetAction <T>()); keyBindingQueues[binding].Clear(); } }