type 'a option = None | Some of 'a
class H 'a { h : 'a -> int }
instance H int { h = fun (x : int) -> x[] }
instance ['a] H 'a => H 'a option { h = fun (x_1 : 'a option) -> 0 }
let ['a] [ H 'a ] (do_hash : 'a -> int) = ['a] fun (x_2 : 'a) -> 0
let
['b 'a] [ H 'a, H 'b ] (do_hash2 : 'a -> 'b -> int) =
  ['b 'a] fun (x_3 : 'a) -> fun (y : 'b) -> 0