type p<`a, `b> = P(`a, `b)

let x : int = match (P<int, int>(22, 33)) {
  P<int, int>((x : int), (_ : int)) & P<int, int>((_ : int), (y : int)) -> x + y
}