functor (S : Set.S->
  sig
    val of_set : S.t -> (S.elt, [ `Any ]) OLinq.t
    val reflect :
      (S.elt, [< `Any | `AtMostOne | `One ]) OLinq.t ->
      (S.t, [< `Any | `AtMostOne | `One > `One ]) OLinq.t
    val run : (S.elt, [< `Any | `AtMostOne | `One ]) OLinq.t -> S.t
  end