src/main/java/com/workplacesystems/utilsj/collections/TransactionalBidiTreeMap.java
private static <K,V> Node<K,V> getGrandParent(final Node<K,V> node, final int index) {
        return getParent(getParent(node, index), index);
    }
private static <K,V> Node<K,V> getGrandParent(final Node<K,V> node, final int index) {
        return getParent(getParent(node, index), index);
    }
private static < K , V > Node < K , V > getGrandParent ( final Node < K , V > node , final int index ) { return getParent ( getParent ( node , index ) , index ) ; }
get a node's grandparent. mind you, the node, its parent, or
its grandparent may not exist. no problem

@param node the node (may be null) in question
@param index KEY or VALUE
get a node s grandparent . mind you the node its parent or its grandparent may not exist . no problem