(* TEST *)

type t = { x : t; y : t }

let p = print_endline

let test =
  let rec x = p "x"; { x = (p "x_x"; x); y = (p "x_y"; y) }
      and y = p "y"; { x = (p "y_x"; x); y = (p "y_y"; y) }
   in
   assert (x.x == x); assert (x.y == y);
   assert (y.x == x); assert (y.y == y);
   ()
