sig
  module Relative :
    sig
      type t = { row : int; col : int; }
      val sexp_of_t : Src_pos.Relative.t -> Type.t
      val zero : Src_pos.Relative.t
      val add :
        Src_pos.Relative.t -> Src_pos.Relative.t -> Src_pos.Relative.t
      val sub :
        Src_pos.Relative.t -> Src_pos.Relative.t -> Src_pos.Relative.t
    end
  module Absolute :
    sig
      type t = { row : int; col : int; }
      val sexp_of_t : Src_pos.Absolute.t -> Type.t
      val origin : Src_pos.Absolute.t
      val of_lexing : Lexing.position -> Src_pos.Absolute.t
      val diff :
        Src_pos.Absolute.t -> Src_pos.Absolute.t -> Src_pos.Relative.t
      val add :
        Src_pos.Absolute.t -> Src_pos.Relative.t -> Src_pos.Absolute.t
      val sub :
        Src_pos.Absolute.t -> Src_pos.Relative.t -> Src_pos.Absolute.t
      val geq : Src_pos.Absolute.t -> Src_pos.Absolute.t -> bool
    end
end