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->
      functor
        (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