sig
  type ('v, 'a) t
  val empty : '-> ('v, 'a) Common.Span.t
  val single : '-> '-> '-> ('v, 'a) Common.Span.t
  val merge :
    ('-> '-> 'a) ->
    ('v, 'a) Common.Span.t ->
    ('v, 'a) Common.Span.t -> ('v, 'a) Common.Span.t
  val map : ('-> 'b) -> ('v, 'a) Common.Span.t -> ('v, 'b) Common.Span.t
  val iter : ('-> '-> unit) -> ('v, 'a) Common.Span.t -> unit
  val iter2 :
    ('-> '-> '-> unit) ->
    ('v, 'a) Common.Span.t -> ('v, 'a) Common.Span.t -> unit
  val get : ('v, 'a) Common.Span.t -> '-> 'a
end