sig
  type bandrange = { mupper : int; mlower : int; }
  val prec_left :
    Arkode.Spils.Banded.bandrange ->
    (Nvector_serial.data, [> Nvector_serial.kind ], 's)
    Arkode.Spils.preconditioner
  val prec_right :
    Arkode.Spils.Banded.bandrange ->
    (Nvector_serial.data, [> Nvector_serial.kind ], 's)
    Arkode.Spils.preconditioner
  val prec_both :
    Arkode.Spils.Banded.bandrange ->
    (Nvector_serial.data, [> Nvector_serial.kind ], 's)
    Arkode.Spils.preconditioner
  type ('a, 'b) serial_session =
      (Nvector_serial.data, 'a, 'b) Arkode_impl.session
    constraint 'a = [> Nvector_serial.kind ]
    constraint 'b = [< `ARKStep | `MRIStep ]
  val get_work_space :
    ([> Nvector_serial.kind ], [< `ARKStep | `MRIStep ])
    Arkode.Spils.Banded.serial_session -> int * int
  val get_num_rhs_evals :
    ([> Nvector_serial.kind ], [< `ARKStep | `MRIStep ])
    Arkode.Spils.Banded.serial_session -> int
end