Normalized split-list set types in unit-set tests
authorkhizmax <libcds.dev@gmail.com>
Thu, 30 Oct 2014 21:40:46 +0000 (00:40 +0300)
committerkhizmax <libcds.dev@gmail.com>
Thu, 30 Oct 2014 21:40:46 +0000 (00:40 +0300)
projects/Win/vc12/cds.sln
tests/unit/print_split_list_stat.h [new file with mode: 0644]
tests/unit/set2/set_defs.h
tests/unit/set2/set_types.h

index 947633d00153ad44895d216474b3055c6c9c468e..aabc38a04aa4c53cfca0a141b8e1b31147c92f85 100644 (file)
@@ -11,6 +11,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unit-test", "unit-test", "{
                ..\..\..\tests\unit\print_mspriorityqueue_stat.h = ..\..\..\tests\unit\print_mspriorityqueue_stat.h\r
                ..\..\..\tests\unit\print_segmentedqueue_stat.h = ..\..\..\tests\unit\print_segmentedqueue_stat.h\r
                ..\..\..\tests\unit\print_skip_list_stat.h = ..\..\..\tests\unit\print_skip_list_stat.h\r
+               ..\..\..\tests\unit\print_split_list_stat.h = ..\..\..\tests\unit\print_split_list_stat.h\r
        EndProjectSection\r
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unit-prerequisites", "unit-prerequisites.vcxproj", "{61179F2F-07E1-490D-B64D-D85A90B6EF81}"\r
diff --git a/tests/unit/print_split_list_stat.h b/tests/unit/print_split_list_stat.h
new file mode 100644 (file)
index 0000000..94b7530
--- /dev/null
@@ -0,0 +1,39 @@
+//$$CDS-header$$
+
+#ifndef __UNIT_PRINT_SPLIT_LIST_STAT_H
+#define __UNIT_PRINT_SPLIT_LIST_STAT_H
+
+#include <cds/intrusive/details/split_list_base.h>
+#include <ostream>
+
+namespace std {
+
+    static inline ostream& operator <<( ostream& o, cds::intrusive::split_list::stat<> const& s )
+    {
+        return
+        o << "Split-list stat [cds::intrusive::split_list::stat]\n"
+            << "\t\t          m_nInsertSuccess: " << s.m_nInsertSuccess.get()           << "\n"
+            << "\t\t           m_nInsertFailed: " << s.m_nInsertFailed.get()            << "\n"
+            << "\t\t            m_nEnsureExist: " << s.m_nEnsureExist.get()             << "\n"
+            << "\t\t              m_nEnsureNew: " << s.m_nEnsureNew.get()               << "\n"
+            << "\t\t           m_nEraseSuccess: " << s.m_nEraseSuccess.get()            << "\n"
+            << "\t\t            m_nEraseFailed: " << s.m_nEraseFailed.get()             << "\n"
+            << "\t\t         m_nExtractSuccess: " << s.m_nExtractSuccess.get()          << "\n"
+            << "\t\t          m_nExtractFailed: " << s.m_nExtractFailed.get()           << "\n"
+            << "\t\t            m_nFindSuccess: " << s.m_nFindSuccess.get()             << "\n"
+            << "\t\t      m_nHeadNodeAllocated: " << s.m_nHeadNodeAllocated.get()       << "\n"
+            << "\t\t          m_nHeadNodeFreed: " << s.m_nHeadNodeFreed.get()           << "\n"
+            << "\t\t            m_nBucketCount: " << s.m_nBucketCount.get()             << "\n"
+            << "\t\t    m_nInitBucketRecursive: " << s.m_nInitBucketRecursive.get()     << "\n"
+            << "\t\t   m_nInitBucketContention: " << s.m_nInitBucketContention.get()    << "\n"
+            << "\t\t     m_nBusyWaitBucketInit: " << s.m_nBusyWaitBucketInit.get()      << "\n";
+    }
+
+    static inline ostream& operator <<( ostream& o, cds::intrusive::split_list::empty_stat const& s )
+    {
+        return o;
+    }
+
+} // namespace std
+
+#endif // #ifndef __UNIT_PRINT_SKIP_LIST_STAT_H
index 15bf480e27f03b87efeeea25738f85811915012a..05451a413474705809cf21ca42f43533c5d4edc9 100644 (file)
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
 #   define CDSUNIT_DECLARE_SplitList_RCU_signal  \
     TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_st_less)\
+    TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_st_less)\
+    TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_st_less)\
+    TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_dyn_less)\
-    TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_st_less)
+    TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_st_less)\
+    TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_st_less_stat)
 
 #   define CDSUNIT_TEST_SplitList_RCU_signal  \
     CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_cmp)\
     CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_less)\
     CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_less)\
+    CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_less_stat)\
     CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_cmp)\
     CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_less)\
     CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_less)\
+    CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_less_stat)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_cmp)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_less)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_less)\
+    CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_less_stat)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_cmp)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_less)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less)
+    CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less)\
+    CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less_stat)
 
 #else
 #   define CDSUNIT_DECLARE_SplitList_RCU_signal
 
 #define CDSUNIT_DECLARE_SplitList  \
     TEST_SET_EXTRACT(SplitList_Michael_HP_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Michael_HP_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_HP_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Michael_HP_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Michael_HP_st_less)\
+    TEST_SET_EXTRACT(SplitList_Michael_HP_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_DHP_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Michael_DHP_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_DHP_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Michael_DHP_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Michael_DHP_st_less)\
+    TEST_SET_EXTRACT(SplitList_Michael_DHP_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_st_less)\
+    TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_st_less)\
+    TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_st_less)\
+    TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_HP_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Lazy_HP_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_HP_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Lazy_HP_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Lazy_HP_st_less)\
+    TEST_SET_EXTRACT(SplitList_Lazy_HP_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_DHP_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Lazy_DHP_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_DHP_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Lazy_DHP_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Lazy_DHP_st_less)\
+    TEST_SET_EXTRACT(SplitList_Lazy_DHP_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_st_less)\
+    TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_st_less)\
+    TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_st_less_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_dyn_cmp)\
+    TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_dyn_cmp_stat)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_st_cmp)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_dyn_less)\
     TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_st_less)\
+    TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_st_less_stat)\
     CDSUNIT_DECLARE_SplitList_RCU_signal
 
 #define CDSUNIT_TEST_SplitList  \
     CPPUNIT_TEST(SplitList_Michael_HP_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Michael_HP_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Michael_HP_st_cmp)\
     CPPUNIT_TEST(SplitList_Michael_HP_dyn_less)\
     CPPUNIT_TEST(SplitList_Michael_HP_st_less)\
+    CPPUNIT_TEST(SplitList_Michael_HP_st_less_stat)\
     CPPUNIT_TEST(SplitList_Michael_DHP_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Michael_DHP_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Michael_DHP_st_cmp)\
     CPPUNIT_TEST(SplitList_Michael_DHP_dyn_less)\
     CPPUNIT_TEST(SplitList_Michael_DHP_st_less)\
+    CPPUNIT_TEST(SplitList_Michael_DHP_st_less_stat)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_cmp)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_less)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_less)\
+    CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_less_stat)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_cmp)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_less)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_less)\
+    CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_less_stat)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_cmp)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_less)\
     CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_less)\
+    CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_less_stat)\
     CPPUNIT_TEST(SplitList_Lazy_HP_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Lazy_HP_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Lazy_HP_st_cmp)\
     CPPUNIT_TEST(SplitList_Lazy_HP_dyn_less)\
     CPPUNIT_TEST(SplitList_Lazy_HP_st_less)\
+    CPPUNIT_TEST(SplitList_Lazy_HP_st_less_stat)\
     CPPUNIT_TEST(SplitList_Lazy_DHP_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Lazy_HP_st_less_stat)\
     CPPUNIT_TEST(SplitList_Lazy_DHP_st_cmp)\
     CPPUNIT_TEST(SplitList_Lazy_DHP_dyn_less)\
     CPPUNIT_TEST(SplitList_Lazy_DHP_st_less)\
+    CPPUNIT_TEST(SplitList_Lazy_DHP_st_less_stat)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_cmp)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_less)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_less)\
+    CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_less_stat)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_cmp)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_less)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_less)\
+    CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_less_stat)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_cmp)\
+    CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_cmp_stat)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_cmp)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_less)\
     CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_less)\
+    CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_less_stat)\
     CDSUNIT_TEST_SplitList_RCU_signal
 
 
index 0e38346516bd5f0608c25d6aba0d0f4e7892eb0c..568f26e363a012de7d3cb0f4b8484d094a17d7a6 100644 (file)
@@ -58,6 +58,7 @@
 #include "set2/std_hash_set.h"
 #include "michael_alloc.h"
 #include "print_cuckoo_stat.h"
+#include "print_split_list_stat.h"
 #include "print_skip_list_stat.h"
 #include "print_ellenbintree_stat.h"
 #include "ellen_bintree_update_desc_pool.h"
@@ -278,34 +279,6 @@ namespace set2 {
             }
         };
 
-#if (CDS_COMPILER == CDS_COMPILER_MSVC || (CDS_COMPILER == CDS_COMPILER_INTEL && CDS_OS_INTERFACE == CDS_OSI_WINDOWS)) && _MSC_VER < 1600
-        struct hash_less: public stdext::hash_compare< key_type, std::less<key_type> >
-        {
-            typedef stdext::hash_compare< key_type, std::less<key_type> > base_class;
-            size_t operator()(const key_val& kv) const
-            {
-                return hash()(kv);
-            }
-            size_t operator()(const key_type& k ) const
-            {
-                return hash()(k);
-            }
-
-            bool operator()(const key_val& kv1, const key_val& kv2) const
-            {
-                return less()( kv1, kv2 );
-            }
-            bool operator()(const key_type& k1, const key_val& kv2) const
-            {
-                return less()( k1, kv2 );
-            }
-            bool operator()(const key_val& kv1, const key_type& k2) const
-            {
-                return less()( kv1, k2 );
-            }
-        };
-#endif
-
         // ***************************************************************************
         // MichaelList
 
@@ -575,1488 +548,279 @@ namespace set2 {
 #endif
 
         typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_HP_less_stdAlloc;
-        typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_DHP_less_stdAlloc;
-        typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPI_less_stdAlloc;
-        typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPB_less_stdAlloc;
-        typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPT_less_stdAlloc;
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHB_less_stdAlloc;
-        typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHT_less_stdAlloc;
-#endif
-
-        typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_HP_less_stdAlloc_seqcst;
-        typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_DHP_less_stdAlloc_seqcst;
-        typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPI_less_stdAlloc_seqcst;
-        typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPB_less_stdAlloc_seqcst;
-        typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPT_less_stdAlloc_seqcst;
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHB_less_stdAlloc_seqcst;
-        typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHT_less_stdAlloc_seqcst;
-#endif
-
-        typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_HP_cmp_michaelAlloc;
-        typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_DHP_cmp_michaelAlloc;
-        typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPI_cmp_michaelAlloc;
-        typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPB_cmp_michaelAlloc;
-        typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPT_cmp_michaelAlloc;
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHB_cmp_michaelAlloc;
-        typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHT_cmp_michaelAlloc;
-#endif
-
-        typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_HP_less_michaelAlloc;
-        typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_DHP_less_michaelAlloc;
-        typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPI_less_michaelAlloc;
-        typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPB_less_michaelAlloc;
-        typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPT_less_michaelAlloc;
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHB_less_michaelAlloc;
-        typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHT_less_michaelAlloc;
-#endif
-
-        // ***************************************************************************
-        // SplitListSet based on MichaelList
-
-        // HP
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_HP_dyn_cmp;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_HP_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_HP_st_cmp;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_HP_st_cmp_seqcst;
-
-        //HP + less
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_HP_dyn_less;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_HP_dyn_less_seqcst;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_HP_st_less;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_HP_st_less_seqcst;
-
-        // DHP
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_DHP_dyn_cmp;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_DHP_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_DHP_st_cmp;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_DHP_st_cmp_seqcst;
-
-        // DHP + less
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_DHP_dyn_less;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_DHP_dyn_less_seqcst;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_DHP_st_less;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_DHP_st_less_seqcst;
-
-        // RCU
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPI_dyn_cmp;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPI_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPI_st_cmp;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPI_st_cmp_seqcst;
-
-        // RCU_GPI + less
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPI_dyn_less;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPI_dyn_less_seqcst;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPI_st_less;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPI_st_less_seqcst;
-
-
-        //
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPB_dyn_cmp;
-
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPB_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPB_st_cmp;
-
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPB_st_cmp_seqcst;
-
-        // RCU_GPB + less
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPB_dyn_less;
-
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPB_dyn_less_seqcst;
-
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPB_st_less;
-
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPB_st_less_seqcst;
-
-        //
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPT_dyn_cmp;
-
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPT_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPT_st_cmp;
-
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPT_st_cmp_seqcst;
-
-        // RCU_GPT + less
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPT_dyn_less;
-
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPT_dyn_less_seqcst;
-
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPT_st_less;
-
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_GPT_st_less_seqcst;
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHB_dyn_cmp;
-
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHB_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHB_st_cmp;
-
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHB_st_cmp_seqcst;
-
-        // RCU_SHB + less
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHB_dyn_less;
-
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHB_dyn_less_seqcst;
-
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHB_st_less;
-
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHB_st_less_seqcst;
-
-        //
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHT_dyn_cmp;
-
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHT_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHT_st_cmp;
-
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHT_st_cmp_seqcst;
-
-        // RCU_SHT + less
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHT_dyn_less;
-
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHT_dyn_less_seqcst;
-
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHT_st_less;
-
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_RCU_SHT_st_less_seqcst;
-#endif
-
-        // ***************************************************************************
-        // SplitListSet based on LazyList
-
-        // HP
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HP_dyn_cmp;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HP_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HP_st_cmp;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HP_st_cmp_seqcst;
-
-
-        // HP + less
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HP_dyn_less;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HP_dyn_less_seqcst;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HP_st_less;
-
-        typedef cc::SplitListSet< cds::gc::HP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HP_st_less_seqcst;
-
-        // DHP
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_DHP_dyn_cmp;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_DHP_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_DHP_st_cmp;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_DHP_st_cmp_seqcst;
-
-        // DHP + less
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_DHP_dyn_less;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_DHP_dyn_less_seqcst;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_DHP_st_less;
-
-        typedef cc::SplitListSet< cds::gc::DHP, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_DHP_st_less_seqcst;
-
-
-        // RCU
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPI_dyn_cmp;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPI_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPI_st_cmp;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPI_st_cmp_seqcst;
-
-        // RCU_GPI + less
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPI_dyn_less;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPI_dyn_less_seqcst;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPI_st_less;
-
-        typedef cc::SplitListSet< rcu_gpi, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPI_st_less_seqcst;
-
-        //
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPB_dyn_cmp;
-
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPB_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPB_st_cmp;
-
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPB_st_cmp_seqcst;
+        typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_DHP_less_stdAlloc;
+        typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPI_less_stdAlloc;
+        typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPB_less_stdAlloc;
+        typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPT_less_stdAlloc;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHB_less_stdAlloc;
+        typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHT_less_stdAlloc;
+#endif
 
-        // RCU_GPB + less
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPB_dyn_less;
+        typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_HP_less_stdAlloc_seqcst;
+        typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_DHP_less_stdAlloc_seqcst;
+        typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPI_less_stdAlloc_seqcst;
+        typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPB_less_stdAlloc_seqcst;
+        typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPT_less_stdAlloc_seqcst;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHB_less_stdAlloc_seqcst;
+        typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHT_less_stdAlloc_seqcst;
+#endif
 
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPB_dyn_less_seqcst;
+        typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_HP_cmp_michaelAlloc;
+        typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_DHP_cmp_michaelAlloc;
+        typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPI_cmp_michaelAlloc;
+        typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPB_cmp_michaelAlloc;
+        typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPT_cmp_michaelAlloc;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHB_cmp_michaelAlloc;
+        typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHT_cmp_michaelAlloc;
+#endif
 
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPB_st_less;
+        typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_HP_less_michaelAlloc;
+        typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_DHP_less_michaelAlloc;
+        typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPI_less_michaelAlloc;
+        typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPB_less_michaelAlloc;
+        typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPT_less_michaelAlloc;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHB_less_michaelAlloc;
+        typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHT_less_michaelAlloc;
+#endif
 
-        typedef cc::SplitListSet< rcu_gpb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
+        // ***************************************************************************
+        // SplitListSet based on MichaelList
+
+        struct traits_SplitList_Michael_dyn_cmp :
+            public cc::split_list::make_traits<
+                cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
                 ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
+                    typename cc::michael_list::make_traits<
+                        co::compare< compare >
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_GPB_st_less_seqcst;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP,  key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_HP_dyn_cmp;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_DHP_dyn_cmp;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_GPI_dyn_cmp;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_GPB_dyn_cmp;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_GPT_dyn_cmp;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_SHB_dyn_cmp;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_SHT_dyn_cmp;
+#endif
 
-        //
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
+        struct traits_SplitList_Michael_dyn_cmp_stat :
+            public cc::split_list::make_traits<
+                cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
+                ,co::stat< cc::split_list::stat<> >
                 ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
+                    typename cc::michael_list::make_traits<
                         co::compare< compare >
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_GPT_dyn_cmp;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_HP_dyn_cmp_stat;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_DHP_dyn_cmp_stat;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_GPI_dyn_cmp_stat;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_GPB_dyn_cmp_stat;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_GPT_dyn_cmp_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_SHB_dyn_cmp_stat;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_SHT_dyn_cmp_stat;
+#endif
 
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
+        struct traits_SplitList_Michael_dyn_cmp_seqcst :
+            public cc::split_list::make_traits<
+                cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
                 ,co::memory_model< co::v::sequential_consistent >
                 ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
+                    typename cc::michael_list::make_traits<
                         co::compare< compare >
                         ,co::memory_model< co::v::sequential_consistent >
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_GPT_dyn_cmp_seqcst;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP,  key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_HP_dyn_cmp_seqcst;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_DHP_dyn_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_GPI_dyn_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_GPB_dyn_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_GPT_dyn_cmp_seqcst;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_SHB_dyn_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_SHT_dyn_cmp_seqcst;
+#endif
 
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
+        struct traits_SplitList_Michael_st_cmp :
+            public cc::split_list::make_traits<
+                cc::split_list::ordered_list<cc::michael_list_tag>
                 ,cc::split_list::dynamic_bucket_table< false >
                 ,co::hash< hash >
                 ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
+                    typename cc::michael_list::make_traits<
                         co::compare< compare >
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_GPT_st_cmp;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP,  key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_HP_st_cmp;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_DHP_st_cmp;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_GPI_st_cmp;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_GPB_st_cmp;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_GPT_st_cmp;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_SHB_st_cmp;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_SHT_st_cmp;
+#endif
 
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
+        struct traits_SplitList_Michael_st_cmp_seqcst :
+            public cc::split_list::make_traits<
+                cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
                 ,cc::split_list::dynamic_bucket_table< false >
                 ,co::memory_model< co::v::sequential_consistent >
                 ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
+                    typename cc::michael_list::make_traits<
                         co::compare< compare >
                         ,co::memory_model< co::v::sequential_consistent >
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_GPT_st_cmp_seqcst;
-
-        // RCU_GPT + less
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPT_dyn_less;
-
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_GPT_dyn_less_seqcst;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP,  key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_HP_st_cmp_seqcst;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_DHP_st_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_RCU_GPI_st_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_RCU_GPB_st_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_RCU_GPT_st_cmp_seqcst;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_RCU_SHB_st_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_RCU_SHT_st_cmp_seqcst;
+#endif
 
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
+        //HP + less
+        struct traits_SplitList_Michael_dyn_less :
+            public cc::split_list::make_traits<
+                cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
                 ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
+                    typename cc::michael_list::make_traits<
                         co::less< less >
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_GPT_st_less;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP,  key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_HP_dyn_less;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_DHP_dyn_less;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_GPI_dyn_less;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_GPB_dyn_less;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_GPT_dyn_less;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_SHB_dyn_less;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_SHT_dyn_less;
+#endif
 
-        typedef cc::SplitListSet< rcu_gpt, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
+        struct traits_SplitList_Michael_dyn_less_seqcst :
+            public cc::split_list::make_traits<
+                cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
                 ,co::memory_model< co::v::sequential_consistent >
                 ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
+                    typename cc::michael_list::make_traits<
                         co::less< less >
                         ,co::memory_model< co::v::sequential_consistent >
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_GPT_st_less_seqcst;
-
+        {};
+        typedef cc::SplitListSet< cds::gc::HP, key_val,  traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_HP_dyn_less_seqcst;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_DHP_dyn_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_GPI_dyn_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_GPB_dyn_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_GPT_dyn_less_seqcst;
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_SHB_dyn_cmp;
-
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_SHB_dyn_cmp_seqcst;
-
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_SHB_st_cmp;
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_SHB_dyn_less_seqcst;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_SHT_dyn_less_seqcst;
+#endif
 
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
+        struct traits_SplitList_Michael_st_less :
+            public cc::split_list::make_traits<
+                cc::split_list::ordered_list<cc::michael_list_tag>
                 ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_SHB_st_cmp_seqcst;
-
-        // RCU_SHB + less
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_RCU_SHB_dyn_less;
-
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
                 ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
+                    typename cc::michael_list::make_traits<
                         co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_SHB_dyn_less_seqcst;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP,  key_val, traits_SplitList_Michael_st_less > SplitList_Michael_HP_st_less;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_DHP_st_less;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_GPI_st_less;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_GPB_st_less;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_GPT_st_less;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_SHB_st_less;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_SHT_st_less;
+#endif
 
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
+        struct traits_SplitList_Michael_st_less_stat :
+            public cc::split_list::make_traits<
+                cc::split_list::ordered_list<cc::michael_list_tag>
                 ,cc::split_list::dynamic_bucket_table< false >
                 ,co::hash< hash >
+                ,co::stat< cc::split_list::stat<>>
                 ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
+                    typename cc::michael_list::make_traits<
                         co::less< less >
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_SHB_st_less;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP,  key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_HP_st_less_stat;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_DHP_st_less_stat;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_GPI_st_less_stat;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_GPB_st_less_stat;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_GPT_st_less_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_SHB_st_less_stat;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_SHT_st_less_stat;
+#endif
 
-        typedef cc::SplitListSet< rcu_shb, key_val,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
+        struct traits_SplitList_Michael_st_less_seqcst :
+            public cc::split_list::make_traits<
+                cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
                 ,cc::split_list::dynamic_bucket_table< false >
                 ,co::memory_model< co::v::sequential_consistent >
                 ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
+                    typename cc::michael_list::make_traits<
                         co::less< less >
                         ,co::memory_model< co::v::sequential_consistent >
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_SHB_st_less_seqcst;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP,  key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_HP_st_less_seqcst;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_DHP_st_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_GPI_st_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_GPB_st_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_GPT_st_less_seqcst;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_SHB_st_less_seqcst;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_SHT_st_less_seqcst;
+#endif
+
+        // ***************************************************************************
+        // SplitListSet based on LazyList
 
-        //
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
+        struct traits_SplitList_Lazy_dyn_cmp :
+            public cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
                 ,cc::split_list::ordered_list_traits<
@@ -2065,10 +829,33 @@ namespace set2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_SHT_dyn_cmp;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_HP_dyn_cmp;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_DHP_dyn_cmp;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_GPI_dyn_cmp;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_GPB_dyn_cmp;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_GPT_dyn_cmp;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHB_dyn_cmp;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHT_dyn_cmp;
+#endif
+
+        struct traits_SplitList_Lazy_dyn_cmp_stat : public traits_SplitList_Lazy_dyn_cmp
+        {
+            typedef cc::split_list::stat<> stat;
+        };
+        typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_HP_dyn_cmp_stat;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_DHP_dyn_cmp_stat;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_GPI_dyn_cmp_stat;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_GPB_dyn_cmp_stat;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_GPT_dyn_cmp_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHB_dyn_cmp_stat;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHT_dyn_cmp_stat;
+#endif
 
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
+        struct traits_SplitList_Lazy_dyn_cmp_seqcst :
+            public cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
                 ,co::memory_model< co::v::sequential_consistent >
@@ -2079,10 +866,19 @@ namespace set2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_SHT_dyn_cmp_seqcst;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_HP_dyn_cmp_seqcst;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_DHP_dyn_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_GPI_dyn_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_GPB_dyn_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_GPT_dyn_cmp_seqcst;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_SHB_dyn_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_SHT_dyn_cmp_seqcst;
+#endif
 
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
+        struct traits_SplitList_Lazy_st_cmp :
+            public cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,cc::split_list::dynamic_bucket_table< false >
                 ,co::hash< hash >
@@ -2092,10 +888,19 @@ namespace set2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_SHT_st_cmp;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_HP_st_cmp;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_DHP_st_cmp;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_GPI_st_cmp;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_GPB_st_cmp;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_GPT_st_cmp;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_SHB_st_cmp;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_SHT_st_cmp;
+#endif
 
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
+        struct traits_SplitList_Lazy_st_cmp_seqcst :
+            public cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
                 ,cc::split_list::dynamic_bucket_table< false >
@@ -2107,11 +912,19 @@ namespace set2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_SHT_st_cmp_seqcst;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_HP_st_cmp_seqcst;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_DHP_st_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_RCU_GPI_st_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_RCU_GPB_st_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_RCU_GPT_st_cmp_seqcst;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_RCU_SHB_st_cmp_seqcst;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_RCU_SHT_st_cmp_seqcst;
+#endif
 
-        // RCU_SHT + less
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
+        struct traits_SplitList_Lazy_dyn_less :
+            public cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
                 ,cc::split_list::ordered_list_traits<
@@ -2120,10 +933,19 @@ namespace set2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_SHT_dyn_less;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_HP_dyn_less;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_DHP_dyn_less;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_GPI_dyn_less;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_GPB_dyn_less;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_GPT_dyn_less;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_SHB_dyn_less;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_SHT_dyn_less;
+#endif
 
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
+        struct traits_SplitList_Lazy_dyn_less_seqcst :
+            public cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
                 ,co::memory_model< co::v::sequential_consistent >
@@ -2134,10 +956,19 @@ namespace set2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_SHT_dyn_less_seqcst;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_HP_dyn_less_seqcst;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_DHP_dyn_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_GPI_dyn_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_GPB_dyn_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_GPT_dyn_less_seqcst;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_SHB_dyn_less_seqcst;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_SHT_dyn_less_seqcst;
+#endif
 
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
+        struct traits_SplitList_Lazy_st_less :
+            public cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,cc::split_list::dynamic_bucket_table< false >
                 ,co::hash< hash >
@@ -2147,10 +978,19 @@ namespace set2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_SHT_st_less;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_HP_st_less;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_DHP_st_less;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_GPI_st_less;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_GPB_st_less;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_GPT_st_less;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_SHB_st_less;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_SHT_st_less;
+#endif
 
-        typedef cc::SplitListSet< rcu_sht, key_val,
-            typename cc::split_list::make_traits<
+        struct traits_SplitList_Lazy_st_less_seqcst :
+            public cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
                 ,cc::split_list::dynamic_bucket_table< false >
@@ -2162,9 +1002,32 @@ namespace set2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_RCU_SHT_st_less_seqcst;
+        {};
+        typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_HP_st_less_seqcst;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_DHP_st_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_GPI_st_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_GPB_st_less_seqcst;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_GPT_st_less_seqcst;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_SHB_st_less_seqcst;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_SHT_st_less_seqcst;
+#endif
 
+        struct traits_SplitList_Lazy_st_less_stat : public traits_SplitList_Lazy_st_less
+        {
+            typedef cc::split_list::stat<> stat;
+        };
+        typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_HP_st_less_stat;
+        typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_DHP_st_less_stat;
+        typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_GPI_st_less_stat;
+        typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_GPB_st_less_stat;
+        typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_GPT_st_less_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_SHB_st_less_stat;
+        typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_SHT_st_less_stat;
 #endif
+
+
         // ***************************************************************************
         // StripedSet
 
@@ -3428,6 +2291,12 @@ namespace set2 {
     static inline void print_stat( Set const& s )
     {}
 
+    template <typename GC, typename T, typename Traits>
+    static inline void print_stat( cc::SplitListSet<GC, T, Traits> const& s )
+    {
+        CPPUNIT_MSG( s.statistics() );
+    }
+
     template <typename GC, typename T, typename Traits>
     static inline void print_stat( cc::SkipListSet<GC, T, Traits> const& s )
     {