functor (M_a : Deriving_Json.Json->
  sig
    type a = M_a.a channel_data
    val t : a Deriving_Json.t
    val write : Buffer.t -> a -> unit
    val read : Deriving_Json_lexer.lexbuf -> a
    val to_string : a -> string
    val from_string : string -> a
    val match_variant : [ `Cst of int | `NCst of int ] -> bool
    val read_variant :
      Deriving_Json_lexer.lexbuf -> [ `Cst of int | `NCst of int ] -> a
  end