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