let find h key hkey =
      match h.data.(hkey mod (Array.length h.data)) with
        Empty -> raise Not_found
      | Cons(d1, rest1) ->
          if H.equal key d1.node then d1 else
          match rest1 with
            Empty -> raise Not_found
          | Cons(d2, rest2) ->
              if H.equal key d2.node then d2 else
              match rest2 with
                Empty -> raise Not_found
              | Cons(d3, rest3) ->
                  if H.equal key d3.node then d3 else begin
                    let rec find = function
                        Empty ->
                          raise Not_found
                      | Cons(d, rest) ->
                          if H.equal key d.node then d else find rest
                    in find rest3
                  end