final TreeNode<V> findTreeNode(int h, int k) {
        TreeNode<V> p = this;
        do {
          int ph;
          TreeNode<V> q;
          TreeNode<V> pl = p.left;
          TreeNode<V> pr = p.right;
          if ((ph = p.hash) > h) {
            p = pl;
          }
          else if (ph < h) {
            p = pr;
          }
          else if (p.key == k) {
            return p;
          }
          else if (pl == null) {
            p = pr;
          }
          else if (pr == null) {
            p = pl;
          }
          else if ((q = pr.findTreeNode(h, k)) != null) {
            return q;
          }
          else {
            p = pl;
          }
        }
        while (p != null);
        return null;
      }
final TreeNode<V> findTreeNode(int h, int k)