sig
  type 'a visitAction =
      SkipChildren
    | ChangeTo of 'a
    | DoChildren
    | ChangeDoChildrenPost of 'a * ('-> 'a)
  type nameKind = NVar | NFun | NField | NType
  class type cabsVisitor =
    object
      method vEnterScope : unit -> unit
      method vExitScope : unit -> unit
      method vattr :
        Flx_cil_cabs.attribute ->
        Flx_cil_cabs.attribute list Flx_cil_cabsvisit.visitAction
      method vblock :
        Flx_cil_cabs.block ->
        Flx_cil_cabs.block Flx_cil_cabsvisit.visitAction
      method vdecltype :
        Flx_cil_cabs.decl_type ->
        Flx_cil_cabs.decl_type Flx_cil_cabsvisit.visitAction
      method vdef :
        Flx_cil_cabs.definition ->
        Flx_cil_cabs.definition list Flx_cil_cabsvisit.visitAction
      method vexpr :
        Flx_cil_cabs.expression ->
        Flx_cil_cabs.expression Flx_cil_cabsvisit.visitAction
      method vinitexpr :
        Flx_cil_cabs.init_expression ->
        Flx_cil_cabs.init_expression Flx_cil_cabsvisit.visitAction
      method vname :
        Flx_cil_cabsvisit.nameKind ->
        Flx_cil_cabs.specifier ->
        Flx_cil_cabs.name -> Flx_cil_cabs.name Flx_cil_cabsvisit.visitAction
      method vspec :
        Flx_cil_cabs.specifier ->
        Flx_cil_cabs.specifier Flx_cil_cabsvisit.visitAction
      method vstmt :
        Flx_cil_cabs.statement ->
        Flx_cil_cabs.statement list Flx_cil_cabsvisit.visitAction
      method vtypespec :
        Flx_cil_cabs.typeSpecifier ->
        Flx_cil_cabs.typeSpecifier Flx_cil_cabsvisit.visitAction
      method vvar : string -> string
    end
  class nopFlx_cil_cabsVisitor : cabsVisitor
  val visit_cabsTypeSpecifier :
    Flx_cil_cabsvisit.cabsVisitor ->
    Flx_cil_cabs.typeSpecifier -> Flx_cil_cabs.typeSpecifier
  val visit_cabsSpecifier :
    Flx_cil_cabsvisit.cabsVisitor ->
    Flx_cil_cabs.specifier -> Flx_cil_cabs.specifier
  val visit_cabsDeclType :
    Flx_cil_cabsvisit.cabsVisitor ->
    bool -> Flx_cil_cabs.decl_type -> Flx_cil_cabs.decl_type
  val visit_cabsDefinition :
    Flx_cil_cabsvisit.cabsVisitor ->
    Flx_cil_cabs.definition -> Flx_cil_cabs.definition list
  val visit_cabsBlock :
    Flx_cil_cabsvisit.cabsVisitor -> Flx_cil_cabs.block -> Flx_cil_cabs.block
  val visit_cabsStatement :
    Flx_cil_cabsvisit.cabsVisitor ->
    Flx_cil_cabs.statement -> Flx_cil_cabs.statement list
  val visit_cabsExpression :
    Flx_cil_cabsvisit.cabsVisitor ->
    Flx_cil_cabs.expression -> Flx_cil_cabs.expression
  val visit_cabsAttributes :
    Flx_cil_cabsvisit.cabsVisitor ->
    Flx_cil_cabs.attribute list -> Flx_cil_cabs.attribute list
  val visit_cabsName :
    Flx_cil_cabsvisit.cabsVisitor ->
    Flx_cil_cabsvisit.nameKind ->
    Flx_cil_cabs.specifier -> Flx_cil_cabs.name -> Flx_cil_cabs.name
  val visit_cabsFile :
    Flx_cil_cabsvisit.cabsVisitor -> Flx_cil_cabs.file -> Flx_cil_cabs.file
  val visitorLocation : Flx_cil_cabs.cabsloc Pervasives.ref
end