sig
  type ddo_annot =
      Needs_docorder
    | Needs_distinct
    | Needs_distinct_docorder
    | Needs_none
  type scrambling_annot = List | Set | Bag
  type type_annot = Xquery_type_core_ast.cxtype
  type free_var_annot = Xquery_common_ast.cvname list
  type ast_annot
  val empty_ast_annot : unit -> Xquery_core_ast_annotation.ast_annot
  val set_annotation :
    Xquery_core_ast_annotation.ast_annot ->
    Xquery_core_ast_annotation.ast_annot -> unit
  val annot_components :
    Xquery_core_ast_annotation.ast_annot ->
    Xquery_core_ast_annotation.type_annot option *
    Xquery_core_ast_annotation.ddo_annot option *
    Xquery_core_ast_annotation.free_var_annot option *
    Xquery_core_ast_annotation.scrambling_annot
  val copy_annot :
    Xquery_core_ast_annotation.ast_annot ->
    Xquery_core_ast_annotation.ast_annot
  val set_type_annot :
    Xquery_core_ast_annotation.ast_annot ->
    Xquery_core_ast_annotation.type_annot -> unit
  val get_type_annot :
    Xquery_core_ast_annotation.ast_annot ->
    Xquery_core_ast_annotation.type_annot
  val set_ddo_annot :
    Xquery_core_ast_annotation.ast_annot ->
    Xquery_core_ast_annotation.ddo_annot -> unit
  val get_ddo_annot :
    Xquery_core_ast_annotation.ast_annot ->
    Xquery_core_ast_annotation.ddo_annot option
  val print_ddo_annot : Xquery_core_ast_annotation.ddo_annot -> string
  val set_free_var_annot :
    Xquery_core_ast_annotation.ast_annot ->
    Xquery_core_ast_annotation.free_var_annot -> unit
  val get_free_var_annot :
    Xquery_core_ast_annotation.ast_annot ->
    Xquery_core_ast_annotation.free_var_annot option
  val print_free_var_annot :
    Xquery_core_ast_annotation.free_var_annot -> string
  val set_scrambling_annot :
    Xquery_core_ast_annotation.ast_annot ->
    Xquery_core_ast_annotation.scrambling_annot -> unit
  val get_scrambling_annot :
    Xquery_core_ast_annotation.ast_annot ->
    Xquery_core_ast_annotation.scrambling_annot
  val print_scrambling_annot :
    Xquery_core_ast_annotation.scrambling_annot -> string
end