public void decreasePriority(T element, int priority) {
        ListNode<T> node = map.get(element);
        
        if (node == null || node.priority <= priority) {
            return;
        }
        
        if (node.prev != null) {
            node.prev.next = node.next;
        }
        
        if (node.next != null) {
            node.next.prev = node.prev;
        }
        
        if (storage[node.priority] == node) {
            storage[node.priority] = node.next;
        }
        
        node.priority = priority;
        
        if (storage[priority] != null) {
            storage[priority].prev = node;
            node.next = storage[priority];
        }
        
        storage[priority] = node;
        
        if (minimumPriority > priority) {
            minimumPriority = priority;
        }
    }