code: final TreeMapEntry<K,V> getHigherEntry(K key) {
          TreeMapEntry<K,V> p = root;
          while (p != null) {
              int cmp = compare(key, p.key);
              if (cmp < 0) {
                  if (p.left != null)
                      p = p.left;
                  else
                      return p;
              } else {
                  if (p.right != null) {
                      p = p.right;
                  } else {
                      TreeMapEntry<K,V> parent = p.parent;
                      TreeMapEntry<K,V> ch = p;
                      while (parent != null && ch == parent.right) {
                          ch = parent;
                          parent = parent.parent;
                      }
                      return parent;
                  }
              }
          }
          return null;
      }
docs: Gets the entry for the least key greater than the specified
  key; if no such entry exists, returns the entry for the least
  key greater than the specified key; if no such entry exists
  returns {@code null}.