sig
  module type Step_Store =
    sig
      type handle
      type stored_nodeid
      type record_kind
      type elem_eqnameid
      type attr_eqnameid
      type type_eqnameid
      val encode_elem_eqnameid :
        Shredded_dm_step.Step_Store.handle ->
        Namespace_symbols.relem_symbol ->
        Shredded_dm_step.Step_Store.elem_eqnameid
      val encode_attr_eqnameid :
        Shredded_dm_step.Step_Store.handle ->
        Namespace_symbols.rattr_symbol ->
        Shredded_dm_step.Step_Store.attr_eqnameid
      val encode_type_eqnameid :
        Shredded_dm_step.Step_Store.handle ->
        Namespace_symbols.rtype_symbol ->
        Shredded_dm_step.Step_Store.type_eqnameid
      val get_record_kind :
        Shredded_dm_step.Step_Store.handle ->
        Shredded_dm_step.Step_Store.stored_nodeid ->
        Shredded_dm_step.Step_Store.record_kind
      val get_elem_name :
        Shredded_dm_step.Step_Store.handle ->
        Shredded_dm_step.Step_Store.stored_nodeid ->
        Namespace_symbols.relem_symbol
      val get_attr_name :
        Shredded_dm_step.Step_Store.handle ->
        Shredded_dm_step.Step_Store.stored_nodeid ->
        Namespace_symbols.rattr_symbol
      val get_type :
        Shredded_dm_step.Step_Store.handle ->
        Shredded_dm_step.Step_Store.stored_nodeid ->
        Namespace_symbols.rtype_symbol option
      val get_elem_eqnameid :
        Shredded_dm_step.Step_Store.handle ->
        Shredded_dm_step.Step_Store.stored_nodeid ->
        Shredded_dm_step.Step_Store.elem_eqnameid
      val get_attr_eqnameid :
        Shredded_dm_step.Step_Store.handle ->
        Shredded_dm_step.Step_Store.stored_nodeid ->
        Shredded_dm_step.Step_Store.elem_eqnameid
      val get_type_eqnameid :
        Shredded_dm_step.Step_Store.handle ->
        Shredded_dm_step.Step_Store.stored_nodeid ->
        Shredded_dm_step.Step_Store.elem_eqnameid option
      val get_elem_name_eqnameid_with_type_name :
        Shredded_dm_step.Step_Store.handle ->
        Shredded_dm_step.Step_Store.stored_nodeid ->
        Shredded_dm_step.Step_Store.elem_eqnameid *
        Namespace_symbols.rtype_symbol option
      val get_attr_name_eqnameid_with_type_name :
        Shredded_dm_step.Step_Store.handle ->
        Shredded_dm_step.Step_Store.stored_nodeid ->
        Shredded_dm_step.Step_Store.attr_eqnameid *
        Namespace_symbols.rtype_symbol option
      val get_single_element_node :
        Shredded_dm_step.Step_Store.handle ->
        Shredded_dm_step.Step_Store.stored_nodeid ->
        Shredded_dm_step.Step_Store.stored_nodeid
      val get_pi_target :
        Shredded_dm_step.Step_Store.handle ->
        Shredded_dm_step.Step_Store.stored_nodeid -> string
    end
  module type Shredded_XPath_Step_Functor_Sig =
    functor
      (Basetypes : Shredded_store_sigs.Shredded_Basetypes) (Store : sig
                                                                    type handle
                                                                    type stored_nodeid =
                                                                    Basetypes.stored_nodeid
                                                                    type record_kind =
                                                                    Basetypes.record_kind
                                                                    type elem_eqnameid =
                                                                    Basetypes.eqnameid
                                                                    type attr_eqnameid =
                                                                    Basetypes.eqnameid
                                                                    type type_eqnameid =
                                                                    Basetypes.eqnameid
                                                                    val encode_elem_eqnameid :
                                                                    handle ->
                                                                    Namespace_symbols.relem_symbol ->
                                                                    elem_eqnameid
                                                                    val encode_attr_eqnameid :
                                                                    handle ->
                                                                    Namespace_symbols.rattr_symbol ->
                                                                    attr_eqnameid
                                                                    val encode_type_eqnameid :
                                                                    handle ->
                                                                    Namespace_symbols.rtype_symbol ->
                                                                    type_eqnameid
                                                                    val get_record_kind :
                                                                    handle ->
                                                                    stored_nodeid ->
                                                                    record_kind
                                                                    val get_elem_name :
                                                                    handle ->
                                                                    stored_nodeid ->
                                                                    Namespace_symbols.relem_symbol
                                                                    val get_attr_name :
                                                                    handle ->
                                                                    stored_nodeid ->
                                                                    Namespace_symbols.rattr_symbol
                                                                    val get_type :
                                                                    handle ->
                                                                    stored_nodeid ->
                                                                    Namespace_symbols.rtype_symbol
                                                                    option
                                                                    val get_elem_eqnameid :
                                                                    handle ->
                                                                    stored_nodeid ->
                                                                    elem_eqnameid
                                                                    val get_attr_eqnameid :
                                                                    handle ->
                                                                    stored_nodeid ->
                                                                    elem_eqnameid
                                                                    val get_type_eqnameid :
                                                                    handle ->
                                                                    stored_nodeid ->
                                                                    elem_eqnameid
                                                                    option
                                                                    val get_elem_name_eqnameid_with_type_name :
                                                                    handle ->
                                                                    stored_nodeid ->
                                                                    elem_eqnameid *
                                                                    Namespace_symbols.rtype_symbol
                                                                    option
                                                                    val get_attr_name_eqnameid_with_type_name :
                                                                    handle ->
                                                                    stored_nodeid ->
                                                                    attr_eqnameid *
                                                                    Namespace_symbols.rtype_symbol
                                                                    option
                                                                    val get_single_element_node :
                                                                    handle ->
                                                                    stored_nodeid ->
                                                                    stored_nodeid
                                                                    val get_pi_target :
                                                                    handle ->
                                                                    stored_nodeid ->
                                                                    string
                                                                    end->
      sig
        type handle = Store.handle
        type shred_kind_test
        val shred_kind_test_of_akind_test :
          Shredded_dm_step.Shredded_XPath_Step_Functor_Sig.handle ->
          Xquery_algebra_ast.akind_test ->
          Shredded_dm_step.Shredded_XPath_Step_Functor_Sig.shred_kind_test
        type shred_node_test
        val shred_node_test_of_anode_test :
          Shredded_dm_step.Shredded_XPath_Step_Functor_Sig.handle ->
          Xquery_algebra_ast.anode_test ->
          Shredded_dm_step.Shredded_XPath_Step_Functor_Sig.shred_node_test
        val item_matches_kind_test :
          Shredded_dm_step.Shredded_XPath_Step_Functor_Sig.handle ->
          Xquery_type_core_ast.cxschema ->
          Shredded_dm_step.Shredded_XPath_Step_Functor_Sig.shred_kind_test ->
          Store.stored_nodeid -> bool
        val eval_node_test_gen :
          Shredded_dm_step.Shredded_XPath_Step_Functor_Sig.handle ->
          Xquery_type_core_ast.cxschema option ->
          Xquery_common_ast.axis ->
          Shredded_dm_step.Shredded_XPath_Step_Functor_Sig.shred_node_test ->
          Store.stored_nodeid -> bool
      end
  module Shredded_XPath_Step_Functor : Shredded_XPath_Step_Functor_Sig
end