void select(Key key, [bool hover = false]) { if (hover) { _hovered.add(key); } else { _selected.add(key); _cacheSelectedOrigin(key); } notifyListeners(); }