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