sig
  type extract_t =
      Proj_n of Flx_ast.range_srcref * int
    | Udtor of Flx_ast.range_srcref * Flx_ast.qualified_name_t
  val gen_match_check : Flx_ast.pattern_t -> Flx_ast.expr_t -> Flx_ast.expr_t
  val get_pattern_vars :
    (string, Flx_ast.range_srcref * Flx_mbind.extract_t list) Hashtbl.t ->
    Flx_ast.pattern_t -> Flx_mbind.extract_t list -> unit
  val gen_extractor :
    Flx_mbind.extract_t list -> Flx_ast.expr_t -> Flx_ast.expr_t
end