sig
  type action = {
    let_pass : bool;
    increase_outermost_match_depth : bool;
    push_label_depth_stack : bool;
    set_flag : bool;
  }
  type sxp_context
  val default_sxp_context : unit -> Sxp_context.sxp_context
  val push_label_depth_stack : Sxp_context.sxp_context -> unit
  val pop_label_depth_stack : Sxp_context.sxp_context -> int
  val decrease_topmost_label_depth : Sxp_context.sxp_context -> unit
  val increase_topmost_label_depth : Sxp_context.sxp_context -> unit
  val topmost_label_depth_is_one : Sxp_context.sxp_context -> bool
  val topmost_label_depth_ge_one : Sxp_context.sxp_context -> bool
  val decrease_outermost_match_depth : Sxp_context.sxp_context -> unit
  val increase_outermost_match_depth : Sxp_context.sxp_context -> unit
  val is_inside_another_match : Sxp_context.sxp_context -> bool
  val record_action : Sxp_context.action -> Sxp_context.sxp_context -> unit
  val get_recorded_action : Sxp_context.sxp_context -> Sxp_context.action
end