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