sig
  module type Non_immediate = sig type t end
  module type Immediate = sig type t [@@immediate] end
  module Make :
    functor (Immediate : Immediate) (Non_immediate : Non_immediate->
      sig
        type t [@@immediate64]
        type 'a repr =
            Immediate : Sys.Immediate64.Immediate.t Sys.Immediate64.Make.repr
          | Non_immediate :
              Sys.Immediate64.Non_immediate.t Sys.Immediate64.Make.repr
        val repr : Sys.Immediate64.Make.t Sys.Immediate64.Make.repr
      end
end