module rec X : sig
  val x : int
  val y : < m: 'a. 'a -> 'a list >
  type t = Int | Float
  type r = { offset: int; blocksize: int }
end = struct
  let x = 2
  let y = object method m: 'a. 'a -> 'a list = fun x -> [x] end
  type t = X.t = Int | Float
  type r = { offset: int; blocksize: int }
end

include X