public void decreaseKey(Position<T> pos, T newVal) {
        if (pos == null) {
            System.out.println("POS IS NULL");
            return;
        }

        PairNode<T> p = (PairNode<T>) pos;

        if (p.element == null || compare(p.element, newVal) < 0) {
            return;
        }

        p.element = newVal;
        if (p != root) {
            if (p.nextSibling != null) {
                p.nextSibling.prev = p.prev;
            }
            if (p.prev.leftChild == p) {
                p.prev.leftChild = p.nextSibling;
            } else {
                p.prev.nextSibling = p.nextSibling;
            }

            p.nextSibling = null;
            root = compareAndLink(root, p);
        }
    }