diff --git a/include/boost/contract/aux_/decl/class.hpp b/include/boost/contract/aux_/decl/class.hpp
deleted file mode 100644
index 16a36da..0000000
--- a/include/boost/contract/aux_/decl/class.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-
-#ifndef BOOST_CONTRACT_AUX_CLASS_HPP_
-#define BOOST_CONTRACT_AUX_CLASS_HPP_
-
-#include <boost/contract/aux_/code/params.hpp>
-#include <boost/contract/aux_/eval.hpp>
-#include <boost/contract/aux_/name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/class.hpp> // c
-#include <boost/contract/ext_/preprocessor/traits/base.hpp> // b
-#include <boost/contract/ext_/preprocessor/variadic/wrap_iif.hpp>
-#include <boost/contract/ext_/preprocessor/utility/empty.hpp>
-#include <boost/contract/ext_/preprocessor/parenthesize.hpp>
-#include <boost/preprocessor/seq/for_each_i.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/punctuation/comma.hpp>
-
-/* PUBLIC */
-
-// Type of class being declared.
-#define BOOST_CONTRACT_AUX_CLASS_TYPE \
-    BOOST_CONTRACT_AUX_NAME1(class_type)
-
-// Type of extra evaluation base.
-#define BOOST_CONTRACT_AUX_CLASS_EVAL_BASE_TYPE \
-    BOOST_CONTRACT_AUX_NAME1(eval_base_type)
-
-// Type of i-th base class, i in [0, number of base classes for this class).
-#define BOOST_CONTRACT_AUX_CLASS_BASE_TYPE(i) \
-    BOOST_CONTRACT_AUX_NAME2(base_type, i)
-
-#define BOOST_CONTRACT_AUX_CLASS_D_R(d, r, id, tpl, c) \
-    BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT(c) \
-    BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE(c) \
-    BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF( \
-        BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE(c))) \
-    , \
-        <, >, \
-        BOOST_CONTRACT_AUX_PARAMS_WITH_DEFAULTS_D_R(d, r, id, tpl, \
-            BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARAMS(c), \
-            BOOST_PP_EMPTY() \
-        ) \
-    ) \
-    BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND(c) \
-    BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY(c) \
-    BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE( \
-            BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM(c)) \
-    BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME(c) \
-    BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF( \
-        BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION(c))) \
-    , \
-        <, >, \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION(c) \
-    ) \
-    BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FINAL(c) \
-    BOOST_PP_IIF(BOOST_CONTRACT_AUX_CLASS_HAS_EVAL_BASE_(c), \
-        : private BOOST_CONTRACT_AUX_CLASS_EVAL_BASE_ \
-    , \
-        BOOST_PP_TUPLE_EAT(1) \
-    )(c) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES(c)), \
-        BOOST_PP_TUPLE_EAT(4) \
-    , \
-        BOOST_PP_SEQ_FOR_EACH_I_R \
-    )(r, \
-        BOOST_CONTRACT_AUX_CLASS_BASE_, \
-        BOOST_CONTRACT_AUX_CLASS_HAS_EVAL_BASE_(c), \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES(c) \
-    ) \
-    BOOST_PP_IIF(BOOST_CONTRACT_AUX_CLASS_HAS_TYPEDEFS_(c), \
-        BOOST_CONTRACT_AUX_CLASS_TYPEDEFS_ \
-    , \
-        BOOST_PP_TUPLE_EAT(5) \
-    )(d, r, id, tpl, c)
-
-/* PRIVATE */
-
-// TODO: Expand 0 if contracts disabled...
-#define BOOST_CONTRACT_AUX_CLASS_HAS_EVAL_BASE_(c) 1
-
-// TODO: Expand 0 if contracts disabled...
-#define BOOST_CONTRACT_AUX_CLASS_HAS_TYPEDEFS_(c) 1
-
-#define BOOST_CONTRACT_AUX_CLASS_EVAL_BASE_(c) \
-    boost::contract::aux::eval<BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME(c)>
-
-#define BOOST_CONTRACT_AUX_CLASS_BASE_(r, has_extra_bases, i, b) \
-    BOOST_PP_IIF(has_extra_bases, \
-        BOOST_PP_COMMA \
-    , BOOST_PP_IF(i, \
-        BOOST_PP_COMMA \
-    , \
-        : BOOST_PP_EMPTY \
-    ))() \
-    BOOST_CONTRACT_EXT_PP_BASE_TRAITS_ACCESS(b) \
-    BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL(b) \
-    BOOST_PP_TUPLE_REM_CTOR(BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE(b))
-
-#define BOOST_CONTRACT_AUX_CLASS_BASE_TYPEDEF_(r, unused, i, b) \
-    typedef BOOST_PP_TUPLE_REM_CTOR(BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE(b)) \
-            BOOST_CONTRACT_AUX_CLASS_BASE_TYPE(i);
-
-#define BOOST_CONTRACT_AUX_CLASS_TYPEDEFS_(d, r, id, tpl, c) \
-    { \
-        typedef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME(c) \
-                BOOST_CONTRACT_AUX_CLASS_TYPE; \
-        typedef BOOST_CONTRACT_AUX_CLASS_EVAL_BASE_(c) \
-                BOOST_CONTRACT_AUX_CLASS_EVAL_BASE_TYPE; \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES(c)), \
-            BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_FOR_EACH_I_R \
-        )(r, BOOST_CONTRACT_AUX_CLASS_BASE_TYPEDEF_, ~, \
-                BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES(c)) \
-    class BOOST_CONTRACT_AUX_NAME1(ERROR_missing_class_invariant)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/aux_/decl/func.hpp b/include/boost/contract/aux_/decl/func.hpp
deleted file mode 100644
index 3f2d094..0000000
--- a/include/boost/contract/aux_/decl/func.hpp
+++ /dev/null
@@ -1,144 +0,0 @@
-
-#ifndef BOOST_CONTRACT_AUX_FUNC_HPP_
-#define BOOST_CONTRACT_AUX_FUNC_HPP_
-
-#include <boost/contract/aux_/code/class.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func.hpp> // f
-#include <boost/contract/ext_/preprocessor/parenthesize.hpp>
-
-/* PUBLIC */
-
-#define BOOST_CONTRACT_AUX_FUNC_D_R(d, r, id, tpl, f) \
-    BOOST_CONTRACT_AUX_NAMED_FUNC_DECL_D_R(d, r, id, tpl, f, \
-            (BOOST_CONTRACT_AUX_FUNC_NAME_(f))) { \
-        boost::contract::function \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF( \
-            BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE(f)) \
-        ), \
-            <, >, \
-            BOOST_CONTRACT_AUX_PARAMS_NAMES_D_R(d, r, id, tpl, \
-                BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARAMS(f), \
-                BOOST_PP_EMPTY() \
-            ) \
-        ) \
-        ( \
-            &BOOST_CONTRACT_AUX_CLASS_TYPE:: \
-                    BOOST_CONTRACT_AUX_FUNC_BODY_NAME_(f) \
-            BOOST_PP_COMMA_IF(BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS(f)))) \
-            BOOST_CONTRACT_AUX_PARAMS_NAMES_D_R(d, r, id, tpl, \
-                BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS(f), \
-                BOOST_PP_EMPTY() \
-            ) \
-        ); \
-    } \
-    BOOST_CONTRACT_AUX_NAMED_FUNC_DECL_D_R(d, r, id, tpl, f, \
-            (BOOST_CONTRACT_AUX_FUNC_BODY_NAME_(f))) \
-
-#define BOOST_CONTRACT_AUX_NAMED_FUNC_DECL_D_R(d, r, id, tpl, f, \
-        parenthesized_name) \
-    BOOST_CONTRACT_AUX_FUNC_DECL_(d, r, id, tpl, f, \
-        parenthesized_name, \
-        BOOST_CONTRACT_AUX_PARAMS_WITH_DEFAULTS_D_R, BOOST_PP_EMPTY(), \
-        (1, 1) \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_AUX_FUNC_NAME_(f) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OPERATOR_NAME(f)), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME \
-    , \
-        operator BOOST_PP_TUPLE_REM(0) \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OPERATOR_NAME \
-    )(f)
-
-#define BOOST_CONTRACT_AUX_FUNC_BODY_NAME_(f) \
-    BOOST_CONTRACT_FUNCTION_BODY( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OPERATOR_NAME(f)), \
-            BOOST_PP_TUPLE_REM(1) \
-        , \
-            operator BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OPERATOR_NAME(f) \
-        )(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME(f)) \
-    )
-
-#define BOOST_CONTRACT_AUX_FUNC_DECL_(d, r, id, tpl, f, parenthesized_name, \
-        params_macro, extra_params, classifiers_virt) \
-    BOOST_CONTRACT_AUX_FUNC_DECL_ARGS_(d, r, id, tpl, f, \
-        parenthesized_name, \
-        params_macro, extra_params, \
-        BOOST_PP_TUPLE_ELEM(2, 0, classifiers_virt), \
-        BOOST_PP_TUPLE_ELEM(2, 1, classifiers_virt) \
-    )
-
-// Name is passed within parenthesis in case it is an operator with commas,
-// for example: `operator std::map<U,V>`, `operator,`.
-#define BOOST_CONTRACT_AUX_FUNC_DECL_ARGS_(d, r, id, tpl, f, \
-    parenthesized_name, \
-    params_macro, extra_params, \
-    has_classifiers, has_virtual_specifiers \
-) \
-    BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE( \
-            BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM(f)) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT(f) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE(f) \
-    BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF( \
-        BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE(f)) \
-    ), \
-        <, >, \
-        BOOST_CONTRACT_AUX_PARAMS_WITH_DEFAULTS_D_R(d, r, id, tpl, \
-            BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARAMS(f), \
-            BOOST_PP_EMPTY() \
-        ) \
-    ) \
-    BOOST_PP_IIF(has_classifiers, \
-        BOOST_CONTRACT_AUX_CLASSIFIERS_ \
-    , \
-        BOOST_PP_TUPLE_EAT(1) \
-    )(f) \
-    BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE( \
-            BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN(f)) \
-    BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE(parenthesized_name) \
-    (params_macro(d, r, id, tpl, BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS(f), \
-            extra_params)) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CONST(f) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VOLATILE(f) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_IS_REF_REF( \
-            BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF(f)), \
-        && \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT( \
-            BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF(f)), \
-        & \
-    , \
-        BOOST_PP_EMPTY() \
-    )) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT(f) \
-    BOOST_PP_EXPR_IIF(BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN(f))), \
-        -> BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE \
-    ) BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN(f) \
-    BOOST_PP_IIF(has_virtual_specifiers, \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_FINAL \
-    , \
-        BOOST_PP_TUPLE_EAT(1) \
-    )(f) \
-    BOOST_PP_IIF(has_virtual_specifiers, \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OVERRIDE \
-    , \
-        BOOST_PP_TUPLE_EAT(1) \
-    )(f)
-        
-#define BOOST_CONTRACT_AUX_CLASSIFIERS_(f) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_INLINE(f) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_STATIC(f) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXTERN(f) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPLICIT(f) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRTUAL(f) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_FRIEND(f)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/aux_/decl/invoke_or_error.hpp b/include/boost/contract/aux_/decl/invoke_or_error.hpp
deleted file mode 100644
index 34f1da9..0000000
--- a/include/boost/contract/aux_/decl/invoke_or_error.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-
-#ifndef BOOST_CONTRACT_AUX_CODE_INVOKE_OR_ERROR_HPP_
-#define BOOST_CONTRACT_AUX_CODE_INVOKE_OR_ERROR_HPP_
-
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/stringize.hpp>
-
-/* PUBLIC */
-
-// Expand to `op_macro(d, id, traits)` if parsed decl is NIL (i.e., no trait
-// parsing error), otherwise expand to a static assertion error messaging the
-// decl that remained unparsed.
-#define BOOST_CONTRACT_AUX_INVOKE_OR_ERROR(d, r, id, tpl, orig_decl, \
-        parsed_decltraits, macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM(2, 0, \
-            parsed_decltraits)), \
-        BOOST_CONTRACT_AUX_INVOKE_OR_ERROR_NO_ \
-    , \
-        BOOST_CONTRACT_AUX_INVOKE_OR_ERROR_YES_ \
-    )(d, r, id, tpl, orig_decl, parsed_decltraits, macro)
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_AUX_INVOKE_OR_ERROR_NO_(d, r, id, tpl, orig_decl, \
-        parsed_decltraits, macro) \
-    macro(d, r, id, tpl, BOOST_PP_TUPLE_ELEM(2, 1, parsed_decltraits))
-
-// Static assertion must be used because there is portable way to report an
-// error with a description message using a preprocessor macro expansion
-// (because macros cannot expand and therefore use #error).
-#define BOOST_CONTRACT_AUX_INVOKE_OR_ERROR_YES_(d, r, id, tpl, orig_decl, \
-        parsed_decltraits, macro) \
-    BOOST_STATIC_ASSERT_MSG( \
-        false, \
-        "unable to complete parsing of declaration '" \
-        BOOST_PP_STRINGIZE(orig_decl) "', parsed only up until '" \
-        BOOST_PP_STRINGIZE(BOOST_PP_TUPLE_ELEM(2, 0, parsed_decltraits)) "'" \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/aux_/decl/params.hpp b/include/boost/contract/aux_/decl/params.hpp
deleted file mode 100644
index 5e2ec22..0000000
--- a/include/boost/contract/aux_/decl/params.hpp
+++ /dev/null
@@ -1,108 +0,0 @@
-
-#ifndef BOOST_CONTRACT_AUX_PARAMS_HPP_
-#define BOOST_CONTRACT_AUX_PARAMS_HPP_
-
-#include <boost/contract/aux_/name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/param.hpp> // p
-#include <boost/contract/ext_/preprocessor/keyword/template.hpp>
-#include <boost/contract/ext_/preprocessor/utility/empty.hpp>
-#include <boost/preprocessor/seq/for_each_i.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/control/expr_iif.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/punctuation/comma_if.hpp>
-
-/* PUBLIC */
-
-#define BOOST_CONTRACT_AUX_PP_PARAM_INDEXED_NAME(i) \
-    BOOST_CONTRACT_AUX_NAME2(arg, i)
-
-// Types, names, and default arguments (for usual declarations, etc.).
-// If not EMPTY(), extra_params decl pp-tuple is appended at param list's end.
-#define BOOST_CONTRACT_AUX_PARAMS_WITH_DEFAULTS_D_R(d, r, id, tpl, \
-        params_traits, extra_params) \
-    BOOST_CONTRACT_AUX_PARAMS_(d, r, id, tpl, params_traits, extra_params, \
-            (1, 1, 0, 1))
-
-// Names only (for invocations, etc.).
-#define BOOST_CONTRACT_AUX_PARAMS_NAMES_D_R(d, r, id, tpl, \
-        params_traits, extra_params) \
-    BOOST_CONTRACT_AUX_PARAMS_(d, r, id, tpl, params_traits, extra_params, \
-            (0, 1, 0, 0))
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_AUX_PARAMS_(d, r, id, tpl, params_traits, extras, \
-        type_named_indexed_default) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(params_traits), \
-        BOOST_PP_TUPLE_EAT(3) \
-    , \
-        BOOST_PP_SEQ_FOR_EACH_I_R \
-    )(r, BOOST_CONTRACT_AUX_PARAM_, type_named_indexed_default, params_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(extras), \
-        BOOST_PP_TUPLE_EAT(1) \
-    , \
-        BOOST_CONTRACT_AUX_PARAMS_EXTRAS_ \
-    )(extras)
-
-#define BOOST_CONTRACT_AUX_PARAMS_EXTRAS_(extras) \
-    , BOOST_PP_TUPLE_REM_CTOR(extras)
-
-#define BOOST_CONTRACT_AUX_PARAM_(r, type_named_indexed_default, i, p) \
-    BOOST_CONTRACT_AUX_PARAM_ARGS_(r, i, p, \
-        BOOST_PP_TUPLE_ELEM(4, 0, type_named_indexed_default), \
-        BOOST_PP_TUPLE_ELEM(4, 1, type_named_indexed_default), \
-        BOOST_PP_TUPLE_ELEM(4, 2, type_named_indexed_default), \
-        BOOST_PP_TUPLE_ELEM(4, 3, type_named_indexed_default) \
-    )
-
-#define BOOST_CONTRACT_AUX_PARAM_ARGS_(r, i, p, \
-        has_type, has_name, has_index, has_default) \
-    BOOST_PP_COMMA_IF(i) \
-    BOOST_PP_IIF(has_type, \
-        BOOST_CONTRACT_AUX_PARAM_TYPE_ \
-    , \
-        BOOST_PP_TUPLE_EAT(1) \
-    )(p) \
-    BOOST_PP_IIF(has_name, \
-        BOOST_CONTRACT_AUX_PARAM_NAME_ \
-    , BOOST_PP_IIF(has_index, \
-        BOOST_CONTRACT_AUX_PARAM_INDEXED_NAME_ \
-    , \
-        BOOST_PP_TUPLE_EAT(1) \
-    ))(p, i) \
-    BOOST_PP_IIF(has_default, \
-        BOOST_CONTRACT_AUX_PARAM_DEFAULT_ \
-    , \
-        BOOST_PP_TUPLE_EAT(1) \
-    )(p)
-
-#define BOOST_CONTRACT_AUX_PARAM_TYPE_(p) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE(p)), \
-        BOOST_CONTRACT_AUX_TEMPLATE_PARAM_TEMPLATE_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE \
-    )(BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE(p))
-
-#define BOOST_CONTRACT_AUX_TEMPLATE_PARAM_TEMPLATE_(type) \
-    template< BOOST_PP_TUPLE_REM_CTOR( \
-        BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_PARAMS(type) \
-    ) > BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_KEY(type)
-
-#define BOOST_CONTRACT_AUX_PARAM_NAME_(p, i) \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME(p)
-
-#define BOOST_CONTRACT_AUX_PARAM_INDEXED_NAME_(p, i) \
-    BOOST_CONTRACT_AUX_PP_PARAM_INDEXED_NAME(i)
-
-#define BOOST_CONTRACT_AUX_PARAM_DEFAULT_(p) \
-    BOOST_PP_EXPR_IIF(BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_DEFAULT(p))), \
-        = BOOST_PP_TUPLE_REM(0) \
-    ) BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_DEFAULT(p)
-        
-#endif // #include guard
-
diff --git a/include/boost/contract/aux_/eval.hpp b/include/boost/contract/aux_/eval.hpp
deleted file mode 100644
index d38d2c4..0000000
--- a/include/boost/contract/aux_/eval.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#ifndef BOOST_CONTRACT_AUX_EVAL_HPP_
-#define BOOST_CONTRACT_AUX_EVAL_HPP_
-
-namespace boost { namespace contract { namespace aux {
-
-// Used to force evaluation of expressions before a class is constructed:
-//
-//  struct x : private eval<x>, ... {
-//      x ( ) : eval<x>((expr1, expr2, expr3, ...)), ... { ... }
-//      ...
-//  };
-template< class Derived >
-struct eval {
-    eval ( ) {}
-
-    template< typename Expr >
-    explicit eval ( Expr const& ) {}
-};
-
-} } } // namespace
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/private.hpp b/include/boost/contract/aux_/preprocessor/keyword/private.hpp
similarity index 100%
rename from include/boost/contract/ext_/preprocessor/keyword/private.hpp
rename to include/boost/contract/aux_/preprocessor/keyword/private.hpp
diff --git a/include/boost/contract/ext_/preprocessor/keyword/protected.hpp b/include/boost/contract/aux_/preprocessor/keyword/protected.hpp
similarity index 100%
rename from include/boost/contract/ext_/preprocessor/keyword/protected.hpp
rename to include/boost/contract/aux_/preprocessor/keyword/protected.hpp
diff --git a/include/boost/contract/ext_/preprocessor/keyword/public.hpp b/include/boost/contract/aux_/preprocessor/keyword/public.hpp
similarity index 100%
rename from include/boost/contract/ext_/preprocessor/keyword/public.hpp
rename to include/boost/contract/aux_/preprocessor/keyword/public.hpp
diff --git a/include/boost/contract/ext_/preprocessor/keyword/utility/is.hpp b/include/boost/contract/aux_/preprocessor/keyword/utility/is.hpp
similarity index 100%
rename from include/boost/contract/ext_/preprocessor/keyword/utility/is.hpp
rename to include/boost/contract/aux_/preprocessor/keyword/utility/is.hpp
diff --git a/include/boost/contract/ext_/preprocessor/keyword/utility/remove.hpp b/include/boost/contract/aux_/preprocessor/keyword/utility/remove.hpp
similarity index 100%
rename from include/boost/contract/ext_/preprocessor/keyword/utility/remove.hpp
rename to include/boost/contract/aux_/preprocessor/keyword/utility/remove.hpp
diff --git a/include/boost/contract/ext_/preprocessor/keyword/virtual.hpp b/include/boost/contract/aux_/preprocessor/keyword/virtual.hpp
similarity index 100%
rename from include/boost/contract/ext_/preprocessor/keyword/virtual.hpp
rename to include/boost/contract/aux_/preprocessor/keyword/virtual.hpp
diff --git a/include/boost/contract/ext_/sfinae.hpp b/include/boost/contract/aux_/sfinae.hpp
similarity index 100%
rename from include/boost/contract/ext_/sfinae.hpp
rename to include/boost/contract/aux_/sfinae.hpp
diff --git a/include/boost/contract/ext_/preprocessor/keyword-generate.py b/include/boost/contract/ext_/preprocessor/keyword-generate.py
deleted file mode 100644
index 070cdae..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword-generate.py
+++ /dev/null
@@ -1,179 +0,0 @@
-
-# Copyright (C) 2008-2015 Lorenzo Caminiti
-# Distributed under the Boost Software License, Version 1.0
-# (see accompanying file LICENSE_1_0.txt or a copy at
-# http://www.boost.org/LICENSE_1_0.txt)
-# Home at http://sourceforge.net/projects/contractpp
-
-import os
-import sys
-
-entries = [
-    {
-        'directory': '.',
-        'keywords': [
-            'alignas',
-            'alignof',
-            'and',
-            'and_eq',
-            'asm',
-            'auto',
-            'bitand',
-            'bitor',
-            'bool',
-            'break',
-            'case',
-            'catch',
-            'char',
-            'char16_t',
-            'char32_t',
-            'class',
-            'compl',
-            'const',
-            'constexpr',
-            'const_cast',
-            'continue',
-            'decltype',
-            'default',
-            'delete',
-            'do',
-            'double',
-            'dynamic_cast',
-            'else',
-            'enum',
-            'explicit',
-            'export',
-            'extern',
-            'false',
-            'final',
-            'float',
-            'for',
-            'friend',
-            'goto',
-            'if',
-            'inline',
-            'int',
-            'long',
-            'mutable',
-            'namespace',
-            'new',
-            'noexcept',
-            'not',
-            'not_eq',
-            'nullptr',
-            'operator',
-            'or',
-            'or_eq',
-            'override',
-            'private',
-            'protected',
-            'public',
-            'register',
-            'reinterpret_cast',
-            'return',
-            'short',
-            'signed',
-            'sizeof',
-            'static',
-            'static_assert',
-            'static_cast',
-            'struct',
-            'switch',
-            'template',
-            'this',
-            'thread_local',
-            'throw',
-            'true',
-            'try',
-            'typedef',
-            'typeid',
-            'typename',
-            'union',
-            'unsigned',
-            'using',
-            'virtual',
-            'void',
-            'volatile',
-            'wchar_t',
-            'while',
-            'xor',
-            'xor_eq'
-        ]
-    },
-    {
-        'directory': 'contract',
-        'keywords': [
-            'precondition',
-            'postcondition',
-            'extends',
-            'verbatim',
-            'ref',
-            'as'
-        ]
-    }
-]
-
-script = os.path.basename(sys.argv[0])
-root = sys.argv[0].replace('-generate.py', '', 1)
-for entry in entries:
-    directory = os.path.join(root, entry['directory'])
-    if not os.path.exists(directory): os.makedirs(directory)
-    keywords = entry['keywords']
-    for keyword in keywords:
-        filename = keyword + ".hpp"
-        path = os.path.join(directory, filename)
-        file = open(path, 'w')
-
-        file.write('''
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "{0}".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_{1}_FRONT(tokens) \\
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \\
-            BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_{1}_BACK(tokens) \\
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \\
-            BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `{2}` (this can be
-//               checked with `..._IS_{1}_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_REMOVE_FRONT(tokens) \\
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \\
-            BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `{2}` (this can be
-//               checked with `..._IS_{1}_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_REMOVE_BACK(tokens) \\
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \\
-            BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA{2} ,
-#define {2}BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY{2}
-#define {2}BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY
-
-#endif // #include guard
-
-'''.format(script, keyword.upper(), keyword.lower()))
-
-        file.close()
-        print "Written:", path
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/alignas.hpp b/include/boost/contract/ext_/preprocessor/keyword/alignas.hpp
deleted file mode 100644
index 78d9ddf..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/alignas.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNAS_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNAS_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `alignas` (this can be
-//               checked with `..._IS_ALIGNAS_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `alignas` (this can be
-//               checked with `..._IS_ALIGNAS_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMAalignas ,
-#define alignasBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTYalignas
-#define alignasBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/alignof.hpp b/include/boost/contract/ext_/preprocessor/keyword/alignof.hpp
deleted file mode 100644
index fcc2582..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/alignof.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNOF_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNOF_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `alignof` (this can be
-//               checked with `..._IS_ALIGNOF_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `alignof` (this can be
-//               checked with `..._IS_ALIGNOF_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMAalignof ,
-#define alignofBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTYalignof
-#define alignofBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/and.hpp b/include/boost/contract/ext_/preprocessor/keyword/and.hpp
deleted file mode 100644
index e002fb9..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/and.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_AND_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `and` (this can be
-//               checked with `..._IS_AND_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `and` (this can be
-//               checked with `..._IS_AND_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMAand ,
-#define andBOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTYand
-#define andBOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/and_eq.hpp b/include/boost/contract/ext_/preprocessor/keyword/and_eq.hpp
deleted file mode 100644
index 8187400..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/and_eq.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_EQ_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_EQ_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `and_eq` (this can be
-//               checked with `..._IS_AND_EQ_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `and_eq` (this can be
-//               checked with `..._IS_AND_EQ_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMAand_eq ,
-#define and_eqBOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTYand_eq
-#define and_eqBOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/asm.hpp b/include/boost/contract/ext_/preprocessor/keyword/asm.hpp
deleted file mode 100644
index b73f2ae..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/asm.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ASM_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ASM_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `asm` (this can be
-//               checked with `..._IS_ASM_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `asm` (this can be
-//               checked with `..._IS_ASM_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMAasm ,
-#define asmBOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTYasm
-#define asmBOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/auto.hpp b/include/boost/contract/ext_/preprocessor/keyword/auto.hpp
deleted file mode 100644
index 4c7598d..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/auto.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `auto` (this can be
-//               checked with `..._IS_AUTO_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `auto` (this can be
-//               checked with `..._IS_AUTO_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMAauto ,
-#define autoBOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTYauto
-#define autoBOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/bitand.hpp b/include/boost/contract/ext_/preprocessor/keyword/bitand.hpp
deleted file mode 100644
index c01beb0..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/bitand.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITAND_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITAND_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `bitand` (this can be
-//               checked with `..._IS_BITAND_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `bitand` (this can be
-//               checked with `..._IS_BITAND_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMAbitand ,
-#define bitandBOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTYbitand
-#define bitandBOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/bitor.hpp b/include/boost/contract/ext_/preprocessor/keyword/bitor.hpp
deleted file mode 100644
index 8936413..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/bitor.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITOR_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITOR_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `bitor` (this can be
-//               checked with `..._IS_BITOR_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `bitor` (this can be
-//               checked with `..._IS_BITOR_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMAbitor ,
-#define bitorBOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTYbitor
-#define bitorBOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/bool.hpp b/include/boost/contract/ext_/preprocessor/keyword/bool.hpp
deleted file mode 100644
index ab22ee7..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/bool.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BOOL_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BOOL_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `bool` (this can be
-//               checked with `..._IS_BOOL_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `bool` (this can be
-//               checked with `..._IS_BOOL_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMAbool ,
-#define boolBOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTYbool
-#define boolBOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/break.hpp b/include/boost/contract/ext_/preprocessor/keyword/break.hpp
deleted file mode 100644
index 5f831a0..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/break.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BREAK_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BREAK_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `break` (this can be
-//               checked with `..._IS_BREAK_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `break` (this can be
-//               checked with `..._IS_BREAK_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMAbreak ,
-#define breakBOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTYbreak
-#define breakBOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/case.hpp b/include/boost/contract/ext_/preprocessor/keyword/case.hpp
deleted file mode 100644
index 7178a84..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/case.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CASE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CASE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `case` (this can be
-//               checked with `..._IS_CASE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `case` (this can be
-//               checked with `..._IS_CASE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMAcase ,
-#define caseBOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTYcase
-#define caseBOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/catch.hpp b/include/boost/contract/ext_/preprocessor/keyword/catch.hpp
deleted file mode 100644
index 94edac1..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/catch.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CATCH_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CATCH_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `catch` (this can be
-//               checked with `..._IS_CATCH_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `catch` (this can be
-//               checked with `..._IS_CATCH_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMAcatch ,
-#define catchBOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTYcatch
-#define catchBOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/char.hpp b/include/boost/contract/ext_/preprocessor/keyword/char.hpp
deleted file mode 100644
index 86022ea..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/char.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `char` (this can be
-//               checked with `..._IS_CHAR_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `char` (this can be
-//               checked with `..._IS_CHAR_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMAchar ,
-#define charBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTYchar
-#define charBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/char16_t.hpp b/include/boost/contract/ext_/preprocessor/keyword/char16_t.hpp
deleted file mode 100644
index 7829a07..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/char16_t.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR16_T_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR16_T_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `char16_t` (this can be
-//               checked with `..._IS_CHAR16_T_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `char16_t` (this can be
-//               checked with `..._IS_CHAR16_T_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMAchar16_t ,
-#define char16_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTYchar16_t
-#define char16_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/char32_t.hpp b/include/boost/contract/ext_/preprocessor/keyword/char32_t.hpp
deleted file mode 100644
index 6a68ca0..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/char32_t.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR32_T_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR32_T_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `char32_t` (this can be
-//               checked with `..._IS_CHAR32_T_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `char32_t` (this can be
-//               checked with `..._IS_CHAR32_T_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMAchar32_t ,
-#define char32_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTYchar32_t
-#define char32_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/class.hpp b/include/boost/contract/ext_/preprocessor/keyword/class.hpp
deleted file mode 100644
index f142250..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/class.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `class` (this can be
-//               checked with `..._IS_CLASS_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `class` (this can be
-//               checked with `..._IS_CLASS_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMAclass ,
-#define classBOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTYclass
-#define classBOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/compl.hpp b/include/boost/contract/ext_/preprocessor/keyword/compl.hpp
deleted file mode 100644
index e5f8a4e..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/compl.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_COMPL_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_COMPL_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `compl` (this can be
-//               checked with `..._IS_COMPL_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `compl` (this can be
-//               checked with `..._IS_COMPL_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMAcompl ,
-#define complBOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTYcompl
-#define complBOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/const.hpp b/include/boost/contract/ext_/preprocessor/keyword/const.hpp
deleted file mode 100644
index a3df7f7..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/const.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `const` (this can be
-//               checked with `..._IS_CONST_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `const` (this can be
-//               checked with `..._IS_CONST_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMAconst ,
-#define constBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTYconst
-#define constBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/const_cast.hpp b/include/boost/contract/ext_/preprocessor/keyword/const_cast.hpp
deleted file mode 100644
index 9012cf8..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/const_cast.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_CAST_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_CAST_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `const_cast` (this can be
-//               checked with `..._IS_CONST_CAST_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `const_cast` (this can be
-//               checked with `..._IS_CONST_CAST_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMAconst_cast ,
-#define const_castBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTYconst_cast
-#define const_castBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/constexpr.hpp b/include/boost/contract/ext_/preprocessor/keyword/constexpr.hpp
deleted file mode 100644
index 3404485..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/constexpr.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONSTEXPR_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONSTEXPR_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `constexpr` (this can be
-//               checked with `..._IS_CONSTEXPR_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `constexpr` (this can be
-//               checked with `..._IS_CONSTEXPR_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMAconstexpr ,
-#define constexprBOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTYconstexpr
-#define constexprBOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/continue.hpp b/include/boost/contract/ext_/preprocessor/keyword/continue.hpp
deleted file mode 100644
index 08dcbdf..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/continue.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONTINUE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONTINUE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `continue` (this can be
-//               checked with `..._IS_CONTINUE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `continue` (this can be
-//               checked with `..._IS_CONTINUE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMAcontinue ,
-#define continueBOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTYcontinue
-#define continueBOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/as.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/as.hpp
deleted file mode 100644
index 1ae66f1..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/contract/as.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_AS_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AS_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AS_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AS_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `as` (this can be
-//               checked with `..._IS_AS_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AS_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `as` (this can be
-//               checked with `..._IS_AS_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AS_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_COMMAas ,
-#define asBOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_EMPTYas
-#define asBOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/extends.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/extends.hpp
deleted file mode 100644
index b0a6703..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/contract/extends.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTENDS_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTENDS_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `extends` (this can be
-//               checked with `..._IS_EXTENDS_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `extends` (this can be
-//               checked with `..._IS_EXTENDS_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMAextends ,
-#define extendsBOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTYextends
-#define extendsBOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/postcondition.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/postcondition.hpp
deleted file mode 100644
index 388ad2d..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/contract/postcondition.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_POSTCONDITION_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_POSTCONDITION_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `postcondition` (this can be
-//               checked with `..._IS_POSTCONDITION_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `postcondition` (this can be
-//               checked with `..._IS_POSTCONDITION_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMApostcondition ,
-#define postconditionBOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTYpostcondition
-#define postconditionBOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/precondition.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/precondition.hpp
deleted file mode 100644
index d599019..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/contract/precondition.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRECONDITION_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRECONDITION_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `precondition` (this can be
-//               checked with `..._IS_PRECONDITION_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `precondition` (this can be
-//               checked with `..._IS_PRECONDITION_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMAprecondition ,
-#define preconditionBOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTYprecondition
-#define preconditionBOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/ref.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/ref.hpp
deleted file mode 100644
index 16752c6..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/contract/ref.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_REF_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REF_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `ref` (this can be
-//               checked with `..._IS_REF_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REF_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `ref` (this can be
-//               checked with `..._IS_REF_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REF_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_COMMAref ,
-#define refBOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_EMPTYref
-#define refBOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/verbatim.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/verbatim.hpp
deleted file mode 100644
index 1e15125..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/contract/verbatim.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VERBATIM_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VERBATIM_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `verbatim` (this can be
-//               checked with `..._IS_VERBATIM_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `verbatim` (this can be
-//               checked with `..._IS_VERBATIM_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMAverbatim ,
-#define verbatimBOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTYverbatim
-#define verbatimBOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/decltype.hpp b/include/boost/contract/ext_/preprocessor/keyword/decltype.hpp
deleted file mode 100644
index 18e5b56..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/decltype.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DECLTYPE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DECLTYPE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `decltype` (this can be
-//               checked with `..._IS_DECLTYPE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `decltype` (this can be
-//               checked with `..._IS_DECLTYPE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMAdecltype ,
-#define decltypeBOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTYdecltype
-#define decltypeBOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/default.hpp b/include/boost/contract/ext_/preprocessor/keyword/default.hpp
deleted file mode 100644
index 16c7317..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/default.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `default` (this can be
-//               checked with `..._IS_DEFAULT_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `default` (this can be
-//               checked with `..._IS_DEFAULT_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMAdefault ,
-#define defaultBOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTYdefault
-#define defaultBOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/delete.hpp b/include/boost/contract/ext_/preprocessor/keyword/delete.hpp
deleted file mode 100644
index b6260fd..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/delete.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DELETE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DELETE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `delete` (this can be
-//               checked with `..._IS_DELETE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `delete` (this can be
-//               checked with `..._IS_DELETE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMAdelete ,
-#define deleteBOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTYdelete
-#define deleteBOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/do.hpp b/include/boost/contract/ext_/preprocessor/keyword/do.hpp
deleted file mode 100644
index a135e3f..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/do.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DO_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DO_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DO_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `do` (this can be
-//               checked with `..._IS_DO_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `do` (this can be
-//               checked with `..._IS_DO_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMAdo ,
-#define doBOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTYdo
-#define doBOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/double.hpp b/include/boost/contract/ext_/preprocessor/keyword/double.hpp
deleted file mode 100644
index 9a9ec1f..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/double.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DOUBLE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DOUBLE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `double` (this can be
-//               checked with `..._IS_DOUBLE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `double` (this can be
-//               checked with `..._IS_DOUBLE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMAdouble ,
-#define doubleBOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTYdouble
-#define doubleBOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/dynamic_cast.hpp b/include/boost/contract/ext_/preprocessor/keyword/dynamic_cast.hpp
deleted file mode 100644
index d8d3fbd..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/dynamic_cast.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DYNAMIC_CAST_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DYNAMIC_CAST_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `dynamic_cast` (this can be
-//               checked with `..._IS_DYNAMIC_CAST_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `dynamic_cast` (this can be
-//               checked with `..._IS_DYNAMIC_CAST_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMAdynamic_cast ,
-#define dynamic_castBOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTYdynamic_cast
-#define dynamic_castBOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/else.hpp b/include/boost/contract/ext_/preprocessor/keyword/else.hpp
deleted file mode 100644
index 6e0a5a6..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/else.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `else` (this can be
-//               checked with `..._IS_ELSE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `else` (this can be
-//               checked with `..._IS_ELSE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMAelse ,
-#define elseBOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTYelse
-#define elseBOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/enum.hpp b/include/boost/contract/ext_/preprocessor/keyword/enum.hpp
deleted file mode 100644
index a7151e2..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/enum.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ENUM_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ENUM_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `enum` (this can be
-//               checked with `..._IS_ENUM_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `enum` (this can be
-//               checked with `..._IS_ENUM_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMAenum ,
-#define enumBOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTYenum
-#define enumBOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/explicit.hpp b/include/boost/contract/ext_/preprocessor/keyword/explicit.hpp
deleted file mode 100644
index 362c421..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/explicit.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPLICIT_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPLICIT_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `explicit` (this can be
-//               checked with `..._IS_EXPLICIT_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `explicit` (this can be
-//               checked with `..._IS_EXPLICIT_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMAexplicit ,
-#define explicitBOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTYexplicit
-#define explicitBOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/export.hpp b/include/boost/contract/ext_/preprocessor/keyword/export.hpp
deleted file mode 100644
index f139e3d..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/export.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPORT_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPORT_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `export` (this can be
-//               checked with `..._IS_EXPORT_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `export` (this can be
-//               checked with `..._IS_EXPORT_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMAexport ,
-#define exportBOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTYexport
-#define exportBOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/extern.hpp b/include/boost/contract/ext_/preprocessor/keyword/extern.hpp
deleted file mode 100644
index ae33a5a..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/extern.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTERN_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTERN_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `extern` (this can be
-//               checked with `..._IS_EXTERN_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `extern` (this can be
-//               checked with `..._IS_EXTERN_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMAextern ,
-#define externBOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTYextern
-#define externBOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/false.hpp b/include/boost/contract/ext_/preprocessor/keyword/false.hpp
deleted file mode 100644
index 6339994..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/false.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FALSE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FALSE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `false` (this can be
-//               checked with `..._IS_FALSE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `false` (this can be
-//               checked with `..._IS_FALSE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMAfalse ,
-#define falseBOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTYfalse
-#define falseBOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/final.hpp b/include/boost/contract/ext_/preprocessor/keyword/final.hpp
deleted file mode 100644
index b163d51..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/final.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FINAL_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FINAL_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `final` (this can be
-//               checked with `..._IS_FINAL_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `final` (this can be
-//               checked with `..._IS_FINAL_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMAfinal ,
-#define finalBOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTYfinal
-#define finalBOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/float.hpp b/include/boost/contract/ext_/preprocessor/keyword/float.hpp
deleted file mode 100644
index f7e5be2..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/float.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FLOAT_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FLOAT_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `float` (this can be
-//               checked with `..._IS_FLOAT_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `float` (this can be
-//               checked with `..._IS_FLOAT_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMAfloat ,
-#define floatBOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTYfloat
-#define floatBOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/for.hpp b/include/boost/contract/ext_/preprocessor/keyword/for.hpp
deleted file mode 100644
index c2d0472..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/for.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FOR_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FOR_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `for` (this can be
-//               checked with `..._IS_FOR_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `for` (this can be
-//               checked with `..._IS_FOR_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMAfor ,
-#define forBOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTYfor
-#define forBOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/friend.hpp b/include/boost/contract/ext_/preprocessor/keyword/friend.hpp
deleted file mode 100644
index e8799c2..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/friend.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FRIEND_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FRIEND_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `friend` (this can be
-//               checked with `..._IS_FRIEND_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `friend` (this can be
-//               checked with `..._IS_FRIEND_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMAfriend ,
-#define friendBOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTYfriend
-#define friendBOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/goto.hpp b/include/boost/contract/ext_/preprocessor/keyword/goto.hpp
deleted file mode 100644
index 90f1345..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/goto.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_GOTO_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_GOTO_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `goto` (this can be
-//               checked with `..._IS_GOTO_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `goto` (this can be
-//               checked with `..._IS_GOTO_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMAgoto ,
-#define gotoBOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTYgoto
-#define gotoBOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/if.hpp b/include/boost/contract/ext_/preprocessor/keyword/if.hpp
deleted file mode 100644
index 3b1d17b..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/if.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_IF_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `if` (this can be
-//               checked with `..._IS_IF_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `if` (this can be
-//               checked with `..._IS_IF_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMAif ,
-#define ifBOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTYif
-#define ifBOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/inline.hpp b/include/boost/contract/ext_/preprocessor/keyword/inline.hpp
deleted file mode 100644
index 00fd4af..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/inline.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INLINE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INLINE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `inline` (this can be
-//               checked with `..._IS_INLINE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `inline` (this can be
-//               checked with `..._IS_INLINE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMAinline ,
-#define inlineBOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTYinline
-#define inlineBOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/int.hpp b/include/boost/contract/ext_/preprocessor/keyword/int.hpp
deleted file mode 100644
index d964fe8..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/int.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_INT_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INT_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INT_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `int` (this can be
-//               checked with `..._IS_INT_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `int` (this can be
-//               checked with `..._IS_INT_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMAint ,
-#define intBOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTYint
-#define intBOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/long.hpp b/include/boost/contract/ext_/preprocessor/keyword/long.hpp
deleted file mode 100644
index f356b7b..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/long.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_LONG_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_LONG_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `long` (this can be
-//               checked with `..._IS_LONG_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `long` (this can be
-//               checked with `..._IS_LONG_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMAlong ,
-#define longBOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTYlong
-#define longBOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/mutable.hpp b/include/boost/contract/ext_/preprocessor/keyword/mutable.hpp
deleted file mode 100644
index 90582f5..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/mutable.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_MUTABLE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_MUTABLE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `mutable` (this can be
-//               checked with `..._IS_MUTABLE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `mutable` (this can be
-//               checked with `..._IS_MUTABLE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMAmutable ,
-#define mutableBOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTYmutable
-#define mutableBOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/namespace.hpp b/include/boost/contract/ext_/preprocessor/keyword/namespace.hpp
deleted file mode 100644
index 4496d66..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/namespace.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `namespace` (this can be
-//               checked with `..._IS_NAMESPACE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `namespace` (this can be
-//               checked with `..._IS_NAMESPACE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMAnamespace ,
-#define namespaceBOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTYnamespace
-#define namespaceBOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/new.hpp b/include/boost/contract/ext_/preprocessor/keyword/new.hpp
deleted file mode 100644
index 3b5db8d..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/new.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NEW_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NEW_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `new` (this can be
-//               checked with `..._IS_NEW_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `new` (this can be
-//               checked with `..._IS_NEW_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMAnew ,
-#define newBOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTYnew
-#define newBOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/noexcept.hpp b/include/boost/contract/ext_/preprocessor/keyword/noexcept.hpp
deleted file mode 100644
index a9d975e..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/noexcept.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOEXCEPT_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOEXCEPT_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `noexcept` (this can be
-//               checked with `..._IS_NOEXCEPT_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `noexcept` (this can be
-//               checked with `..._IS_NOEXCEPT_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMAnoexcept ,
-#define noexceptBOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTYnoexcept
-#define noexceptBOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/not.hpp b/include/boost/contract/ext_/preprocessor/keyword/not.hpp
deleted file mode 100644
index 82058b0..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/not.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `not` (this can be
-//               checked with `..._IS_NOT_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `not` (this can be
-//               checked with `..._IS_NOT_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMAnot ,
-#define notBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTYnot
-#define notBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/not_eq.hpp b/include/boost/contract/ext_/preprocessor/keyword/not_eq.hpp
deleted file mode 100644
index f3a8dc5..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/not_eq.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_EQ_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_EQ_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `not_eq` (this can be
-//               checked with `..._IS_NOT_EQ_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `not_eq` (this can be
-//               checked with `..._IS_NOT_EQ_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMAnot_eq ,
-#define not_eqBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTYnot_eq
-#define not_eqBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/nullptr.hpp b/include/boost/contract/ext_/preprocessor/keyword/nullptr.hpp
deleted file mode 100644
index 88dfa6f..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/nullptr.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NULLPTR_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NULLPTR_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `nullptr` (this can be
-//               checked with `..._IS_NULLPTR_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `nullptr` (this can be
-//               checked with `..._IS_NULLPTR_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMAnullptr ,
-#define nullptrBOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTYnullptr
-#define nullptrBOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/operator.hpp b/include/boost/contract/ext_/preprocessor/keyword/operator.hpp
deleted file mode 100644
index b2b46ba..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/operator.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `operator` (this can be
-//               checked with `..._IS_OPERATOR_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `operator` (this can be
-//               checked with `..._IS_OPERATOR_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMAoperator ,
-#define operatorBOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTYoperator
-#define operatorBOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/or.hpp b/include/boost/contract/ext_/preprocessor/keyword/or.hpp
deleted file mode 100644
index eb7e036..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/or.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_OR_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `or` (this can be
-//               checked with `..._IS_OR_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `or` (this can be
-//               checked with `..._IS_OR_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMAor ,
-#define orBOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTYor
-#define orBOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/or_eq.hpp b/include/boost/contract/ext_/preprocessor/keyword/or_eq.hpp
deleted file mode 100644
index f4e4a87..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/or_eq.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_EQ_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_EQ_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `or_eq` (this can be
-//               checked with `..._IS_OR_EQ_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `or_eq` (this can be
-//               checked with `..._IS_OR_EQ_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMAor_eq ,
-#define or_eqBOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTYor_eq
-#define or_eqBOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/override.hpp b/include/boost/contract/ext_/preprocessor/keyword/override.hpp
deleted file mode 100644
index fdde6b5..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/override.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OVERRIDE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OVERRIDE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `override` (this can be
-//               checked with `..._IS_OVERRIDE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `override` (this can be
-//               checked with `..._IS_OVERRIDE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMAoverride ,
-#define overrideBOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTYoverride
-#define overrideBOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/register.hpp b/include/boost/contract/ext_/preprocessor/keyword/register.hpp
deleted file mode 100644
index 8215cf3..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/register.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REGISTER_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REGISTER_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `register` (this can be
-//               checked with `..._IS_REGISTER_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `register` (this can be
-//               checked with `..._IS_REGISTER_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMAregister ,
-#define registerBOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTYregister
-#define registerBOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/reinterpret_cast.hpp b/include/boost/contract/ext_/preprocessor/keyword/reinterpret_cast.hpp
deleted file mode 100644
index 927b532..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/reinterpret_cast.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REINTERPRET_CAST_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REINTERPRET_CAST_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `reinterpret_cast` (this can be
-//               checked with `..._IS_REINTERPRET_CAST_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `reinterpret_cast` (this can be
-//               checked with `..._IS_REINTERPRET_CAST_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMAreinterpret_cast ,
-#define reinterpret_castBOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTYreinterpret_cast
-#define reinterpret_castBOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/return.hpp b/include/boost/contract/ext_/preprocessor/keyword/return.hpp
deleted file mode 100644
index 487b5b7..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/return.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `return` (this can be
-//               checked with `..._IS_RETURN_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `return` (this can be
-//               checked with `..._IS_RETURN_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMAreturn ,
-#define returnBOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTYreturn
-#define returnBOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/short.hpp b/include/boost/contract/ext_/preprocessor/keyword/short.hpp
deleted file mode 100644
index 4ca9dcc..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/short.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SHORT_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SHORT_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `short` (this can be
-//               checked with `..._IS_SHORT_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `short` (this can be
-//               checked with `..._IS_SHORT_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMAshort ,
-#define shortBOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTYshort
-#define shortBOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/signed.hpp b/include/boost/contract/ext_/preprocessor/keyword/signed.hpp
deleted file mode 100644
index b87a23a..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/signed.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIGNED_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIGNED_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `signed` (this can be
-//               checked with `..._IS_SIGNED_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `signed` (this can be
-//               checked with `..._IS_SIGNED_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMAsigned ,
-#define signedBOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTYsigned
-#define signedBOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/sizeof.hpp b/include/boost/contract/ext_/preprocessor/keyword/sizeof.hpp
deleted file mode 100644
index 925d4fb..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/sizeof.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIZEOF_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIZEOF_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `sizeof` (this can be
-//               checked with `..._IS_SIZEOF_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `sizeof` (this can be
-//               checked with `..._IS_SIZEOF_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMAsizeof ,
-#define sizeofBOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTYsizeof
-#define sizeofBOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/static.hpp b/include/boost/contract/ext_/preprocessor/keyword/static.hpp
deleted file mode 100644
index 6b737df..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/static.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `static` (this can be
-//               checked with `..._IS_STATIC_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `static` (this can be
-//               checked with `..._IS_STATIC_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMAstatic ,
-#define staticBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTYstatic
-#define staticBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/static_assert.hpp b/include/boost/contract/ext_/preprocessor/keyword/static_assert.hpp
deleted file mode 100644
index 3e05070..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/static_assert.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_ASSERT_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_ASSERT_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `static_assert` (this can be
-//               checked with `..._IS_STATIC_ASSERT_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `static_assert` (this can be
-//               checked with `..._IS_STATIC_ASSERT_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMAstatic_assert ,
-#define static_assertBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTYstatic_assert
-#define static_assertBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/static_cast.hpp b/include/boost/contract/ext_/preprocessor/keyword/static_cast.hpp
deleted file mode 100644
index f2d69bc..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/static_cast.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_CAST_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_CAST_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `static_cast` (this can be
-//               checked with `..._IS_STATIC_CAST_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `static_cast` (this can be
-//               checked with `..._IS_STATIC_CAST_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMAstatic_cast ,
-#define static_castBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTYstatic_cast
-#define static_castBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/struct.hpp b/include/boost/contract/ext_/preprocessor/keyword/struct.hpp
deleted file mode 100644
index 333f463..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/struct.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STRUCT_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STRUCT_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `struct` (this can be
-//               checked with `..._IS_STRUCT_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `struct` (this can be
-//               checked with `..._IS_STRUCT_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMAstruct ,
-#define structBOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTYstruct
-#define structBOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/switch.hpp b/include/boost/contract/ext_/preprocessor/keyword/switch.hpp
deleted file mode 100644
index 04e096d..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/switch.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SWITCH_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SWITCH_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `switch` (this can be
-//               checked with `..._IS_SWITCH_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `switch` (this can be
-//               checked with `..._IS_SWITCH_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMAswitch ,
-#define switchBOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTYswitch
-#define switchBOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/template.hpp b/include/boost/contract/ext_/preprocessor/keyword/template.hpp
deleted file mode 100644
index cf9f041..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/template.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `template` (this can be
-//               checked with `..._IS_TEMPLATE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `template` (this can be
-//               checked with `..._IS_TEMPLATE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMAtemplate ,
-#define templateBOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTYtemplate
-#define templateBOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/this.hpp b/include/boost/contract/ext_/preprocessor/keyword/this.hpp
deleted file mode 100644
index 3639e1f..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/this.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THIS_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THIS_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `this` (this can be
-//               checked with `..._IS_THIS_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `this` (this can be
-//               checked with `..._IS_THIS_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMAthis ,
-#define thisBOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTYthis
-#define thisBOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/thread_local.hpp b/include/boost/contract/ext_/preprocessor/keyword/thread_local.hpp
deleted file mode 100644
index dc542e6..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/thread_local.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THREAD_LOCAL_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THREAD_LOCAL_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `thread_local` (this can be
-//               checked with `..._IS_THREAD_LOCAL_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `thread_local` (this can be
-//               checked with `..._IS_THREAD_LOCAL_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMAthread_local ,
-#define thread_localBOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTYthread_local
-#define thread_localBOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/throw.hpp b/include/boost/contract/ext_/preprocessor/keyword/throw.hpp
deleted file mode 100644
index 0f53f68..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/throw.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THROW_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THROW_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `throw` (this can be
-//               checked with `..._IS_THROW_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `throw` (this can be
-//               checked with `..._IS_THROW_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMAthrow ,
-#define throwBOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTYthrow
-#define throwBOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/true.hpp b/include/boost/contract/ext_/preprocessor/keyword/true.hpp
deleted file mode 100644
index 141c3ea..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/true.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRUE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRUE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `true` (this can be
-//               checked with `..._IS_TRUE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `true` (this can be
-//               checked with `..._IS_TRUE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMAtrue ,
-#define trueBOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTYtrue
-#define trueBOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/try.hpp b/include/boost/contract/ext_/preprocessor/keyword/try.hpp
deleted file mode 100644
index a37b998..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/try.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRY_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRY_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `try` (this can be
-//               checked with `..._IS_TRY_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `try` (this can be
-//               checked with `..._IS_TRY_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMAtry ,
-#define tryBOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTYtry
-#define tryBOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/typedef.hpp b/include/boost/contract/ext_/preprocessor/keyword/typedef.hpp
deleted file mode 100644
index 1bab3c7..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/typedef.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `typedef` (this can be
-//               checked with `..._IS_TYPEDEF_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `typedef` (this can be
-//               checked with `..._IS_TYPEDEF_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMAtypedef ,
-#define typedefBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTYtypedef
-#define typedefBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/typeid.hpp b/include/boost/contract/ext_/preprocessor/keyword/typeid.hpp
deleted file mode 100644
index 4ca9795..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/typeid.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEID_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEID_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `typeid` (this can be
-//               checked with `..._IS_TYPEID_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `typeid` (this can be
-//               checked with `..._IS_TYPEID_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMAtypeid ,
-#define typeidBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTYtypeid
-#define typeidBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/typename.hpp b/include/boost/contract/ext_/preprocessor/keyword/typename.hpp
deleted file mode 100644
index 71b9c43..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/typename.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPENAME_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPENAME_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `typename` (this can be
-//               checked with `..._IS_TYPENAME_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `typename` (this can be
-//               checked with `..._IS_TYPENAME_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMAtypename ,
-#define typenameBOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTYtypename
-#define typenameBOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/union.hpp b/include/boost/contract/ext_/preprocessor/keyword/union.hpp
deleted file mode 100644
index 2d67f4c..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/union.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNION_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNION_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `union` (this can be
-//               checked with `..._IS_UNION_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `union` (this can be
-//               checked with `..._IS_UNION_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMAunion ,
-#define unionBOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTYunion
-#define unionBOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/unsigned.hpp b/include/boost/contract/ext_/preprocessor/keyword/unsigned.hpp
deleted file mode 100644
index c503353..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/unsigned.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNSIGNED_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNSIGNED_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `unsigned` (this can be
-//               checked with `..._IS_UNSIGNED_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `unsigned` (this can be
-//               checked with `..._IS_UNSIGNED_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMAunsigned ,
-#define unsignedBOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTYunsigned
-#define unsignedBOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/using.hpp b/include/boost/contract/ext_/preprocessor/keyword/using.hpp
deleted file mode 100644
index 610459c..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/using.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_USING_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `using` (this can be
-//               checked with `..._IS_USING_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `using` (this can be
-//               checked with `..._IS_USING_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMAusing ,
-#define usingBOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTYusing
-#define usingBOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/void.hpp b/include/boost/contract/ext_/preprocessor/keyword/void.hpp
deleted file mode 100644
index 70de6c5..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/void.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `void` (this can be
-//               checked with `..._IS_VOID_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `void` (this can be
-//               checked with `..._IS_VOID_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMAvoid ,
-#define voidBOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTYvoid
-#define voidBOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/volatile.hpp b/include/boost/contract/ext_/preprocessor/keyword/volatile.hpp
deleted file mode 100644
index 22aa9f1..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/volatile.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOLATILE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOLATILE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `volatile` (this can be
-//               checked with `..._IS_VOLATILE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `volatile` (this can be
-//               checked with `..._IS_VOLATILE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMAvolatile ,
-#define volatileBOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTYvolatile
-#define volatileBOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/wchar_t.hpp b/include/boost/contract/ext_/preprocessor/keyword/wchar_t.hpp
deleted file mode 100644
index ebc76ca..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/wchar_t.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WCHAR_T_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WCHAR_T_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `wchar_t` (this can be
-//               checked with `..._IS_WCHAR_T_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `wchar_t` (this can be
-//               checked with `..._IS_WCHAR_T_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMAwchar_t ,
-#define wchar_tBOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTYwchar_t
-#define wchar_tBOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/while.hpp b/include/boost/contract/ext_/preprocessor/keyword/while.hpp
deleted file mode 100644
index 018395f..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/while.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WHILE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WHILE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `while` (this can be
-//               checked with `..._IS_WHILE_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `while` (this can be
-//               checked with `..._IS_WHILE_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMAwhile ,
-#define whileBOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTYwhile
-#define whileBOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/xor.hpp b/include/boost/contract/ext_/preprocessor/keyword/xor.hpp
deleted file mode 100644
index 2ef3a37..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/xor.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `xor` (this can be
-//               checked with `..._IS_XOR_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `xor` (this can be
-//               checked with `..._IS_XOR_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMAxor ,
-#define xorBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTYxor
-#define xorBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/keyword/xor_eq.hpp b/include/boost/contract/ext_/preprocessor/keyword/xor_eq.hpp
deleted file mode 100644
index 98720b3..0000000
--- a/include/boost/contract/ext_/preprocessor/keyword/xor_eq.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "keyword-generate.py".
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_EQ_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_EQ_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `xor_eq` (this can be
-//               checked with `..._IS_XOR_EQ_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `xor_eq` (this can be
-//               checked with `..._IS_XOR_EQ_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMAxor_eq ,
-#define xor_eqBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMA ,
-
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTYxor_eq
-#define xor_eqBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/paren/front.hpp b/include/boost/contract/ext_/preprocessor/paren/front.hpp
deleted file mode 100644
index 0dc179b..0000000
--- a/include/boost/contract/ext_/preprocessor/paren/front.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_PAREN_FRONT_HPP_
-#define BOOST_CONTRACT_EXT_PP_PAREN_FRONT_HPP_
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_PAREN_FRONT_SPLIT_(...) (__VA_ARGS__) ,
-
-#define BOOST_CONTRACT_EXT_PP_PAREN_FRONT_PAIR_FIRST_(first, second) first
-
-// NOTE: Using `BOOST_PP_TUPLE_ELEM(2, 0, pair)` confuses MSVC here. 
-#define BOOST_CONTRACT_EXT_PP_PAREN_FRONT_OO_(pair) \
-    BOOST_CONTRACT_EXT_PP_PAREN_FRONT_PAIR_FIRST_ pair
-
-/* PUBLIC */
-
-// Precondition: tokens == `(...[, ...]*) ...[, ...]*`.
-// Expand to `(...[, ...]*)` in front above (discarding any trailing tokens).
-// NOTE: To get the trailing `...[, ...]*` use `BOOST_PP_TUPLE_EAT(0) tokens`.
-#define BOOST_CONTRACT_EXT_PP_PAREN_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_PAREN_FRONT_OO_(( \
-            BOOST_CONTRACT_EXT_PP_PAREN_FRONT_SPLIT_ tokens))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/paren/has.hpp b/include/boost/contract/ext_/preprocessor/paren/has.hpp
deleted file mode 100644
index cea1054..0000000
--- a/include/boost/contract/ext_/preprocessor/paren/has.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-
-// Copyright (C) 2008-2012 Lorenzo Caminiti
-// Distributed under the Boost Software License, Version 1.0
-// (see accompanying file LICENSE_1_0.txt or a copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-// Home at http://sourceforge.net/projects/contractpp
-
-#ifndef BOOST_CONTRACT_EXT_PP_HAS_PAREN_HPP_
-#define BOOST_CONTRACT_EXT_PP_HAS_PAREN_HPP_
-
-#include <boost/preprocessor/detail/check.hpp>
-
-/* PRIVATE */
-
-// Variadic so handle any arity.
-#define BOOST_CONTRACT_EXT_PP_HAS_PAREN_CHECK(...) \
-    1
-
-#define BOOST_PP_CHECK_RESULT_BOOST_CONTRACT_EXT_PP_HAS_PAREN_CHECK \
-    0, BOOST_PP_NIL
-
-/* PUBLIC */
-
-// NOTE: tokens can be EMPTY() (because of the variadic CHECK(...) above).
-// Implementation: Adapted from BOOST_PP_IS_UNARY but for variadic macros.
-#define BOOST_CONTRACT_EXT_PP_HAS_PAREN(tokens) \
-    BOOST_PP_CHECK(tokens, BOOST_CONTRACT_EXT_PP_HAS_PAREN_CHECK)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/parenthesize.hpp b/include/boost/contract/ext_/preprocessor/parenthesize.hpp
deleted file mode 100644
index 845d1e0..0000000
--- a/include/boost/contract/ext_/preprocessor/parenthesize.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_PARENTHESIZE_HPP_
-#define BOOST_CONTRACT_EXT_PP_PARENTHESIZE_HPP_
-
-#include <boost/contract/ext_/preprocessor/paren/has.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-
-/* PUBLIC */
-
-// NOTE: tokens can be EMPTY().
-#define BOOST_CONTRACT_EXT_PP_PARENTHESIZE(tokens) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(tokens), tokens, (tokens))
-
-// NOTE: tokens can be EMPTY().
-#define BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE(tokens) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(tokens), \
-        BOOST_PP_TUPLE_REM_CTOR \
-    , \
-        BOOST_PP_TUPLE_REM(1) \
-    )(tokens)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/stringize.hpp b/include/boost/contract/ext_/preprocessor/stringize.hpp
deleted file mode 100644
index 30acc73..0000000
--- a/include/boost/contract/ext_/preprocessor/stringize.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_STRINGIZE_HPP_
-#define BOOST_CONTRACT_EXT_PP_STRINGIZE_HPP_
-
-#include <boost/contract/ext_/preprocessor/utility/empty.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/stringize.hpp>
-
-/* PUBLIC */
-
-// Handle tokens == EMPTY() (BOOST_PP_STRINGIZE does not).
-#define BOOST_CONTRACT_EXT_PP_STRINGIZE(tokens) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(tokens), \
-        "" BOOST_PP_TUPLE_EAT(1) \
-    , \
-        BOOST_PP_STRINGIZE \
-    )(tokens)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion-generate.py b/include/boost/contract/ext_/preprocessor/traits/assertion-generate.py
deleted file mode 100644
index 3a9fc16..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion-generate.py
+++ /dev/null
@@ -1,233 +0,0 @@
-
-import os
-import sys
-
-LIMIT = 64
-
-def code():
-    result = ''
-    for n in range(1, LIMIT + 1):
-        result = result + '''
-/* PUBLIC ({0}) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_{0}(d, l, decl) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_{0}_ \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_{0}_ \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_{0}_ \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0} \\
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \\
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \\
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_{0} \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_ \\
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_{0}(d, l, decl) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_{0}_ \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_{0}_ \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_{0}_ \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_{0} \\
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \\
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \\
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_{0} \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_{0}_ \\
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_{0}( \\
-        d, l, decl) \\
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \\
-            decl), \\
-        1 \\
-    , \\
-        0 \\
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_{0}( \\
-        d, l, decl) \\
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \\
-            decl), \\
-        1 \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \\
-        1 \\
-    , \\
-        0 \\
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_{0}( \\
-        d, l, decl_traits) \\
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}( \\
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_{0}( \\
-        d, l, decl_traits) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \\
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \\
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}\\
-    , \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_{0}_ \\
-    )(d, l, decl_traits)
-
-/* PRIVATE ({0}) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_{0}_( \\
-        d, l, decl_traits) \\
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_{0}_( \\
-        d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_{0}_(d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_{0}_(d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_{0}_(d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_(d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_{0}_(d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_{0}_(d, l, \\
-        decl, \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \\
-                d, decl BOOST_PP_NIL) \\
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_{0}_( \\
-        d, l, decl, decl_type) \\
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \\
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \\
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \\
-            0 \\
-        , \\
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \\
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \\
-        ) \\
-    ) , \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_ \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \\
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_ \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \\
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_ \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_{0}_ \\
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_{0}_( \\
-        d, l, decl) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_{0}_ \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_ \\
-    )(d, l, decl)
-
-'''.format(n, n + 1)
-    return result
-
-script = os.path.basename(sys.argv[0])
-path = sys.argv[0].replace('-generate.py', '', 1) + ".hpp"
-file = open(path, 'w')
-
-file.write('''
-#ifndef BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "{0}".
-
-#include <boost/contract/ext_/preprocessor/traits/assertion/bool.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/const.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/if.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/oldof.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/return.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/typedef.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/using.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/namespace.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/namespace.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/using.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/template.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/typedef.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/return.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/const.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/if.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/else.hpp>
-#include <boost/contract/ext_/preprocessor/paren/has.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-
-/* PUBLIC */
-
-// Maximum number of nested assertions that can be parsed (before pp errors).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_LIMIT {1}
-
-/* PRIVATE */
-
-// Expand to 1 if decl = `[template(,,,)] using ...`, otherwise to 0.
-// EXPAND for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl) \\
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_FRONT(\\
-            decl), \\
-        1 BOOST_PP_TUPLE_EAT(1) \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_ \\
-    , \\
-        0 BOOST_PP_TUPLE_EAT(1) \\
-    ))(decl))
-
-// Precondition: decl = `template ...`
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_(decl) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \\
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(decl)), \\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_PAREN_ \\
-    , \\
-        0 BOOST_PP_TUPLE_EAT(1) \\
-    )(BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(decl))
-
-// Precondition: decl = `(,,,) ...`
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_PAREN_( \\
-        decl) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_FRONT( \\
-            BOOST_PP_TUPLE_EAT(0) decl), 1, 0)
-{2}
-#endif // #include guard
-'''.format(script, LIMIT, code()))
-
-file.close()
-print "Written:", path
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion.hpp
deleted file mode 100644
index ab6928f..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion.hpp
+++ /dev/null
@@ -1,9599 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "assertion-generate.py".
-
-#include <boost/contract/ext_/preprocessor/traits/assertion/bool.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/const.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/if.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/oldof.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/return.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/typedef.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/using.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/namespace.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/namespace.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/using.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/template.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/typedef.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/return.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/const.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/if.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/else.hpp>
-#include <boost/contract/ext_/preprocessor/paren/has.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-
-/* PUBLIC */
-
-// Maximum number of nested assertions that can be parsed (before pp errors).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_LIMIT 64
-
-/* PRIVATE */
-
-// Expand to 1 if decl = `[template(,,,)] using ...`, otherwise to 0.
-// EXPAND for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_FRONT(\
-            decl), \
-        1 BOOST_PP_TUPLE_EAT(1) \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_ \
-    , \
-        0 BOOST_PP_TUPLE_EAT(1) \
-    ))(decl))
-
-// Precondition: decl = `template ...`
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_(decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(decl)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_PAREN_ \
-    , \
-        0 BOOST_PP_TUPLE_EAT(1) \
-    )(BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(decl))
-
-// Precondition: decl = `(,,,) ...`
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_PAREN_( \
-        decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_FRONT( \
-            BOOST_PP_TUPLE_EAT(0) decl), 1, 0)
-
-/* PUBLIC (1) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_1(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_1_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_1_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_1_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_1(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_1_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_1_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_1_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_1 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_1_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_1( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_1( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_1( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_1( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_1_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (1) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_1_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_1_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_1_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_1_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_1_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_1_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_1_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_1_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_1_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_1_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_1_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (2) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_2(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_2_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_2_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_2_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_2 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_2(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_2_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_2_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_2_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_2 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_2 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_2_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_2( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_2( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_2( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_2( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_2_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (2) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_2_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_2_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_2_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_2_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_2_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_2_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_2_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_2_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_2_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_2_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_2_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (3) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_3(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_3_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_3_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_3_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_3 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_3(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_3_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_3_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_3_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_3 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_3 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_3_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_3( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_3( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_3( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_3( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_3_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (3) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_3_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_3_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_3_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_3_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_3_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_3_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_3_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_3_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_3_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_3_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_3_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (4) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_4(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_4_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_4_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_4_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_4 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_4(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_4_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_4_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_4_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_4 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_4 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_4_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_4( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_4( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_4( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_4( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_4_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (4) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_4_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_4_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_4_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_4_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_4_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_4_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_4_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_4_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_4_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_4_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_4_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (5) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_5(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_5_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_5_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_5_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_5 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_5(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_5_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_5_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_5_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_5 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_5 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_5_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_5( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_5( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_5( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_5( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_5_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (5) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_5_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_5_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_5_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_5_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_5_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_5_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_5_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_5_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_5_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_5_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_5_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (6) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_6(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_6_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_6_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_6_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_6 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_6(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_6_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_6_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_6_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_6 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_6 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_6_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_6( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_6( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_6( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_6( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_6_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (6) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_6_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_6_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_6_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_6_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_6_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_6_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_6_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_6_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_6_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_6_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_6_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (7) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_7(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_7_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_7_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_7_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_7 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_7(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_7_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_7_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_7_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_7 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_7 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_7_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_7( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_7( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_7( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_7( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_7_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (7) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_7_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_7_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_7_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_7_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_7_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_7_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_7_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_7_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_7_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_7_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_7_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (8) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_8(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_8_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_8_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_8_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_8 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_8(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_8_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_8_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_8_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_8 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_8 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_8_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_8( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_8( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_8( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_8( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_8_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (8) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_8_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_8_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_8_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_8_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_8_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_8_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_8_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_8_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_8_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_8_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_8_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (9) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_9(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_9_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_9_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_9_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_9 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_9(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_9_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_9_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_9_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_9 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_9 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_9_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_9( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_9( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_9( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_9( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_9_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (9) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_9_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_9_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_9_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_9_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_9_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_9_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_9_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_9_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_9_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_9_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_9_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (10) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_10(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_10_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_10_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_10_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_10 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_10(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_10_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_10_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_10_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_10 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_10 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_10_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_10( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_10( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_10( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_10( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_10_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (10) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_10_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_10_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_10_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_10_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_10_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_10_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_10_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_10_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_10_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_10_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_10_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (11) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_11(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_11_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_11_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_11_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_11 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_11(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_11_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_11_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_11_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_11 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_11 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_11_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_11( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_11( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_11( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_11( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_11_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (11) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_11_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_11_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_11_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_11_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_11_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_11_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_11_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_11_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_11_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_11_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_11_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (12) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_12(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_12_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_12_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_12_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_12 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_12(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_12_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_12_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_12_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_12 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_12 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_12_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_12( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_12( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_12( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_12( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_12_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (12) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_12_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_12_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_12_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_12_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_12_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_12_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_12_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_12_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_12_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_12_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_12_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (13) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_13(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_13_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_13_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_13_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_13 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_13(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_13_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_13_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_13_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_13 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_13 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_13_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_13( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_13( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_13( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_13( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_13_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (13) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_13_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_13_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_13_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_13_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_13_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_13_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_13_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_13_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_13_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_13_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_13_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (14) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_14(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_14_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_14_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_14_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_14 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_14(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_14_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_14_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_14_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_14 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_14 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_14_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_14( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_14( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_14( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_14( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_14_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (14) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_14_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_14_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_14_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_14_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_14_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_14_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_14_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_14_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_14_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_14_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_14_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (15) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_15(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_15_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_15_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_15_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_15 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_15(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_15_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_15_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_15_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_15 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_15 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_15_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_15( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_15( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_15( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_15( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_15_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (15) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_15_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_15_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_15_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_15_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_15_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_15_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_15_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_15_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_15_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_15_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_15_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (16) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_16(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_16_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_16_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_16_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_16 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_16(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_16_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_16_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_16_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_16 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_16 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_16_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_16( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_16( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_16( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_16( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_16_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (16) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_16_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_16_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_16_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_16_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_16_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_16_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_16_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_16_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_16_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_16_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_16_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (17) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_17(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_17_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_17_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_17_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_17 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_17(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_17_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_17_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_17_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_17 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_17 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_17_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_17( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_17( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_17( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_17( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_17_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (17) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_17_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_17_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_17_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_17_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_17_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_17_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_17_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_17_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_17_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_17_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_17_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (18) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_18(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_18_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_18_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_18_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_18 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_18(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_18_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_18_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_18_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_18 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_18 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_18_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_18( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_18( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_18( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_18( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_18_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (18) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_18_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_18_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_18_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_18_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_18_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_18_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_18_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_18_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_18_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_18_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_18_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (19) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_19(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_19_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_19_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_19_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_19 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_19(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_19_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_19_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_19_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_19 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_19 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_19_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_19( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_19( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_19( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_19( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_19_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (19) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_19_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_19_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_19_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_19_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_19_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_19_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_19_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_19_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_19_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_19_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_19_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (20) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_20(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_20_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_20_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_20_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_20 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_20(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_20_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_20_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_20_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_20 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_20 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_20_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_20( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_20( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_20( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_20( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_20_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (20) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_20_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_20_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_20_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_20_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_20_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_20_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_20_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_20_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_20_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_20_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_20_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (21) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_21(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_21_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_21_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_21_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_21 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_21(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_21_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_21_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_21_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_21 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_21 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_21_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_21( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_21( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_21( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_21( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_21_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (21) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_21_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_21_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_21_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_21_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_21_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_21_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_21_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_21_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_21_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_21_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_21_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (22) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_22(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_22_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_22_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_22_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_22 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_22(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_22_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_22_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_22_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_22 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_22 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_22_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_22( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_22( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_22( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_22( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_22_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (22) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_22_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_22_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_22_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_22_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_22_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_22_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_22_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_22_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_22_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_22_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_22_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (23) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_23(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_23_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_23_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_23_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_23 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_23(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_23_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_23_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_23_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_23 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_23 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_23_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_23( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_23( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_23( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_23( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_23_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (23) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_23_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_23_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_23_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_23_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_23_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_23_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_23_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_23_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_23_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_23_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_23_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (24) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_24(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_24_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_24_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_24_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_24 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_24(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_24_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_24_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_24_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_24 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_24 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_24_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_24( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_24( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_24( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_24( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_24_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (24) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_24_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_24_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_24_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_24_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_24_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_24_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_24_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_24_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_24_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_24_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_24_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (25) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_25(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_25_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_25_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_25_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_25 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_25(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_25_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_25_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_25_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_25 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_25 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_25_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_25( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_25( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_25( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_25( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_25_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (25) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_25_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_25_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_25_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_25_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_25_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_25_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_25_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_25_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_25_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_25_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_25_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (26) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_26(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_26_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_26_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_26_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_26 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_26(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_26_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_26_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_26_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_26 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_26 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_26_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_26( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_26( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_26( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_26( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_26_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (26) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_26_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_26_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_26_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_26_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_26_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_26_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_26_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_26_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_26_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_26_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_26_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (27) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_27(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_27_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_27_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_27_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_27 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_27(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_27_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_27_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_27_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_27 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_27 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_27_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_27( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_27( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_27( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_27( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_27_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (27) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_27_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_27_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_27_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_27_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_27_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_27_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_27_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_27_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_27_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_27_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_27_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (28) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_28(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_28_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_28_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_28_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_28 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_28(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_28_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_28_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_28_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_28 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_28 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_28_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_28( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_28( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_28( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_28( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_28_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (28) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_28_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_28_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_28_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_28_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_28_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_28_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_28_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_28_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_28_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_28_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_28_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (29) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_29(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_29_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_29_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_29_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_29 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_29(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_29_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_29_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_29_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_29 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_29 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_29_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_29( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_29( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_29( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_29( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_29_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (29) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_29_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_29_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_29_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_29_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_29_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_29_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_29_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_29_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_29_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_29_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_29_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (30) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_30(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_30_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_30_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_30_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_30 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_30(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_30_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_30_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_30_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_30 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_30 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_30_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_30( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_30( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_30( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_30( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_30_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (30) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_30_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_30_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_30_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_30_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_30_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_30_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_30_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_30_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_30_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_30_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_30_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (31) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_31(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_31_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_31_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_31_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_31 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_31(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_31_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_31_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_31_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_31 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_31 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_31_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_31( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_31( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_31( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_31( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_31_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (31) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_31_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_31_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_31_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_31_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_31_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_31_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_31_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_31_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_31_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_31_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_31_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (32) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_32(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_32_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_32_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_32_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_32 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_32(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_32_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_32_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_32_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_32 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_32 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_32_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_32( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_32( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_32( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_32( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_32_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (32) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_32_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_32_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_32_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_32_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_32_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_32_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_32_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_32_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_32_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_32_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_32_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (33) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_33(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_33_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_33_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_33_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_33 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_33(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_33_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_33_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_33_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_33 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_33 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_33_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_33( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_33( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_33( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_33( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_33_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (33) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_33_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_33_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_33_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_33_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_33_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_33_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_33_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_33_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_33_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_33_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_33_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (34) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_34(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_34_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_34_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_34_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_34 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_34(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_34_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_34_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_34_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_34 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_34 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_34_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_34( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_34( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_34( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_34( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_34_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (34) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_34_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_34_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_34_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_34_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_34_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_34_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_34_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_34_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_34_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_34_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_34_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (35) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_35(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_35_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_35_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_35_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_35 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_35(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_35_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_35_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_35_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_35 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_35 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_35_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_35( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_35( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_35( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_35( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_35_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (35) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_35_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_35_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_35_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_35_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_35_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_35_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_35_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_35_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_35_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_35_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_35_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (36) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_36(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_36_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_36_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_36_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_36 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_36(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_36_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_36_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_36_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_36 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_36 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_36_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_36( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_36( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_36( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_36( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_36_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (36) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_36_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_36_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_36_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_36_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_36_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_36_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_36_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_36_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_36_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_36_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_36_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (37) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_37(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_37_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_37_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_37_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_37 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_37(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_37_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_37_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_37_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_37 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_37 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_37_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_37( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_37( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_37( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_37( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_37_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (37) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_37_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_37_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_37_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_37_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_37_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_37_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_37_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_37_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_37_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_37_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_37_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (38) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_38(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_38_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_38_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_38_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_38 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_38(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_38_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_38_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_38_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_38 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_38 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_38_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_38( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_38( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_38( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_38( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_38_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (38) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_38_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_38_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_38_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_38_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_38_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_38_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_38_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_38_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_38_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_38_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_38_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (39) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_39(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_39_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_39_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_39_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_39 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_39(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_39_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_39_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_39_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_39 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_39 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_39_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_39( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_39( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_39( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_39( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_39_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (39) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_39_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_39_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_39_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_39_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_39_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_39_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_39_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_39_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_39_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_39_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_39_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (40) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_40(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_40_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_40_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_40_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_40 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_40(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_40_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_40_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_40_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_40 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_40 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_40_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_40( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_40( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_40( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_40( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_40_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (40) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_40_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_40_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_40_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_40_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_40_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_40_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_40_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_40_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_40_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_40_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_40_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (41) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_41(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_41_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_41_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_41_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_41 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_41(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_41_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_41_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_41_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_41 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_41 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_41_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_41( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_41( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_41( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_41( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_41_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (41) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_41_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_41_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_41_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_41_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_41_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_41_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_41_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_41_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_41_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_41_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_41_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (42) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_42(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_42_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_42_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_42_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_42 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_42(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_42_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_42_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_42_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_42 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_42 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_42_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_42( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_42( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_42( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_42( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_42_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (42) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_42_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_42_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_42_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_42_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_42_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_42_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_42_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_42_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_42_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_42_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_42_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (43) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_43(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_43_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_43_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_43_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_43 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_43(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_43_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_43_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_43_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_43 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_43 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_43_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_43( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_43( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_43( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_43( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_43_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (43) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_43_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_43_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_43_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_43_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_43_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_43_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_43_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_43_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_43_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_43_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_43_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (44) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_44(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_44_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_44_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_44_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_44 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_44(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_44_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_44_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_44_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_44 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_44 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_44_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_44( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_44( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_44( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_44( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_44_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (44) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_44_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_44_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_44_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_44_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_44_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_44_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_44_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_44_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_44_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_44_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_44_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (45) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_45(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_45_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_45_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_45_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_45 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_45(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_45_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_45_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_45_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_45 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_45 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_45_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_45( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_45( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_45( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_45( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_45_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (45) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_45_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_45_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_45_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_45_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_45_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_45_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_45_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_45_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_45_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_45_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_45_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (46) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_46(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_46_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_46_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_46_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_46 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_46(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_46_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_46_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_46_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_46 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_46 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_46_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_46( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_46( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_46( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_46( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_46_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (46) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_46_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_46_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_46_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_46_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_46_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_46_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_46_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_46_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_46_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_46_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_46_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (47) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_47(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_47_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_47_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_47_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_47 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_47(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_47_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_47_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_47_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_47 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_47 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_47_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_47( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_47( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_47( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_47( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_47_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (47) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_47_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_47_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_47_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_47_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_47_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_47_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_47_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_47_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_47_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_47_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_47_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (48) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_48(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_48_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_48_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_48_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_48 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_48(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_48_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_48_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_48_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_48 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_48 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_48_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_48( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_48( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_48( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_48( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_48_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (48) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_48_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_48_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_48_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_48_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_48_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_48_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_48_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_48_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_48_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_48_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_48_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (49) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_49(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_49_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_49_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_49_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_49 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_49(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_49_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_49_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_49_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_49 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_49 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_49_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_49( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_49( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_49( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_49( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_49_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (49) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_49_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_49_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_49_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_49_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_49_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_49_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_49_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_49_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_49_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_49_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_49_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (50) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_50(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_50_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_50_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_50_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_50 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_50(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_50_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_50_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_50_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_50 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_50 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_50_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_50( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_50( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_50( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_50( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_50_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (50) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_50_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_50_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_50_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_50_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_50_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_50_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_50_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_50_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_50_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_50_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_50_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (51) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_51(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_51_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_51_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_51_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_51 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_51(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_51_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_51_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_51_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_51 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_51 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_51_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_51( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_51( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_51( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_51( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_51_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (51) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_51_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_51_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_51_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_51_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_51_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_51_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_51_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_51_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_51_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_51_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_51_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (52) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_52(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_52_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_52_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_52_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_52 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_52(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_52_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_52_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_52_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_52 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_52 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_52_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_52( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_52( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_52( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_52( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_52_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (52) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_52_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_52_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_52_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_52_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_52_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_52_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_52_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_52_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_52_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_52_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_52_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (53) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_53(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_53_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_53_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_53_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_53 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_53(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_53_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_53_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_53_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_53 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_53 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_53_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_53( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_53( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_53( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_53( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_53_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (53) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_53_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_53_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_53_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_53_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_53_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_53_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_53_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_53_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_53_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_53_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_53_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (54) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_54(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_54_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_54_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_54_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_54 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_54(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_54_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_54_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_54_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_54 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_54 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_54_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_54( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_54( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_54( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_54( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_54_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (54) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_54_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_54_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_54_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_54_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_54_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_54_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_54_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_54_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_54_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_54_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_54_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (55) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_55(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_55_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_55_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_55_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_55 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_55(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_55_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_55_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_55_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_55 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_55 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_55_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_55( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_55( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_55( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_55( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_55_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (55) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_55_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_55_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_55_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_55_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_55_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_55_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_55_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_55_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_55_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_55_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_55_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (56) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_56(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_56_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_56_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_56_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_56 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_56(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_56_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_56_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_56_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_56 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_56 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_56_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_56( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_56( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_56( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_56( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_56_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (56) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_56_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_56_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_56_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_56_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_56_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_56_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_56_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_56_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_56_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_56_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_56_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (57) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_57(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_57_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_57_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_57_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_57 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_57(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_57_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_57_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_57_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_57 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_57 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_57_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_57( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_57( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_57( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_57( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_57_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (57) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_57_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_57_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_57_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_57_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_57_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_57_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_57_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_57_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_57_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_57_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_57_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (58) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_58(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_58_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_58_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_58_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_58 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_58(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_58_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_58_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_58_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_58 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_58 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_58_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_58( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_58( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_58( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_58( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_58_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (58) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_58_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_58_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_58_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_58_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_58_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_58_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_58_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_58_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_58_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_58_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_58_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (59) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_59(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_59_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_59_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_59_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_59 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_59(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_59_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_59_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_59_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_59 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_59 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_59_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_59( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_59( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_59( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_59( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_59_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (59) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_59_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_59_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_59_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_59_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_59_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_59_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_59_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_59_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_59_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_59_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_59_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (60) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_60(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_60_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_60_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_60_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_60 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_60(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_60_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_60_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_60_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_60 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_60 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_60_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_60( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_60( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_60( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_60( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_60_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (60) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_60_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_60_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_60_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_60_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_60_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_60_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_60_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_60_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_60_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_60_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_60_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (61) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_61(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_61_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_61_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_61_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_61 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_61(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_61_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_61_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_61_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_61 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_61 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_61_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_61( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_61( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_61( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_61( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_61_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (61) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_61_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_61_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_61_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_61_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_61_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_61_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_61_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_61_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_61_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_61_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_61_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (62) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_62(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_62_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_62_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_62_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_62 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_62(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_62_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_62_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_62_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_62 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_62 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_62_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_62( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_62( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_62( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_62( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_62_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (62) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_62_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_62_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_62_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_62_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_62_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_62_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_62_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_62_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_62_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_62_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_62_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (63) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_63(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_63_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_63_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_63_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_63 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_63(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_63_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_63_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_63_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_63 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_63 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_63_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_63( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_63( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_63( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_63( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_63_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (63) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_63_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_63_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_63_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_63_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_63_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_63_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_63_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_63_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_63_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_63_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_63_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_ \
-    )(d, l, decl)
-
-
-/* PUBLIC (64) */
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_64(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_64_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_64_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_64_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_64 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_ \
-    ))))))(d, l, decl)
-
-// Implementation: EXPAND needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_64(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_64_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_64_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_64_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_64 \
-    , BOOST_PP_IIF(BOOST_PP_EXPAND( \
-            BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \
-        BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_64 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_64_ \
-    ))))))(d, l, decl)
-    
-// Implementation: Else statements are first parsed and then replaced when
-// parsed as empty and they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_64( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , \
-        0 \
-    ))
-
-// Implementation: old-of assertions are first parsed as boolean assertions and
-// then replaced as old-of assertions by the overall assertions parsing alg.
-// Else statements are first parsed and then replaced when parsed as empty and
-// they appear after a comma following if statements.
-// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_64( \
-        d, l, decl) \
-    BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            decl), \
-        1 \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \
-        1 \
-    , \
-        0 \
-    )))
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_64( \
-        d, l, decl_traits) \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64( \
-            d, l, decl_traits)
-
-// Implementation: Same ELSE macro below used by both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_64( \
-        d, l, decl_traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-  BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64\
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_64_ \
-    )(d, l, decl_traits)
-
-/* PRIVATE (64) */
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_64_( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits)
-        
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_64_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_64_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_64_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_64_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-// This is needed because it has to eventually use IS_RETURN_BACK which does
-// not allow decl to end with parenthesis `... (...)` (so type is first parsed
-// to make sure this is a valid return assertion with a type (possibly auto),
-// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_64_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_64_(d, l, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \
-                d, decl BOOST_PP_NIL) \
-    )
-
-// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_64_( \
-        d, l, decl, decl_type) \
-    BOOST_PP_IIF(BOOST_PP_EXPAND( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \
-            0 \
-        , \
-            BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-        ) \
-    ) , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_64_ \
-    )))(d, l, decl)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_64_( \
-        d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_64_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_ \
-    )(d, l, decl)
-
-
-#endif // #include guard
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/bool.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/bool.hpp
deleted file mode 100644
index ee55b2a..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/bool.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/assertion/bool/expr.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// ASSERTION_TRAITS_KEY(traits) expands to `bool` for this assertion.
-
-// Precondition: decl = `...` (includes `(,,,)`, `bool(,,,)`, etc.).
-#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_PARSE( \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(bool, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/bool/expr.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/bool/expr.hpp
deleted file mode 100644
index f8b39cf..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/bool/expr.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_HPP_
-#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `...` (tokens).
-#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BOOL_ASSERTION_EXPR, traits)
-
-#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_PARSE(decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_PARSE_ARGS_ \
-        decl_traits \
-    )
-    
-/* PRIVATE */
-
-// Precondition: decl = `... NIL`.
-#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_PARSE_ARGS_( \
-        decl, traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \
-    )
-
-#endif // #include guard    
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/const.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/const.hpp
deleted file mode 100644
index f457957..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/const.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/assertion/const/expr.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/const/captures.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// ASSERTION_TRAITS_KEY(traits) expands to `const` for this assertion.
-
-// Precondition: decl = `const( [[(wrapped-type)] name, ...] ) expr`.
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_EXPR_PARSE( \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_PARSE_D_L(d, l, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(const, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    )))))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/const/captures.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/const/captures.hpp
deleted file mode 100644
index f0128ac..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/const/captures.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_HPP_
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/traits/capture.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/const.hpp>
-#include <boost/contract/ext_/preprocessor/paren/front.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-
-/* PUBLIC */
-
-// Expand to `pp-seq | EMPTY()`, pp-seq of capture traits to be inspected via
-// PP_CAPTURE_TRAITS macros.
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CONST_ASSERTION_CAPTURES, \
-        traits \
-    )()
-
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_PARSE_D_L( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_PARSE_ARGS_(d, l, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE */
-
-// Precondition: decl = `const( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_PARSE_ARGS_( \
-        d, l, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_(d, l, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_FRONT(decl), \
-        traits \
-    )
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARAMS_EXPAND_TRAITS_(\
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_ ## l(d , \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-                    BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_PARSE_D_L \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra macro invocation needed for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARAMS_EXPAND_TRAITS_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-#endif // #include gaurd
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/const/expr.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/const/expr.hpp
deleted file mode 100644
index c4ca8a3..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/const/expr.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_EXPR_HPP_
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_EXPR_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `expr` (expr might or not be in parenthesis, like all bool expr).
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_EXPR(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CONST_ASSERTION_EXPR, traits)
-
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_EXPR_PARSE(decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_EXPR_PARSE_ARGS_ \
-        decl_traits \
-    )
-    
-/* PRIVATE */
-
-// Precondition: decl = `... NIL`.
-#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_EXPR_PARSE_ARGS_( \
-        decl, traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \
-    )
-
-#endif // #include guard    
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/if-generate.py b/include/boost/contract/ext_/preprocessor/traits/assertion/if-generate.py
deleted file mode 100644
index a8962d9..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/if-generate.py
+++ /dev/null
@@ -1,322 +0,0 @@
-
-import os
-import sys
-
-LIMIT = 64
-
-def code():
-    result = ''
-    for n in range(1, LIMIT + 1):
-        result = result + '''
-/* PUBLIC ({0}) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}(d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_{0}( \\
-        d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_{0}( \\
-        d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_{0}( \\
-        d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}(\\
-        d, l, decl_traits) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}_( \\
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \\
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}( \\
-        d, l, decl_traits) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}_( \\
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_{0}( \\
-        d, l, is_static, decl_traits) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_{0}_(d, l, is_static, \\
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \\
-            BOOST_PP_IIF(is_static, \\
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \\
-            , \\
-                BOOST_PP_TUPLE_REM(1) \\
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \\
-        ), \\
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \\
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_{0}( \\
-        d, l, is_post, decl_traits) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_{0}_(d, l, is_post, \\
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \\
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \\
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_{0}( \\
-        d, l, is_post, decl_traits) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_{0}_(d, l, is_post, \\
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \\
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \\
-    )
-
-/* PRIVATE ({0}) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}_( \\
-        d, l, is_post, is_static, decl) \\
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_{0}( \\
-            d, l, is_post, \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_{0}( \\
-            d, l, is_post, \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_{0}( \\
-            d, l, is_static, \\
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \\
-            BOOST_PP_EXPR_IIF(is_static, static) if, \\
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \\
-        decl BOOST_PP_NIL \\
-    ))))))
-
-#define \\
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}_( \\
-        d, l, is_post, decl_traits) \\
-    BOOST_PP_IIF( \\
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \\
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \\
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \\
-            ) \\
-        ) \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_{0}_\\
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_{0}_ \\
-    )(d, l, is_post, decl_traits)
-
-#define \\
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_{0}_( \\
-        d, l, is_post, decl_traits) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_{0}_(d, l, is_post, \\
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \\
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \\
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_{0}_(\\
-        d, l, is_post, decl_traits) \\
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \\
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_{0}_( \\
-        d, l, is_static, decl, traits) \\
-    ( \\
-        BOOST_PP_TUPLE_EAT(0) decl, \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \\
-            traits, \\
-            BOOST_PP_TUPLE_ELEM(2, 1, \\
-                BOOST_PP_IIF(is_static, \\
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_{0}_ \\
-                , \\
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_{0}_ \\
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \\
-            ) \\
-        ) \\
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_{0}_(d, l, decl) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \\
-            BOOST_PP_TUPLE_ELEM(0, decl)), \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_{0}_ \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_{0}_ \\
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_{0}_(d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \\
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_{0}_(d, l, decl) \\
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_{0}_( \\
-        d, l, is_post, decl, traits) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_{0}_ \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_{0}_ \\
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_{0}_( \\
-        d, l, is_post, decl, traits) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_{0}_ \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_{0}_ \\
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_{0}_( \\
-        d, l, is_post, decl, traits) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_{0}_(d, l, is_post, \\
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_{0}_( \\
-        d, l, is_post, decl, traits) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_{0}_ \\
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_{0}_ \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_{0}_ \\
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_{0}_( \\
-        d, l, is_post, decl, traits) \\
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_{0}_( \\
-        d, l, is_post, decl, traits) \\
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_{0}_(d, l, \\
-        BOOST_PP_IIF(is_post, \\
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_{1} \\
-        , \\
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_{1} \\
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \\
-        traits \\
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_{0}_( \\
-        d, l, decl_assertion, traits) \\
-    ( \\
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \\
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \\
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_{0}_( \\
-        d, l, is_post, decl, traits) \\
-    BOOST_PP_IIF(is_post, \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_{0}_ \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_{0}_ \\
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_{0}_( \\
-        d, l, decl, traits) \\
-    ( \\
-        BOOST_PP_TUPLE_EAT(0) decl, \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \\
-            traits, \\
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_{0}_( \\
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \\
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \\
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_{1}, \\
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_{1}, \\
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_{1} \\
-                ) \\
-            ) \\
-        ) \\
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_{0}_( \\
-        d, l, decl, traits) \\
-    ( \\
-        BOOST_PP_TUPLE_EAT(0) decl, \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \\
-            traits, \\
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_{0}_( \\
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \\
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \\
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_{1}, \\
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_{1}, \\
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_{1} \\
-                ) \\
-            ) \\
-        ) \\
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_{0}_( \\
-        decl_traits) \\
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-'''.format(n, n + 1)
-    return result
-
-script = os.path.basename(sys.argv[0])
-path = sys.argv[0].replace('-generate.py', '', 1) + ".hpp"
-file = open(path, 'w')
-
-file.write('''
-#ifndef BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "{0}".
-
-#include <boost/contract/ext_/preprocessor/traits/assertion/if/cond.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/if/thens.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/if/elses.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/if.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/else.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/static.hpp>
-#include <boost/contract/ext_/preprocessor/paren/front.hpp>
-#include <boost/contract/ext_/preprocessor/utility/empty.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/control/expr_iif.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-
-/* PUBLIC */
-
-// NOTE: This same file provides APIs to parse both if-assertion and
-// static-if-assertion traits (because the code re-uses same implementation
-// macros and because the traits inspection public macros are the same).
-
-// Maximum number of nested if and static-if assertions that can be parsed
-// (before pp errors).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_LIMIT {1}
-
-// ASSERTION_TRAITS_KEY(traits) expands to `if` for if-assertion and to
-// `static if` for static-if-assertion (this can be checked in "one step" using
-// the ..._STATIC_IF_..._IS macro below).
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(tokens) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_FRONT(tokens), \\
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS_ \\
-    , \\
-        0 BOOST_PP_TUPLE_EAT(1) \\
-    )(tokens)
-
-/* PRIVATE */
-
-// Precondition: tokens = `static ...`.
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS_(tokens) \\
-    BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT( \\
-        BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT( \\
-            tokens BOOST_PP_NIL \\
-        ) \\
-    )
-{2}
-#endif // #include guard
-
-'''.format(script, LIMIT, code()))
-
-file.close()
-print "Written:", path
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/if.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/if.hpp
deleted file mode 100644
index 2c7901b..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/if.hpp
+++ /dev/null
@@ -1,15609 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "if-generate.py".
-
-#include <boost/contract/ext_/preprocessor/traits/assertion/if/cond.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/if/thens.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/if/elses.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/if.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/else.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/static.hpp>
-#include <boost/contract/ext_/preprocessor/paren/front.hpp>
-#include <boost/contract/ext_/preprocessor/utility/empty.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/control/expr_iif.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-
-/* PUBLIC */
-
-// NOTE: This same file provides APIs to parse both if-assertion and
-// static-if-assertion traits (because the code re-uses same implementation
-// macros and because the traits inspection public macros are the same).
-
-// Maximum number of nested if and static-if assertions that can be parsed
-// (before pp errors).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_LIMIT 64
-
-// ASSERTION_TRAITS_KEY(traits) expands to `if` for if-assertion and to
-// `static if` for static-if-assertion (this can be checked in "one step" using
-// the ..._STATIC_IF_..._IS macro below).
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(tokens) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_FRONT(tokens), \
-        BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS_ \
-    , \
-        0 BOOST_PP_TUPLE_EAT(1) \
-    )(tokens)
-
-/* PRIVATE */
-
-// Precondition: tokens = `static ...`.
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS_(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT( \
-            tokens BOOST_PP_NIL \
-        ) \
-    )
-
-/* PUBLIC (1) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_1( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_1( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_1( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_1( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_1_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_1( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_1_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_1( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_1_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (1) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_1( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_1( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_1( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_1_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_1_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_1_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_1_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_1_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_1_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_1_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_1_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_1_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_1_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_1_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_1_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_1_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_1_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_1_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_1_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_1_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_1_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_1_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_1_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_1_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_1_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_1_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_1_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_1_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_1_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_1_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_1_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_2 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_2 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_1_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_1_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_1_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_1_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_1_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_1_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_2, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_2, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_2 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_1_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_1_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_2, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_2, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_2 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_1_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (2) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_2( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_2( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_2( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_2( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_2_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_2( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_2_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_2( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_2_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (2) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_2( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_2( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_2( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_2_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_2_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_2_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_2_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_2_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_2_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_2_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_2_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_2_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_2_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_2_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_2_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_2_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_2_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_2_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_2_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_2_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_2_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_2_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_2_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_2_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_2_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_2_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_2_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_2_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_2_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_2_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_2_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_3 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_3 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_2_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_2_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_2_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_2_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_2_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_2_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_3, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_3, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_3 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_2_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_2_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_3, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_3, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_3 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_2_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (3) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_3( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_3( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_3( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_3( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_3_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_3( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_3_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_3( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_3_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (3) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_3( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_3( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_3( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_3_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_3_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_3_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_3_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_3_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_3_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_3_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_3_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_3_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_3_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_3_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_3_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_3_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_3_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_3_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_3_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_3_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_3_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_3_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_3_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_3_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_3_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_3_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_3_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_3_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_3_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_3_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_3_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_4 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_4 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_3_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_3_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_3_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_3_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_3_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_3_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_4, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_4, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_4 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_3_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_3_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_4, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_4, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_4 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_3_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (4) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_4( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_4( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_4( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_4( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_4_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_4( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_4_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_4( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_4_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (4) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_4( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_4( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_4( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_4_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_4_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_4_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_4_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_4_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_4_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_4_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_4_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_4_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_4_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_4_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_4_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_4_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_4_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_4_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_4_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_4_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_4_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_4_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_4_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_4_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_4_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_4_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_4_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_4_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_4_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_4_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_4_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_5 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_5 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_4_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_4_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_4_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_4_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_4_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_4_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_5, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_5, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_5 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_4_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_4_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_5, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_5, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_5 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_4_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (5) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_5( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_5( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_5( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_5( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_5_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_5( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_5_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_5( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_5_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (5) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_5( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_5( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_5( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_5_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_5_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_5_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_5_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_5_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_5_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_5_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_5_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_5_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_5_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_5_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_5_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_5_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_5_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_5_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_5_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_5_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_5_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_5_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_5_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_5_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_5_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_5_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_5_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_5_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_5_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_5_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_5_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_6 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_6 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_5_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_5_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_5_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_5_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_5_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_5_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_6, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_6, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_6 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_5_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_5_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_6, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_6, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_6 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_5_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (6) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_6( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_6( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_6( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_6( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_6_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_6( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_6_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_6( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_6_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (6) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_6( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_6( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_6( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_6_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_6_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_6_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_6_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_6_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_6_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_6_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_6_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_6_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_6_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_6_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_6_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_6_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_6_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_6_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_6_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_6_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_6_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_6_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_6_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_6_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_6_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_6_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_6_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_6_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_6_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_6_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_6_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_7 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_7 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_6_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_6_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_6_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_6_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_6_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_6_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_7, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_7, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_7 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_6_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_6_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_7, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_7, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_7 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_6_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (7) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_7( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_7( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_7( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_7( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_7_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_7( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_7_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_7( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_7_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (7) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_7( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_7( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_7( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_7_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_7_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_7_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_7_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_7_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_7_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_7_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_7_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_7_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_7_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_7_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_7_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_7_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_7_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_7_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_7_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_7_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_7_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_7_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_7_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_7_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_7_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_7_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_7_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_7_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_7_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_7_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_7_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_8 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_8 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_7_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_7_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_7_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_7_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_7_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_7_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_8, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_8, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_8 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_7_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_7_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_8, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_8, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_8 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_7_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (8) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_8( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_8( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_8( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_8( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_8_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_8( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_8_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_8( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_8_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (8) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_8( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_8( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_8( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_8_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_8_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_8_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_8_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_8_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_8_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_8_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_8_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_8_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_8_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_8_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_8_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_8_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_8_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_8_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_8_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_8_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_8_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_8_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_8_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_8_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_8_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_8_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_8_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_8_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_8_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_8_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_8_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_9 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_9 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_8_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_8_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_8_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_8_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_8_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_8_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_9, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_9, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_9 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_8_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_8_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_9, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_9, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_9 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_8_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (9) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_9( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_9( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_9( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_9( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_9_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_9( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_9_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_9( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_9_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (9) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_9( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_9( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_9( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_9_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_9_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_9_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_9_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_9_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_9_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_9_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_9_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_9_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_9_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_9_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_9_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_9_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_9_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_9_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_9_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_9_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_9_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_9_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_9_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_9_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_9_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_9_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_9_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_9_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_9_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_9_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_9_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_10 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_10 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_9_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_9_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_9_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_9_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_9_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_9_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_10, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_10, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_10 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_9_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_9_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_10, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_10, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_10 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_9_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (10) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_10( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_10( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_10( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_10( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_10_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_10( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_10_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_10( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_10_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (10) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_10( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_10( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_10( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_10_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_10_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_10_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_10_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_10_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_10_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_10_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_10_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_10_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_10_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_10_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_10_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_10_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_10_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_10_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_10_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_10_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_10_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_10_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_10_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_10_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_10_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_10_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_10_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_10_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_10_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_10_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_10_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_11 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_11 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_10_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_10_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_10_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_10_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_10_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_10_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_11, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_11, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_11 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_10_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_10_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_11, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_11, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_11 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_10_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (11) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_11( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_11( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_11( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_11( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_11_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_11( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_11_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_11( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_11_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (11) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_11( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_11( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_11( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_11_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_11_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_11_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_11_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_11_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_11_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_11_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_11_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_11_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_11_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_11_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_11_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_11_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_11_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_11_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_11_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_11_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_11_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_11_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_11_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_11_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_11_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_11_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_11_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_11_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_11_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_11_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_11_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_12 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_12 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_11_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_11_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_11_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_11_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_11_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_11_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_12, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_12, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_12 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_11_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_11_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_12, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_12, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_12 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_11_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (12) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_12( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_12( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_12( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_12( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_12_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_12( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_12_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_12( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_12_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (12) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_12( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_12( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_12( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_12_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_12_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_12_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_12_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_12_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_12_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_12_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_12_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_12_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_12_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_12_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_12_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_12_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_12_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_12_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_12_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_12_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_12_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_12_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_12_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_12_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_12_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_12_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_12_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_12_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_12_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_12_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_12_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_13 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_13 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_12_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_12_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_12_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_12_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_12_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_12_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_13, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_13, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_13 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_12_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_12_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_13, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_13, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_13 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_12_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (13) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_13( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_13( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_13( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_13( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_13_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_13( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_13_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_13( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_13_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (13) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_13( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_13( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_13( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_13_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_13_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_13_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_13_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_13_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_13_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_13_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_13_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_13_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_13_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_13_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_13_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_13_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_13_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_13_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_13_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_13_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_13_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_13_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_13_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_13_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_13_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_13_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_13_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_13_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_13_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_13_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_13_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_14 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_14 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_13_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_13_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_13_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_13_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_13_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_13_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_14, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_14, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_14 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_13_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_13_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_14, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_14, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_14 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_13_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (14) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_14( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_14( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_14( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_14( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_14_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_14( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_14_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_14( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_14_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (14) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_14( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_14( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_14( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_14_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_14_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_14_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_14_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_14_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_14_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_14_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_14_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_14_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_14_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_14_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_14_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_14_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_14_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_14_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_14_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_14_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_14_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_14_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_14_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_14_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_14_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_14_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_14_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_14_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_14_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_14_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_14_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_15 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_15 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_14_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_14_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_14_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_14_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_14_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_14_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_15, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_15, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_15 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_14_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_14_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_15, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_15, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_15 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_14_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (15) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_15( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_15( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_15( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_15( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_15_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_15( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_15_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_15( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_15_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (15) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_15( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_15( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_15( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_15_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_15_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_15_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_15_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_15_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_15_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_15_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_15_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_15_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_15_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_15_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_15_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_15_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_15_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_15_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_15_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_15_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_15_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_15_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_15_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_15_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_15_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_15_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_15_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_15_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_15_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_15_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_15_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_16 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_16 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_15_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_15_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_15_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_15_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_15_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_15_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_16, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_16, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_16 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_15_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_15_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_16, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_16, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_16 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_15_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (16) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_16( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_16( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_16( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_16( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_16_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_16( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_16_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_16( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_16_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (16) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_16( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_16( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_16( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_16_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_16_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_16_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_16_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_16_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_16_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_16_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_16_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_16_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_16_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_16_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_16_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_16_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_16_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_16_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_16_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_16_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_16_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_16_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_16_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_16_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_16_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_16_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_16_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_16_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_16_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_16_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_16_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_17 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_17 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_16_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_16_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_16_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_16_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_16_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_16_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_17, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_17, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_17 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_16_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_16_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_17, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_17, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_17 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_16_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (17) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_17( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_17( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_17( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_17( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_17_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_17( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_17_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_17( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_17_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (17) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_17( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_17( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_17( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_17_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_17_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_17_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_17_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_17_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_17_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_17_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_17_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_17_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_17_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_17_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_17_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_17_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_17_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_17_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_17_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_17_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_17_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_17_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_17_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_17_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_17_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_17_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_17_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_17_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_17_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_17_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_17_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_18 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_18 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_17_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_17_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_17_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_17_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_17_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_17_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_18, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_18, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_18 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_17_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_17_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_18, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_18, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_18 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_17_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (18) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_18( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_18( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_18( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_18( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_18_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_18( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_18_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_18( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_18_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (18) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_18( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_18( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_18( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_18_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_18_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_18_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_18_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_18_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_18_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_18_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_18_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_18_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_18_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_18_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_18_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_18_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_18_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_18_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_18_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_18_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_18_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_18_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_18_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_18_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_18_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_18_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_18_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_18_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_18_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_18_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_18_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_19 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_19 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_18_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_18_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_18_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_18_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_18_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_18_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_19, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_19, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_19 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_18_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_18_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_19, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_19, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_19 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_18_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (19) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_19( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_19( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_19( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_19( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_19_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_19( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_19_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_19( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_19_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (19) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_19( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_19( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_19( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_19_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_19_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_19_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_19_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_19_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_19_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_19_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_19_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_19_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_19_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_19_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_19_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_19_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_19_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_19_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_19_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_19_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_19_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_19_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_19_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_19_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_19_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_19_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_19_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_19_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_19_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_19_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_19_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_20 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_20 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_19_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_19_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_19_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_19_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_19_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_19_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_20, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_20, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_20 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_19_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_19_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_20, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_20, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_20 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_19_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (20) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_20( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_20( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_20( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_20( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_20_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_20( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_20_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_20( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_20_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (20) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_20( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_20( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_20( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_20_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_20_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_20_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_20_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_20_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_20_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_20_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_20_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_20_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_20_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_20_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_20_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_20_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_20_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_20_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_20_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_20_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_20_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_20_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_20_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_20_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_20_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_20_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_20_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_20_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_20_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_20_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_20_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_21 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_21 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_20_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_20_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_20_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_20_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_20_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_20_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_21, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_21, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_21 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_20_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_20_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_21, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_21, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_21 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_20_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (21) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_21( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_21( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_21( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_21( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_21_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_21( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_21_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_21( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_21_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (21) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_21( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_21( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_21( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_21_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_21_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_21_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_21_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_21_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_21_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_21_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_21_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_21_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_21_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_21_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_21_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_21_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_21_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_21_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_21_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_21_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_21_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_21_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_21_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_21_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_21_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_21_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_21_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_21_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_21_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_21_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_21_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_22 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_22 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_21_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_21_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_21_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_21_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_21_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_21_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_22, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_22, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_22 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_21_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_21_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_22, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_22, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_22 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_21_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (22) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_22( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_22( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_22( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_22( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_22_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_22( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_22_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_22( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_22_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (22) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_22( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_22( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_22( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_22_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_22_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_22_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_22_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_22_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_22_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_22_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_22_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_22_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_22_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_22_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_22_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_22_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_22_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_22_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_22_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_22_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_22_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_22_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_22_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_22_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_22_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_22_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_22_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_22_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_22_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_22_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_22_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_23 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_23 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_22_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_22_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_22_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_22_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_22_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_22_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_23, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_23, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_23 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_22_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_22_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_23, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_23, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_23 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_22_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (23) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_23( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_23( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_23( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_23( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_23_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_23( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_23_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_23( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_23_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (23) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_23( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_23( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_23( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_23_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_23_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_23_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_23_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_23_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_23_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_23_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_23_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_23_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_23_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_23_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_23_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_23_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_23_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_23_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_23_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_23_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_23_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_23_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_23_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_23_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_23_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_23_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_23_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_23_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_23_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_23_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_23_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_24 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_24 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_23_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_23_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_23_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_23_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_23_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_23_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_24, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_24, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_24 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_23_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_23_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_24, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_24, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_24 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_23_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (24) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_24( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_24( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_24( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_24( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_24_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_24( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_24_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_24( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_24_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (24) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_24( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_24( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_24( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_24_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_24_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_24_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_24_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_24_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_24_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_24_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_24_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_24_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_24_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_24_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_24_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_24_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_24_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_24_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_24_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_24_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_24_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_24_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_24_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_24_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_24_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_24_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_24_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_24_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_24_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_24_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_24_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_25 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_25 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_24_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_24_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_24_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_24_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_24_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_24_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_25, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_25, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_25 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_24_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_24_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_25, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_25, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_25 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_24_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (25) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_25( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_25( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_25( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_25( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_25_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_25( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_25_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_25( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_25_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (25) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_25( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_25( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_25( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_25_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_25_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_25_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_25_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_25_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_25_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_25_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_25_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_25_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_25_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_25_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_25_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_25_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_25_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_25_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_25_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_25_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_25_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_25_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_25_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_25_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_25_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_25_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_25_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_25_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_25_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_25_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_25_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_26 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_26 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_25_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_25_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_25_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_25_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_25_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_25_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_26, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_26, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_26 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_25_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_25_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_26, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_26, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_26 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_25_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (26) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_26( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_26( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_26( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_26( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_26_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_26( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_26_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_26( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_26_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (26) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_26( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_26( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_26( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_26_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_26_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_26_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_26_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_26_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_26_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_26_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_26_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_26_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_26_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_26_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_26_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_26_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_26_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_26_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_26_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_26_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_26_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_26_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_26_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_26_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_26_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_26_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_26_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_26_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_26_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_26_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_26_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_27 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_27 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_26_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_26_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_26_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_26_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_26_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_26_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_27, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_27, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_27 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_26_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_26_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_27, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_27, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_27 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_26_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (27) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_27( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_27( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_27( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_27( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_27_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_27( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_27_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_27( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_27_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (27) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_27( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_27( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_27( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_27_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_27_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_27_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_27_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_27_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_27_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_27_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_27_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_27_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_27_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_27_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_27_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_27_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_27_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_27_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_27_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_27_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_27_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_27_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_27_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_27_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_27_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_27_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_27_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_27_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_27_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_27_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_27_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_28 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_28 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_27_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_27_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_27_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_27_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_27_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_27_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_28, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_28, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_28 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_27_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_27_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_28, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_28, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_28 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_27_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (28) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_28( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_28( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_28( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_28( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_28_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_28( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_28_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_28( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_28_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (28) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_28( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_28( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_28( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_28_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_28_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_28_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_28_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_28_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_28_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_28_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_28_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_28_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_28_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_28_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_28_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_28_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_28_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_28_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_28_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_28_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_28_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_28_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_28_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_28_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_28_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_28_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_28_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_28_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_28_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_28_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_28_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_29 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_29 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_28_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_28_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_28_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_28_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_28_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_28_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_29, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_29, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_29 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_28_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_28_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_29, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_29, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_29 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_28_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (29) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_29( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_29( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_29( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_29( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_29_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_29( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_29_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_29( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_29_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (29) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_29( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_29( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_29( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_29_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_29_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_29_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_29_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_29_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_29_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_29_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_29_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_29_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_29_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_29_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_29_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_29_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_29_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_29_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_29_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_29_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_29_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_29_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_29_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_29_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_29_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_29_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_29_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_29_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_29_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_29_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_29_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_30 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_30 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_29_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_29_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_29_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_29_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_29_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_29_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_30, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_30, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_30 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_29_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_29_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_30, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_30, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_30 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_29_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (30) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_30( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_30( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_30( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_30( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_30_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_30( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_30_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_30( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_30_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (30) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_30( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_30( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_30( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_30_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_30_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_30_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_30_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_30_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_30_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_30_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_30_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_30_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_30_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_30_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_30_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_30_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_30_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_30_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_30_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_30_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_30_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_30_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_30_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_30_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_30_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_30_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_30_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_30_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_30_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_30_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_30_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_31 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_31 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_30_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_30_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_30_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_30_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_30_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_30_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_31, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_31, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_31 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_30_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_30_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_31, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_31, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_31 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_30_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (31) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_31( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_31( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_31( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_31( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_31_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_31( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_31_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_31( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_31_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (31) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_31( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_31( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_31( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_31_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_31_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_31_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_31_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_31_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_31_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_31_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_31_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_31_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_31_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_31_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_31_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_31_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_31_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_31_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_31_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_31_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_31_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_31_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_31_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_31_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_31_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_31_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_31_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_31_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_31_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_31_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_31_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_32 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_32 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_31_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_31_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_31_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_31_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_31_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_31_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_32, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_32, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_32 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_31_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_31_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_32, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_32, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_32 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_31_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (32) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_32( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_32( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_32( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_32( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_32_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_32( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_32_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_32( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_32_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (32) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_32( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_32( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_32( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_32_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_32_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_32_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_32_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_32_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_32_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_32_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_32_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_32_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_32_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_32_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_32_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_32_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_32_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_32_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_32_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_32_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_32_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_32_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_32_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_32_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_32_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_32_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_32_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_32_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_32_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_32_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_32_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_33 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_33 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_32_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_32_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_32_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_32_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_32_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_32_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_33, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_33, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_33 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_32_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_32_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_33, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_33, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_33 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_32_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (33) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_33( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_33( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_33( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_33( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_33_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_33( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_33_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_33( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_33_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (33) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_33( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_33( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_33( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_33_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_33_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_33_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_33_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_33_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_33_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_33_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_33_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_33_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_33_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_33_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_33_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_33_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_33_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_33_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_33_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_33_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_33_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_33_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_33_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_33_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_33_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_33_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_33_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_33_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_33_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_33_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_33_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_34 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_34 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_33_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_33_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_33_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_33_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_33_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_33_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_34, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_34, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_34 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_33_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_33_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_34, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_34, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_34 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_33_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (34) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_34( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_34( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_34( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_34( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_34_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_34( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_34_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_34( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_34_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (34) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_34( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_34( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_34( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_34_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_34_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_34_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_34_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_34_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_34_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_34_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_34_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_34_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_34_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_34_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_34_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_34_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_34_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_34_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_34_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_34_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_34_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_34_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_34_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_34_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_34_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_34_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_34_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_34_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_34_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_34_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_34_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_35 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_35 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_34_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_34_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_34_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_34_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_34_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_34_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_35, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_35, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_35 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_34_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_34_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_35, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_35, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_35 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_34_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (35) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_35( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_35( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_35( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_35( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_35_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_35( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_35_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_35( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_35_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (35) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_35( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_35( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_35( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_35_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_35_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_35_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_35_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_35_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_35_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_35_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_35_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_35_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_35_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_35_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_35_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_35_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_35_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_35_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_35_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_35_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_35_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_35_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_35_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_35_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_35_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_35_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_35_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_35_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_35_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_35_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_35_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_36 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_36 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_35_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_35_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_35_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_35_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_35_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_35_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_36, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_36, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_36 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_35_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_35_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_36, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_36, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_36 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_35_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (36) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_36( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_36( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_36( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_36( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_36_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_36( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_36_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_36( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_36_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (36) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_36( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_36( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_36( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_36_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_36_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_36_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_36_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_36_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_36_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_36_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_36_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_36_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_36_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_36_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_36_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_36_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_36_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_36_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_36_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_36_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_36_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_36_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_36_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_36_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_36_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_36_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_36_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_36_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_36_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_36_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_36_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_37 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_37 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_36_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_36_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_36_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_36_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_36_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_36_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_37, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_37, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_37 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_36_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_36_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_37, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_37, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_37 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_36_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (37) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_37( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_37( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_37( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_37( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_37_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_37( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_37_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_37( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_37_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (37) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_37( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_37( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_37( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_37_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_37_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_37_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_37_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_37_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_37_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_37_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_37_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_37_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_37_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_37_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_37_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_37_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_37_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_37_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_37_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_37_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_37_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_37_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_37_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_37_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_37_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_37_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_37_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_37_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_37_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_37_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_37_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_38 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_38 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_37_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_37_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_37_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_37_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_37_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_37_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_38, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_38, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_38 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_37_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_37_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_38, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_38, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_38 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_37_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (38) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_38( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_38( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_38( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_38( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_38_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_38( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_38_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_38( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_38_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (38) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_38( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_38( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_38( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_38_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_38_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_38_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_38_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_38_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_38_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_38_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_38_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_38_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_38_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_38_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_38_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_38_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_38_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_38_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_38_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_38_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_38_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_38_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_38_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_38_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_38_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_38_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_38_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_38_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_38_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_38_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_38_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_39 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_39 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_38_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_38_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_38_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_38_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_38_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_38_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_39, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_39, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_39 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_38_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_38_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_39, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_39, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_39 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_38_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (39) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_39( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_39( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_39( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_39( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_39_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_39( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_39_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_39( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_39_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (39) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_39( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_39( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_39( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_39_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_39_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_39_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_39_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_39_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_39_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_39_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_39_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_39_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_39_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_39_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_39_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_39_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_39_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_39_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_39_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_39_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_39_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_39_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_39_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_39_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_39_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_39_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_39_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_39_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_39_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_39_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_39_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_40 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_40 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_39_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_39_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_39_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_39_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_39_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_39_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_40, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_40, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_40 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_39_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_39_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_40, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_40, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_40 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_39_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (40) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_40( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_40( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_40( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_40( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_40_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_40( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_40_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_40( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_40_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (40) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_40( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_40( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_40( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_40_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_40_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_40_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_40_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_40_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_40_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_40_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_40_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_40_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_40_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_40_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_40_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_40_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_40_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_40_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_40_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_40_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_40_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_40_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_40_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_40_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_40_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_40_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_40_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_40_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_40_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_40_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_40_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_41 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_41 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_40_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_40_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_40_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_40_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_40_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_40_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_41, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_41, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_41 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_40_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_40_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_41, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_41, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_41 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_40_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (41) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_41( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_41( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_41( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_41( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_41_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_41( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_41_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_41( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_41_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (41) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_41( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_41( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_41( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_41_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_41_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_41_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_41_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_41_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_41_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_41_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_41_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_41_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_41_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_41_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_41_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_41_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_41_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_41_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_41_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_41_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_41_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_41_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_41_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_41_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_41_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_41_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_41_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_41_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_41_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_41_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_41_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_42 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_42 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_41_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_41_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_41_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_41_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_41_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_41_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_42, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_42, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_42 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_41_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_41_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_42, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_42, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_42 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_41_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (42) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_42( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_42( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_42( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_42( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_42_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_42( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_42_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_42( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_42_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (42) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_42( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_42( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_42( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_42_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_42_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_42_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_42_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_42_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_42_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_42_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_42_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_42_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_42_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_42_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_42_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_42_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_42_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_42_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_42_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_42_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_42_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_42_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_42_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_42_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_42_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_42_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_42_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_42_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_42_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_42_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_42_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_43 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_43 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_42_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_42_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_42_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_42_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_42_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_42_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_43, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_43, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_43 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_42_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_42_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_43, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_43, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_43 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_42_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (43) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_43( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_43( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_43( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_43( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_43_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_43( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_43_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_43( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_43_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (43) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_43( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_43( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_43( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_43_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_43_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_43_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_43_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_43_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_43_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_43_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_43_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_43_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_43_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_43_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_43_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_43_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_43_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_43_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_43_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_43_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_43_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_43_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_43_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_43_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_43_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_43_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_43_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_43_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_43_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_43_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_43_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_44 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_44 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_43_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_43_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_43_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_43_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_43_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_43_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_44, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_44, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_44 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_43_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_43_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_44, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_44, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_44 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_43_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (44) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_44( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_44( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_44( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_44( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_44_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_44( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_44_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_44( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_44_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (44) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_44( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_44( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_44( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_44_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_44_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_44_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_44_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_44_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_44_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_44_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_44_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_44_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_44_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_44_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_44_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_44_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_44_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_44_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_44_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_44_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_44_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_44_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_44_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_44_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_44_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_44_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_44_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_44_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_44_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_44_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_44_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_45 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_45 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_44_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_44_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_44_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_44_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_44_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_44_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_45, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_45, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_45 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_44_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_44_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_45, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_45, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_45 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_44_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (45) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_45( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_45( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_45( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_45( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_45_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_45( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_45_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_45( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_45_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (45) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_45( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_45( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_45( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_45_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_45_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_45_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_45_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_45_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_45_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_45_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_45_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_45_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_45_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_45_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_45_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_45_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_45_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_45_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_45_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_45_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_45_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_45_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_45_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_45_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_45_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_45_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_45_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_45_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_45_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_45_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_45_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_46 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_46 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_45_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_45_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_45_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_45_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_45_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_45_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_46, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_46, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_46 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_45_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_45_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_46, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_46, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_46 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_45_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (46) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_46( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_46( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_46( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_46( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_46_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_46( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_46_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_46( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_46_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (46) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_46( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_46( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_46( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_46_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_46_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_46_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_46_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_46_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_46_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_46_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_46_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_46_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_46_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_46_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_46_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_46_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_46_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_46_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_46_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_46_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_46_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_46_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_46_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_46_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_46_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_46_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_46_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_46_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_46_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_46_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_46_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_47 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_47 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_46_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_46_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_46_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_46_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_46_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_46_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_47, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_47, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_47 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_46_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_46_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_47, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_47, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_47 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_46_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (47) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_47( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_47( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_47( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_47( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_47_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_47( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_47_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_47( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_47_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (47) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_47( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_47( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_47( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_47_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_47_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_47_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_47_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_47_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_47_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_47_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_47_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_47_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_47_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_47_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_47_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_47_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_47_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_47_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_47_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_47_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_47_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_47_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_47_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_47_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_47_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_47_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_47_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_47_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_47_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_47_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_47_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_48 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_48 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_47_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_47_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_47_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_47_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_47_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_47_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_48, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_48, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_48 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_47_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_47_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_48, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_48, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_48 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_47_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (48) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_48( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_48( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_48( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_48( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_48_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_48( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_48_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_48( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_48_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (48) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_48( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_48( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_48( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_48_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_48_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_48_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_48_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_48_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_48_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_48_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_48_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_48_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_48_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_48_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_48_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_48_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_48_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_48_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_48_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_48_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_48_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_48_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_48_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_48_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_48_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_48_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_48_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_48_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_48_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_48_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_48_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_49 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_49 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_48_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_48_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_48_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_48_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_48_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_48_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_49, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_49, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_49 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_48_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_48_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_49, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_49, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_49 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_48_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (49) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_49( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_49( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_49( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_49( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_49_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_49( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_49_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_49( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_49_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (49) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_49( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_49( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_49( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_49_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_49_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_49_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_49_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_49_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_49_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_49_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_49_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_49_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_49_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_49_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_49_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_49_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_49_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_49_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_49_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_49_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_49_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_49_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_49_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_49_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_49_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_49_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_49_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_49_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_49_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_49_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_49_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_50 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_50 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_49_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_49_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_49_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_49_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_49_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_49_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_50, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_50, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_50 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_49_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_49_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_50, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_50, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_50 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_49_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (50) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_50( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_50( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_50( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_50( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_50_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_50( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_50_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_50( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_50_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (50) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_50( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_50( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_50( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_50_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_50_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_50_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_50_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_50_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_50_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_50_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_50_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_50_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_50_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_50_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_50_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_50_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_50_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_50_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_50_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_50_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_50_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_50_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_50_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_50_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_50_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_50_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_50_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_50_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_50_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_50_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_50_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_51 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_51 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_50_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_50_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_50_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_50_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_50_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_50_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_51, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_51, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_51 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_50_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_50_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_51, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_51, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_51 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_50_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (51) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_51( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_51( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_51( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_51( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_51_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_51( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_51_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_51( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_51_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (51) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_51( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_51( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_51( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_51_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_51_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_51_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_51_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_51_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_51_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_51_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_51_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_51_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_51_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_51_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_51_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_51_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_51_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_51_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_51_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_51_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_51_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_51_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_51_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_51_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_51_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_51_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_51_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_51_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_51_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_51_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_51_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_52 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_52 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_51_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_51_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_51_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_51_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_51_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_51_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_52, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_52, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_52 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_51_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_51_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_52, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_52, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_52 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_51_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (52) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_52( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_52( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_52( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_52( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_52_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_52( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_52_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_52( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_52_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (52) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_52( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_52( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_52( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_52_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_52_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_52_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_52_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_52_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_52_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_52_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_52_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_52_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_52_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_52_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_52_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_52_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_52_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_52_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_52_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_52_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_52_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_52_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_52_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_52_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_52_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_52_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_52_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_52_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_52_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_52_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_52_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_53 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_53 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_52_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_52_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_52_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_52_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_52_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_52_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_53, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_53, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_53 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_52_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_52_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_53, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_53, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_53 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_52_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (53) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_53( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_53( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_53( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_53( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_53_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_53( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_53_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_53( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_53_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (53) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_53( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_53( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_53( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_53_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_53_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_53_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_53_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_53_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_53_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_53_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_53_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_53_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_53_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_53_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_53_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_53_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_53_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_53_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_53_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_53_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_53_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_53_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_53_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_53_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_53_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_53_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_53_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_53_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_53_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_53_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_53_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_54 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_54 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_53_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_53_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_53_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_53_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_53_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_53_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_54, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_54, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_54 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_53_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_53_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_54, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_54, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_54 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_53_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (54) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_54( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_54( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_54( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_54( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_54_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_54( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_54_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_54( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_54_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (54) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_54( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_54( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_54( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_54_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_54_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_54_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_54_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_54_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_54_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_54_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_54_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_54_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_54_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_54_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_54_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_54_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_54_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_54_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_54_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_54_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_54_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_54_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_54_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_54_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_54_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_54_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_54_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_54_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_54_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_54_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_54_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_55 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_55 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_54_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_54_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_54_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_54_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_54_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_54_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_55, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_55, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_55 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_54_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_54_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_55, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_55, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_55 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_54_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (55) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_55( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_55( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_55( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_55( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_55_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_55( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_55_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_55( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_55_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (55) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_55( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_55( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_55( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_55_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_55_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_55_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_55_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_55_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_55_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_55_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_55_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_55_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_55_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_55_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_55_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_55_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_55_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_55_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_55_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_55_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_55_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_55_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_55_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_55_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_55_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_55_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_55_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_55_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_55_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_55_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_55_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_56 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_56 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_55_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_55_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_55_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_55_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_55_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_55_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_56, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_56, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_56 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_55_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_55_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_56, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_56, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_56 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_55_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (56) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_56( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_56( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_56( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_56( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_56_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_56( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_56_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_56( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_56_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (56) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_56( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_56( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_56( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_56_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_56_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_56_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_56_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_56_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_56_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_56_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_56_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_56_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_56_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_56_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_56_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_56_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_56_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_56_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_56_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_56_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_56_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_56_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_56_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_56_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_56_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_56_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_56_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_56_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_56_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_56_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_56_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_57 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_57 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_56_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_56_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_56_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_56_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_56_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_56_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_57, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_57, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_57 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_56_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_56_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_57, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_57, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_57 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_56_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (57) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_57( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_57( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_57( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_57( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_57_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_57( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_57_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_57( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_57_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (57) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_57( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_57( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_57( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_57_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_57_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_57_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_57_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_57_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_57_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_57_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_57_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_57_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_57_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_57_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_57_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_57_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_57_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_57_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_57_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_57_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_57_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_57_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_57_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_57_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_57_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_57_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_57_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_57_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_57_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_57_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_57_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_58 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_58 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_57_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_57_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_57_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_57_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_57_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_57_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_58, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_58, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_58 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_57_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_57_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_58, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_58, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_58 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_57_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (58) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_58( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_58( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_58( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_58( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_58_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_58( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_58_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_58( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_58_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (58) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_58( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_58( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_58( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_58_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_58_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_58_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_58_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_58_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_58_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_58_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_58_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_58_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_58_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_58_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_58_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_58_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_58_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_58_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_58_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_58_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_58_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_58_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_58_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_58_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_58_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_58_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_58_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_58_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_58_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_58_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_58_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_59 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_59 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_58_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_58_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_58_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_58_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_58_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_58_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_59, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_59, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_59 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_58_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_58_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_59, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_59, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_59 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_58_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (59) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_59( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_59( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_59( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_59( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_59_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_59( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_59_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_59( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_59_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (59) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_59( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_59( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_59( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_59_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_59_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_59_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_59_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_59_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_59_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_59_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_59_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_59_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_59_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_59_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_59_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_59_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_59_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_59_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_59_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_59_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_59_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_59_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_59_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_59_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_59_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_59_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_59_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_59_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_59_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_59_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_59_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_60 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_60 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_59_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_59_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_59_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_59_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_59_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_59_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_60, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_60, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_60 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_59_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_59_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_60, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_60, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_60 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_59_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (60) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_60( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_60( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_60( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_60( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_60_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_60( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_60_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_60( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_60_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (60) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_60( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_60( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_60( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_60_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_60_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_60_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_60_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_60_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_60_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_60_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_60_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_60_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_60_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_60_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_60_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_60_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_60_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_60_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_60_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_60_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_60_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_60_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_60_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_60_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_60_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_60_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_60_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_60_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_60_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_60_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_60_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_61 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_61 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_60_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_60_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_60_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_60_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_60_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_60_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_61, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_61, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_61 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_60_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_60_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_61, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_61, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_61 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_60_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (61) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_61( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_61( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_61( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_61( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_61_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_61( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_61_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_61( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_61_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (61) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_61( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_61( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_61( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_61_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_61_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_61_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_61_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_61_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_61_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_61_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_61_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_61_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_61_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_61_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_61_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_61_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_61_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_61_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_61_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_61_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_61_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_61_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_61_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_61_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_61_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_61_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_61_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_61_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_61_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_61_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_61_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_62 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_62 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_61_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_61_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_61_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_61_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_61_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_61_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_62, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_62, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_62 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_61_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_61_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_62, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_62, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_62 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_61_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (62) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_62( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_62( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_62( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_62( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_62_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_62( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_62_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_62( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_62_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (62) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_62( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_62( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_62( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_62_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_62_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_62_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_62_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_62_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_62_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_62_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_62_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_62_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_62_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_62_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_62_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_62_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_62_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_62_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_62_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_62_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_62_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_62_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_62_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_62_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_62_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_62_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_62_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_62_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_62_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_62_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_62_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_63 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_63 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_62_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_62_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_62_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_62_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_62_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_62_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_63, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_63, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_63 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_62_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_62_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_63, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_63, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_63 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_62_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (63) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_63( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_63( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_63( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_63( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_63_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_63( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_63_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_63( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_63_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (63) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_63( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_63( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_63( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_63_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_63_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_63_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_63_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_63_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_63_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_63_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_63_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_63_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_63_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_63_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_63_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_63_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_63_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_63_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_63_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_63_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_63_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_63_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_63_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_63_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_63_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_63_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_63_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_63_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_63_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_63_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_63_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_64 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_64 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_63_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_63_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_63_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_63_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_63_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_63_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_64, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_64, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_64 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_63_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_63_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_64, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_64, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_64 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_63_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-/* PUBLIC (64) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64_(d, l, 0, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_64( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64_(d, l, 1, 0, decl)
-
-#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_64( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64_(d, l, 0, 1, decl)
-
-#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_64( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64_(d, l, 1, 1, decl)
-
-// Parse else assertions for both if and static-if.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64(\
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64_( \
-            d, l, 0, decl_traits)
-
-// Parse else post-assertions for both if and static-if.
-#define \
-BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64( \
-        d, l, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64_( \
-            d, l, 1, decl_traits)
-
-// Precondition: decl = `if( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_64( \
-        d, l, is_static, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_64_(d, l, is_static, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \
-            BOOST_PP_IIF(is_static, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \
-            , \
-                BOOST_PP_TUPLE_REM(1) \
-            )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_64( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_64_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Precondition: decl = `else ( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_64( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_64_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE (64) */
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64_( \
-        d, l, is_post, is_static, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_64( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_64( \
-            d, l, is_post, \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_64( \
-            d, l, is_static, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_PP_EXPR_IIF(is_static, static) if, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))))
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64_( \
-        d, l, is_post, decl_traits) \
-    BOOST_PP_IIF( \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-            ) \
-        ) \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_64_\
-    ,         BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_64_ \
-    )(d, l, is_post, decl_traits)
-
-#define \
-BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_64_( \
-        d, l, is_post, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_64_(d, l, is_post, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \
-    )
-
-// If trying to replace else statements of a if that already had some, threat
-// replacement `else ...` as a bool assertion (so it will eventually error).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_64_(\
-        d, l, is_post, decl_traits) \
-    (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits))
-
-// Precondition: decl = `( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_64_( \
-        d, l, is_static, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_ELEM(2, 1, \
-                BOOST_PP_IIF(is_static, \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_64_ \
-                , \
-                    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_64_ \
-                )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-// Precondition: decl = `( ,,, )`.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_64_(d, l, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \
-            BOOST_PP_TUPLE_ELEM(0, decl)), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_64_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_64_ \
-    )(d, l, decl)
-
-// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_64_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \
-            BOOST_PP_TUPLE_REM_CTOR(1, decl))
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_64_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_64_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_64_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_64_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_64_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_64_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_64_ \
-    )(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_64_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_64_(d, l, is_post, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_64_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_64_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_64_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_64_ \
-    ))(d, l, is_post, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_64_( \
-        d, l, is_post, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-     
-// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_64_( \
-        d, l, is_post, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_64_(d, l, \
-        BOOST_PP_IIF(is_post, \
-            BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_65 \
-        , \
-            BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_65 \
-        )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_64_( \
-        d, l, decl_assertion, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( assertions,,, ) ...` (multiple assertions).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_64_( \
-        d, l, is_post, decl, traits) \
-    BOOST_PP_IIF(is_post, \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_64_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_64_ \
-    )(d, l, decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_64_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_64_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_65, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_65, \
-  BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_65 \
-                ) \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_64_( \
-        d, l, decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_64_( \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_65, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_65, \
-  BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_65 \
-                ) \
-            ) \
-        ) \
-    )
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_64_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/if/cond.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/if/cond.hpp
deleted file mode 100644
index 835433f..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/if/cond.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_HPP_
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// Expand to const-assertion-traits or bool-assertion-traits (depending on
-// ASSERTION_TRAITS_KEY) to be inspected using CONST_ASSERTION_TRAITS and
-// BOOL_ASSERTION_TRAITS respectively.
-// For static-if, always expand to bool-assertion-traits.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_COND, traits)
-
-// PARSE macro #defined in "if.hpp" (because easier for reentrant repetitions).
-
-#endif // #include gaurd
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/if/elses.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/if/elses.hpp
deleted file mode 100644
index 6248983..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/if/elses.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_HPP_
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// Expand to `pp-seq | EMPTY()`, pp-seq of assertion traits to be inspected via
-// appropriate ..._ASSERTION_TRAITS_... macros.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_ELSES, traits)()
-
-// PARSE macro #defined in "if.hpp" (because easier for reentrant repetitions).
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/if/thens.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/if/thens.hpp
deleted file mode 100644
index 627c629..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/if/thens.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_HPP_
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// Expand to `pp-seq | EMPTY()`, pp-seq of assertion traits to be inspected via
-// appropriate ..._ASSERTION_TRAITS_... macros.
-#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_THENS, traits)()
-
-// PARSE macro #defined in "if.hpp" (because easier for reentrant repetitions).
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/key.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/key.hpp
deleted file mode 100644
index 9dda7d0..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/key.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_ASSERTION_KEY_HPP_
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_KEY_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-
-/* PUBLIC */
-
-// Expand to `namespace | using | typedef | return | ...oldof... | bool |
-// const | if | static if` related assertion traits to be inspected with
-// NAMESPACE_ASSERTION_TRAITS, USING_ASSERTION_TRAITS, etc. macros.
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_KEY(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_ASSERTION_KEY, traits)
-
-#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(key, decl_traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_traits), key) \
-    )
-
-#endif // #incldue guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/namespace.hpp
deleted file mode 100644
index da0579b..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/assertion/namespace/name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/namespace/new_name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// ASSERTION_TRAITS_KEY(traits) expands to `namespace` for this assertion.
-
-// Precondition: decl = `namespace (new-name) as name`.
-#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_PARSE( \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_PARSE( \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(namespace, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    )))))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/name.hpp
deleted file mode 100644
index 9229d1a..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/name.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_HPP_
-#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `name`.
-#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_NAMESPACE_ASSERTION_NAME, \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_PARSE( \
-        decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_PARSE_ARGS_ \
-        decl_traits \
-    )
-    
-/* PRIVATE */
-
-// Precondition: decl = `name NIL`.
-#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_PARSE_ARGS_( \
-        decl, traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \
-    )
-
-#endif // #include guard    
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/new_name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/new_name.hpp
deleted file mode 100644
index 2fcb75b..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/new_name.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_HPP_
-#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/contract/as.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/namespace.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-
-/* PUBLIC */
-
-// Expand to `new-name`.
-#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_NAMESPACE_ASSERTION_NEW_NAME, \
-        traits \
-    )
-
-// Precondition: decl = `namespace (new-name) as ...`.
-#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_PARSE( \
-        decl_traits) \
-    BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE_FRONT( \
-                BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-    
-/* PRIVATE */
-
-// Precondition: decl = `(new-name) as ...`.
-#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_( \
-        decl, traits) \
-    ( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_AS_REMOVE_FRONT( \
-                BOOST_PP_TUPLE_EAT(1) decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_REM_CTOR(1, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-        ) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/oldof.hpp
deleted file mode 100644
index 42d6572..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/assertion/oldof/assign.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/oldof/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/oldof/expr.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/bool/expr.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `..._TRAITS_ODLOF` (this can be
-//               checked with `..._TRAITS_IS_OLDOF_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_REMOVE_FRONT( \
-        tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `..._TRAITS_OLDOF`.
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_REMOVE_BACK( \
-        tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_EMPTY, tokens)
-
-// This is the operator that decl. syntax must use to prefix old-of expressions:
-// `{auto | wrapper-type} var = ..._OPERATOR exr`.
-// Implementation: The OPERATOR_ before the comma `,` is used so that old-of
-// assertion assignments can be cat-back by KEYWORD_..._BACK macros (PP_NIL
-// could have been used as well). The OPERATOR_ after the comma `,` is used to
-// tag the front of an old-of expression so old-of assertions can be recognized
-// during parsing.
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_, \
-            BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_
-
-// ASSERTION_TRAITS_KEY(traits) expands to `...OPERATOR_` above for this
-// assertion (must check using the `..._IS` macro above).
-
-// Precondition: oldofdecl_booltraits =
-// `(OLDOF expr, (bool) (auto-wrapped-type assign =)` (which is here transformed
-// to the parsalbe decl = `(OLDOF expr) auto-wrapped-type assign =`).
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D( \
-        d, oldofdecl_booltraits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_PARSE( \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_TYPE_PARSE_D(d, \
-    BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_PARSE( \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \
-            BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        (BOOST_PP_TUPLE_ELEM(2, 0, oldofdecl_booltraits)) \
-        BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR( \
-                BOOST_PP_TUPLE_ELEM(2, 1, oldofdecl_booltraits)) \
-        BOOST_PP_NIL \
-    ))))))
-
-/* PRIVATE */
-      
-// This macro name must NOT be #defined (used like a "keyword").
-#ifdef BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_
-#   error "reserved macro name must not be #defined"
-#endif
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_COMMABOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_ ,
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_EMPTYBOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/assign.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/assign.hpp
deleted file mode 100644
index 432befa..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/assign.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_HPP_
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `name = ` (note trailing `=` that cannot be removed via pp).
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_ASSIGN, \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_PARSE( \
-        decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_PARSE_ARGS_ \
-        decl_traits \
-    )
-    
-/* PRIVATE */
-
-// Precondition: decl = `name = OLDOF_OPERATOR_ NIL`.
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_PARSE_ARGS_( \
-        decl, traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-            BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                decl \
-            )) \
-        ) \
-    )
-
-#endif // #include guard    
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/expr.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/expr.hpp
deleted file mode 100644
index 59637b5..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/expr.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_HPP_
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-
-/* PUBLIC */
-
-// Expand to `...` (tokens).
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_EXPR, traits)
-
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_PARSE(decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_PARSE_ARGS_ \
-        decl_traits \
-    )
-
-/* PRIVATE */
-
-// Precondition: decl = `(OLDOF expr) ...`
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_PARSE_ARGS_( \
-        decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(1) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_REMOVE_FRONT(\
-                BOOST_PP_TUPLE_REM_CTOR(1, \
-                        BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/type.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/type.hpp
deleted file mode 100644
index 62341bc..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/type.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_TYPE_HPP_
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_TYPE_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-
-/* PUBLIC */
-
-// Expand to `auto | (type,,,)` (this should never be empty).
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_TYPE(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_TYPE, \
-        traits \
-    )()
-
-// Precondition: decl = `{auto | wrapped-type} ...`.
-#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_TYPE_PARSE_D(d, \
-        decl_traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D(d, \
-                BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-    
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/return.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/return.hpp
deleted file mode 100644
index a4666e6..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/return.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/assertion/return/assign.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/return/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// ASSERTION_TRAITS_KEY(traits) expands to `return` for this assertion.
-
-// Precondition: decl = `typedef wrapped-type new-name`.
-#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_PARSE( \
-    BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_TYPE_PARSE_D(d, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(return, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    )))))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/return/assign.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/return/assign.hpp
deleted file mode 100644
index e47c582..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/return/assign.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_HPP_
-#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/return.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `name =` (note trailing `=` that cannot be removed via pp).
-#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_RETURN_ASSERTION_ASSIGN, \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_PARSE( \
-        decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_PARSE_ARGS_ \
-        decl_traits \
-    )
-    
-/* PRIVATE */
-
-// Precondition: decl = `name = return NIL`.
-#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_PARSE_ARGS_( \
-        decl, traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                decl \
-            )) \
-        ) \
-    )
-
-#endif // #include guard    
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/return/type.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/return/type.hpp
deleted file mode 100644
index da95bf2..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/return/type.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_TYPE_HPP_
-#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_TYPE_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-
-/* PUBLIC */
-
-// Expand to `auto | (type,,,)` (this should never be empty).
-#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_TYPE(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_RETURN_ASSERTION_TYPE, \
-        traits \
-    )()
-
-// Precondition: decl = `{auto | wrapped-type} ...`.
-#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_TYPE_PARSE_D(d, \
-        decl_traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D(d, \
-                BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-    
-#endif // #include guard    
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/typedef.hpp
deleted file mode 100644
index 2a4ea30..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/assertion/typedef/new_name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/typedef/name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// ASSERTION_TRAITS_KEY(traits) expands to `typedef` for this assertion.
-
-// Precondition: decl = `typedef wrapped-type new-name`.
-#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_PARSE( \
-    BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NAME_PARSE_D(d, \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(typedef, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    )))))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/name.hpp
deleted file mode 100644
index dbaf911..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/name.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NAME_HPP_
-#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NAME_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/typedef.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-
-/* PUBLIC */
-
-// Expand to `(type,,,)`.
-#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NAME(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_TYPEDEF_ASSERTION_NAME, \
-        traits \
-    )
-
-// Precondition: decl = `typedef wrapped-type ...`.
-#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NAME_PARSE_D(d, \
-        decl_traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D(d, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVE_FRONT( \
-                    BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        )(), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-    
-#endif // #include guard    
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/new_name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/new_name.hpp
deleted file mode 100644
index 9dabbe2..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/new_name.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_HPP_
-#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `new-name`.
-#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_TYPEDEF_ASSERTION_NEW_NAME, \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_PARSE( \
-        decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_PARSE_ARGS_ \
-        decl_traits \
-    )
-    
-/* PRIVATE */
-
-// Precondition: decl = `name NIL`.
-#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_PARSE_ARGS_( \
-        decl, traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \
-    )
-
-#endif // #include guard    
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/using.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/using.hpp
deleted file mode 100644
index b733a93..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/using.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/assertion/using/name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/using/new_name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/using/namespace.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/using/template_params.hpp>
-#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// ASSERTION_TRAITS_KEY(traits) expands to `using` for this assertion.
-
-// Precondition: decl = `[template( c++-template-parameter, ... )]
-//                       using [namespace | (new-name) as] wrapped-name`.
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_PARSE( \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_PARSE( \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_PARSE( \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_PARSE( \
-    BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(using, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    )))))))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/using/name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/using/name.hpp
deleted file mode 100644
index 68de876..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/using/name.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_HPP_
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/contract/ext_/preprocessor/parenthesize.hpp>
-
-/* PUBLIC */
-
-// Expand to `(name,,,)` (this name is wrapped within parenthesis because in
-// general it can contain commas, for example for template aliases).
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NAME, \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_PARSE( \
-        decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_PARSE_ARGS_ \
-        decl_traits \
-    )
-    
-/* PRIVATE */
-
-// Precondition: decl = `name NIL`.
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_PARSE_ARGS_( \
-        decl, traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-            BOOST_CONTRACT_EXT_PP_PARENTHESIZE( \
-                    BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \
-        ) \
-    )
-
-#endif // #include guard    
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/using/namespace.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/using/namespace.hpp
deleted file mode 100644
index 97e9de5..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/using/namespace.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_HPP_
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/namespace.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to `namespace | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NAMESPACE,\
-        traits \
-    )()
-
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_PARSE( \
-        decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_PARSE_ARGS_ \
-        decl_traits \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_PARSE_ARGS_( \
-        decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_NO_ \
-    )(decl, traits)
-
-// Precondition: decl = `namespace ...`.
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_YES_( \
-        decl, traits) \
-    ( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                namespace BOOST_PP_EMPTY) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_NO_( \
-        decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/using/new_name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/using/new_name.hpp
deleted file mode 100644
index e8d5293..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/using/new_name.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_HPP_
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/contract/as.hpp>
-#include <boost/contract/ext_/preprocessor/paren/has.hpp>
-#include <boost/contract/ext_/preprocessor/paren/front.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to `new-name | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NEW_NAME, \
-        traits \
-    )()
-
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_PARSE( \
-        decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_PARSE_ARGS_ \
-        decl_traits \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_PARSE_ARGS_( \
-        decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_CHECK_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_NO_ \
-    )(decl, traits)
-
-// Precondition: decl = `(,,,) ...` (in general there could be commas in leading
-// parenthesis if that is not a new-name).
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_CHECK_( \
-        decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AS_FRONT( \
-            BOOST_PP_TUPLE_EAT(0) decl), \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_NO_ \
-    )(decl, traits)
-
-// Precondition: decl = (new-name) as ...`.
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_YES_( \
-        decl, traits) \
-    ( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_AS_REMOVE_FRONT(BOOST_PP_TUPLE_EAT(1) \
-                decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_REM_CTOR(1, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) BOOST_PP_EMPTY \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_NO_( \
-        decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/using/template_params.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/using/template_params.hpp
deleted file mode 100644
index fe81e2f..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/assertion/using/template_params.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_HPP_
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/template.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/using.hpp>
-#include <boost/contract/ext_/preprocessor/paren/front.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-
-/* PUBLIC */
-
-// Expand to `(c++-template-parameters,,,) | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_TEMPLATE_PARAMS,\
-        traits \
-    )()
-
-// Precondition: decl = `[template(,,,)] using ...`.
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_PARSE( \
-        decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_ARGS_ \
-        decl_traits \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_ARGS_( \
-        decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_NO_ \
-    )(decl, traits)
-
-// Precondition: decl = `template( c++-template-parameter, ... ) using ...`.
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_YES_( \
-        decl, traits) \
-    BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(decl), traits)
-        
-// Precondition: decl = `using ...`.
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_NO_( \
-        decl, traits) \
-    ( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY) \
-    )
-
-// Precondition: decl = `( c++-template-parameter, ... ) using ...`.
-#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_( \
-        decl, traits) \
-    ( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE_FRONT( \
-                BOOST_PP_TUPLE_EAT(0) decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl) BOOST_PP_EMPTY) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/adt.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/adt.hpp
deleted file mode 100644
index 5057ce5..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/adt.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ADT_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ADT_HPP_
-
-#include <boost/preprocessor/seq/pop_front.hpp>
-#include <boost/preprocessor/seq/elem.hpp>
-#include <boost/preprocessor/seq/pop_back.hpp>
-#include <boost/preprocessor/seq/size.hpp>
-#include <boost/preprocessor/arithmetic/dec.hpp>
-
-// Abstract Data Type (ADT) used to internally represent pp-traits.
-// In theory, it is possible to change traits representation just changing
-// these macros however Boost.Preprocessor docs say that pp-seq are the
-// fastest (always close to random access performance because they use
-// iteration instead of recursion) and largest (up to 256 elements) data
-// structure so there should be no reason to change representation from pp-seq.
-
-// WARNING: PP_TUPLE_ELEM does not handle EMPTY() elements. Therefore, it is
-// necessary to always postfix decl with NIL, (NIL), etc. (for declaration
-// tokens, sequences, etc.) and to never apply DONE(traits) while these are
-// elements inside decl_traits = (decl, triats) 2-tuple (or other pp-tuples).
-
-// NOTE: In this library PARSE macros are so that:
-// * PARSE(...) all expand to 2-tuple `(remaining-decl, parsed-traits)`.
-// * PARSE(decl) starts parsing declaration tokens (init. decl_traits).
-// * PARSE(decl_seq) start parsing pp-seq of declarations (init. decl_traits).
-// * PARSE(decl_traits) interim parsing of declarations (no init. decl_traits).
-// Users will often only need to explicitly call the FUNC_TRAITS_PARSE and
-// CLASS_TRAITS_PARSE macros directly (other PARSE macro are called internally).
-// Some PARSE macros (e.g., from in aux_/) do no parse multiple traits but only
-// a single trait so they do not use the PP_TRAITS macros below but just report
-// trait as tokens (this is documented by these macros).
-
-/* PUBLIC */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT (BOOST_PP_NIL)
-        
-// Usage: DONE(traits) (could expand to EMPTY()).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE BOOST_PP_SEQ_POP_FRONT
-
-// Usage: ELEM(index, traits)
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM BOOST_PP_SEQ_ELEM
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, trait) \
-    traits (trait)
-
-// Usage: POP_BACK(taits)
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK BOOST_PP_SEQ_POP_BACK
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits) \
-    BOOST_PP_SEQ_ELEM(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(traits)), traits)
-
-// NOTE: These DECL_TRAITS macros are provided for convenience only (but use
-// them whenever possible instead of the TRAITS_INIT, TRAITS_DONE, etc. macros
-// above so to make your code more readable and compact).
-// These DECL_TRAITS macros cannot alter `decl` so they just pass that
-// parameter throw (because the format of `decl` is up to the user, sometime
-// it is a pp-seq, sometimes just tokens, etc.).
-
-#define BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT(decl) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT)
-
-#define BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE(decl_traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(2, 1, \
-                decl_traits)) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK(decl_trait, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_trait), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_trait)) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp
deleted file mode 100644
index a3d2164..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_ASSERTION_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_ASSERTION_HPP_
-
-// WARNING: These index values must match parsing order (see assertion.hpp).
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_ASSERTION_KEY                0
-
-// All indexes below start from 1 (0 taken by "key", common to all assertions).
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BOOL_ASSERTION_EXPR          1
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CONST_ASSERTION_CAPTURES     1
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CONST_ASSERTION_EXPR         2
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_COND            1
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_THENS           2
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_ELSES           3
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_RETURN_ASSERTION_TYPE        1
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_RETURN_ASSERTION_ASSIGN      2
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_EXPR         1
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_TYPE         2
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_ASSIGN       3
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_NAMESPACE_ASSERTION_NEW_NAME 1
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_NAMESPACE_ASSERTION_NAME     2
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_TEMPLATE_PARAMS 1
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NAMESPACE    2
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NEW_NAME     3
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NAME         4
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_TYPEDEF_ASSERTION_NAME       1
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_TYPEDEF_ASSERTION_NEW_NAME   2
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/base.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/base.hpp
deleted file mode 100644
index 6ba7ca9..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/base.hpp
+++ /dev/null
@@ -1,12 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_HPP_
-
-// WARNING: These index values must match parsing oder (see base.hpp).
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_ACCESS  0
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_VIRTUAL 1
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_TYPE    2
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/capture.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/capture.hpp
deleted file mode 100644
index 9517a03..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/capture.hpp
+++ /dev/null
@@ -1,11 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_HPP_
-
-// WARNING: These index values must match parsing oder (see capture.hpp).
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_TYPE 0
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_NAME 1
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp
deleted file mode 100644
index 6d192cf..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_HPP_
-
-// WARNING: These index values must match parsing order (see class.hpp).
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_EXPORT             0
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_TEMPLATE           1
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_TEMPLATE_PARAMS    2
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FRIEND             3
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_KEY                4
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_VERBATIM           5
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_NAME               6
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_SPECIALIZATION     7
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FINAL              8
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_VIRT \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FINAL
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_BASES              9
-
-// Must be greater than all indexes (i.e., very last one).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_MAX                10
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp
deleted file mode 100644
index 3a50a02..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_HPP_
-
-// WARNING: These index values must match parsing order (see func.hpp).
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_ACCESS          0
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VERBATIM        1
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXPORT          2
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TEMPLATE        3
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TEMPLATE_PARAMS 4
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_INLINE          5
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_STATIC          6
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXTERN          7
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXPLICIT        8
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VIRTUAL         9
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_FRIEND          10
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CLASSIFIERS \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_FRIEND
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_RETURN          11
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_OPERATOR_NAME   12
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_NAME            13
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PARAMS          14
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CONST           15
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VOLATILE        16
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CV \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VOLATILE
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_REF             17
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXCEPT          18
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TRAILING_RETURN 19
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_FINAL           20
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_OVERRIDE        21
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VIRT \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_OVERRIDE
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PRECONDITIONS   22
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_POSTCONDITIONS  23
-
-// Must be greater than all indexes (i.e., very last one).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_MAX             24
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp
deleted file mode 100644
index 3aa9fe2..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp
+++ /dev/null
@@ -1,12 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_HPP_
-
-// WARNING: Theses index values must match parsing oder (see param.hpp).
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_TYPE       0
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_NAME       1
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_DEFAULT    2
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp
deleted file mode 100644
index ffb0f13..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TRAITS_AUX_HPP_
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRAITS_AUX_HPP_
-
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand decl = `[keyword] ...` to `(..., [keyword] EMPTY)`.
-// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD1_PARSE( \
-    decl, \
-    keyword1, is_keyword1_macro, remove_keyword1_macro \
-) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_ \
-        BOOST_PP_IIF(is_keyword1_macro(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_YES_, decl, \
-            keyword1, remove_keyword1_macro) \
-        , \
-            (BOOST_CONTRACT_EXT_PP_KEYWORD_TRAITS_NO_, decl, ~, ~) \
-        ) \
-    )
-
-// Expand decl = `[keyword] ...` to `(..., [keyword] EMTPY)`, where keyword can
-// be one among 3 possible keywords.
-// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD3_PARSE( \
-    decl, \
-    keyword1, is_keyword1_macro, remove_keyword1_macro, \
-    keyword2, is_keyword2_macro, remove_keyword2_macro, \
-    keyword3, is_keyword3_macro, remove_keyword3_macro \
-) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_ \
-        BOOST_PP_IIF(is_keyword1_macro(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_YES_, decl, \
-            keyword1, remove_keyword1_macro) \
-        , BOOST_PP_IIF(is_keyword2_macro(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_YES_, decl, \
-            keyword2, remove_keyword2_macro) \
-        , BOOST_PP_IIF(is_keyword3_macro(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_YES_, decl, \
-            keyword3, remove_keyword3_macro) \
-        , \
-            (BOOST_CONTRACT_EXT_PP_KEYWORD_TRAITS_NO_, decl, ~, ~) \
-        ))) \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_(macro, _1, _2, _3) \
-    macro(_1, _2, _3)
-
-// Precondition: decl = `keyword ...`.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_YES_( \
-        decl, keyword, remove_keyword_macro) \
-    (remove_keyword_macro(decl), keyword BOOST_PP_EMPTY)
-
-#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRAITS_NO_(decl, unsued1, unused2) \
-    (decl, BOOST_PP_EMPTY)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_comb.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_comb.hpp
deleted file mode 100644
index 6e661be..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_comb.hpp
+++ /dev/null
@@ -1,128 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_COMB_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_COMB_HPP_
-
-#include <boost/preprocessor/control/iif.hpp>
-
-/* PUBLIC */
-
-// Expand:
-//  decl = `keyword1 ...`           to `(..., (1, 0))`.
-//  decl = `keyword2 ...`           to `(..., (0, 1))`.
-//  decl = `keyword1 keyword2 ...`  to `(..., (1, 1))`.
-//  decl = `keyword2 keyword1 ...`  to `(..., (1, 1))`.
-//  decl = `...`                    to `(..., (0, 0))`.
-// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid).
-// NOTE: There is no distinction between decl = `keyword1 keyword2 ...` and
-// decl = `keyword2 keyword1 ...` as they both expand to trait `(1, 1)` (e.g.,
-// this is OK because in C++ `const volatile` and `volatile const` are both
-// allowed syntactically but they represent the same thing semantically so
-// there is no need to differentiate them).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_PARSE( \
-    decl,  \
-    is_keyword1_macro, remove_keyword1_macro, \
-    is_keyword2_macro, remove_keyword2_macro \
-) \
-    BOOST_PP_IIF(is_keyword1_macro(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_NO_ \
-    )( \
-        decl, \
-        is_keyword1_macro, remove_keyword1_macro, \
-        is_keyword2_macro, remove_keyword2_macro \
-    )
-
-/* PRIVATE */
-
-// Precondition: decl = `keyword1 ...`.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_YES_( \
-    decl,  \
-    is_keyword1_macro, remove_keyword1_macro, \
-    is_keyword2_macro, remove_keyword2_macro \
-) \
-    BOOST_PP_IIF( \
-            is_keyword2_macro(remove_keyword1_macro(decl)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_2_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_ \
-    )( \
-        decl, \
-        is_keyword1_macro, remove_keyword1_macro, \
-        is_keyword2_macro, remove_keyword2_macro \
-    )
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_NO_( \
-    decl,  \
-    is_keyword1_macro, remove_keyword1_macro, \
-    is_keyword2_macro, remove_keyword2_macro \
-) \
-    BOOST_PP_IIF(is_keyword2_macro(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_NONE_ \
-    )( \
-        decl, \
-        is_keyword1_macro, remove_keyword1_macro, \
-        is_keyword2_macro, remove_keyword2_macro \
-    )
-    
-// Precondition: decl = `keyword2 ...`
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_YES_( \
-    decl,  \
-    is_keyword1_macro, remove_keyword1_macro, \
-    is_keyword2_macro, remove_keyword2_macro \
-) \
-    BOOST_PP_IIF( \
-            is_keyword1_macro(remove_keyword2_macro(decl)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_1_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_ \
-    )( \
-        decl, \
-        is_keyword1_macro, remove_keyword1_macro, \
-        is_keyword2_macro, remove_keyword2_macro \
-    )
-        
-// Precondition: decl = `...`.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_NONE_( \
-    decl,  \
-    is_keyword1_macro, remove_keyword1_macro, \
-    is_keyword2_macro, remove_keyword2_macro \
-) \
-    (decl, (0, 0))
-        
-// Precondition: decl = `keyword2 keyword1 ...`.
-// This produces `(1, 1)` as case above (so it cannot be diff. from case above).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_1_( \
-    decl,  \
-    is_keyword1_macro, remove_keyword1_macro, \
-    is_keyword2_macro, remove_keyword2_macro \
-) \
-    (remove_keyword1_macro(remove_keyword2_macro(decl)), (1, 1))
-
-// Precondition: decl = `keyword1 keyword2 ...`.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_2_( \
-    decl,  \
-    is_keyword1_macro, remove_keyword1_macro, \
-    is_keyword2_macro, remove_keyword2_macro \
-) \
-    (remove_keyword2_macro(remove_keyword1_macro(decl)), (1, 1))
-
-// Precondition: decl = `keyword2 ...`.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_( \
-    decl,  \
-    is_keyword1_macro, remove_keyword1_macro, \
-    is_keyword2_macro, remove_keyword2_macro \
-) \
-    (remove_keyword2_macro(decl), (0, 1))
-
-// Precondition: decl = `keyword1 ...`.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_( \
-    decl,  \
-    is_keyword1_macro, remove_keyword1_macro, \
-    is_keyword2_macro, remove_keyword2_macro \
-) \
-    (remove_keyword1_macro(decl), (1, 0))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp
deleted file mode 100644
index 1d44bd4..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/paren/front.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand `[keyword(,,,)] ...` to decl `...` and append traits with
-// `[keyword] EMPTY` (but only if keyword macro param below != EMPTY()) always
-// followed by `list_parse_macro(,,,)`.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, decl_traits, \
-        keyword, is_keyword_macro, remove_keyword_macro, list_parse_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_ARGS_(d, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits), \
-        keyword, \
-        is_keyword_macro, \
-        remove_keyword_macro, \
-        list_parse_macro \
-    )
-
-// Precondition: decl = `(,,,) ...` from `[keyword](,,,) ...` originally in
-// decl (keyword can be EMPTY() to append only parsed list, see macro above).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PUSH_BACK_PARSE_D( \
-        d, decl, traits, keyword, list_parse_macro) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(keyword), \
-                traits BOOST_PP_TUPLE_EAT(2) \
-            , \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK \
-            )(traits, keyword BOOST_PP_EMPTY), \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_EXPAND_TRAITS_( \
-                list_parse_macro(d, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-            ) \
-        ) \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_ARGS_( \
-    d, decl, traits, \
-    keyword, is_keyword_macro, remove_keyword_macro, list_parse_macro \
-) \
-    BOOST_PP_IIF(is_keyword_macro(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_NO_ \
-    )(d, decl, traits, keyword, remove_keyword_macro, list_parse_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_NO_( \
-        d, decl, traits, keyword, remove_keyword_macro, list_parse_macro) \
-    ( \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(keyword), \
-                traits BOOST_PP_TUPLE_EAT(2) \
-            , \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK \
-            )(traits, BOOST_PP_EMPTY), \
-            BOOST_PP_EMPTY \
-        ) \
-    )
-
-// Precondition: decl = `keyword(,,,) ...`.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_YES_( \
-        d, decl, traits, keyword, remove_keyword_macro, list_parse_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PUSH_BACK_PARSE_D(d, \
-            remove_keyword_macro(decl), traits, keyword, list_parse_macro)
-
-// Extra level of indirection needed for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_EXPAND_TRAITS_( \
-        decl_traits) \
-    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp
deleted file mode 100644
index 0bc4043..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_HPP_
-
-#include <boost/contract/ext_/preprocessor/paren/front.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-
-/* PUBLIC */
-   
-// Expand decl = `[keyword[(,,,)]] ...`   to `(..., [(,,,)] EMPTY)`.
-// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid).
-// NOTE: Both keyword without (,,,) and no keyword at all expand to EMPTY trait.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_PARSE( \
-        decl, is_keyword_macro, remove_keyword_macro) \
-    BOOST_PP_IIF(is_keyword_macro(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_NO_ \
-    )(decl, remove_keyword_macro)
-
-/* PRIVATE */
-
-// Precondition: decl = `keyword ...`
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_( \
-        decl, remove_keyword_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_CHECK_( \
-            remove_keyword_macro(decl))
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_CHECK_(decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_NO_ \
-    )(decl, ~)
-
-// Precondition: decl = `(,,,) ...`.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_YES_(decl, unused) \
-    (BOOST_PP_TUPLE_EAT(0) decl, \
-            BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl) BOOST_PP_EMPTY)
-        
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_NO_(decl, unused) \
-    (decl, BOOST_PP_EMPTY)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/list-generate.py b/include/boost/contract/ext_/preprocessor/traits/aux_/list-generate.py
deleted file mode 100644
index 0ef7fbd..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/list-generate.py
+++ /dev/null
@@ -1,246 +0,0 @@
-
-import os
-import sys
-
-LIMIT = 64
-
-def code():
-    result = ''
-    for i in range(1, LIMIT + 1):
-        result = result + '''
-/* PUBLIC ({0}) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_{0}( \\
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_{0}_(d, \\
-        0, \\
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \\
-        parse_elem_macro, \\
-        is_replacement_macro, \\
-        replace_elem_macro \\
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_{0}( \\
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_{0}_(d, \\
-        1, \\
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \\
-        parse_elem_macro, \\
-        is_replacement_macro, \\
-        replace_elem_macro \\
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_{0}( \\
-        d, decl, parse_elem_macro) \\
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_{0}_(d, \\
-        0, \\
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \\
-        parse_elem_macro, \\
-        0 BOOST_PP_TUPLE_EAT(3), \\
-        BOOST_PP_NIL \\
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_{0}( \\
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_{0}_(d, \\
-        0, \\
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \\
-        parse_elem_macro, \\
-        is_replacement_macro, \\
-        replace_elem_macro \\
-    )
-
-/* PRIVATE ({0}) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_{0}_(d, allow_void, \\
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \\
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \\
-    , BOOST_PP_IIF(allow_void, \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_{0}_ \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_{0}_ \\
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_{0}_(d, decl_seq, \\
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \\
-            BOOST_PP_SEQ_HEAD(decl_seq)), \\
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_{0}_ \\
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_{0}_(d, decl_seq, \\
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \\
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_{0}_( \\
-        BOOST_PP_WHILE_ ## d( \\
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_{0}_, \\
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_{0}_, \\
-            ( \\
-                decl_seq (BOOST_PP_NIL), \\
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \\
-                parse_elem_macro, \\
-                is_replacement_macro, \\
-                replace_elem_macro \\
-            ) \\
-        ) \\
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_{0}_( \\
-        decl_traits_parse_is_replace) \\
-    ( \\
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \\
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \\
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_{0}_( \\
-        d, decl_traits_parse_is_replace) \\
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \\
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_{0}_( \\
-        d, decl_traits_parse_is_replace) \\
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_{0}_(d, \\
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \\
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \\
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \\
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \\
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \\
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_{0}_(d, decl_seq, \\
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\
-    BOOST_PP_IIF(is_replacement_macro(d, {1}, BOOST_PP_SEQ_HEAD(decl_seq)), \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_{0}_ \\
-    , \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_{0}_ \\
-    )(d, decl_seq, traits, \\
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_{0}_(d, decl_seq, \\
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_{0}_(d, \\
-        BOOST_PP_SEQ_TAIL(decl_seq), \\
-        traits, \\
-        parse_elem_macro(d, {1}, BOOST_PP_SEQ_HEAD(decl_seq)), \\
-        parse_elem_macro, \\
-        is_replacement_macro, \\
-        replace_elem_macro \\
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_{0}_(d, decl_seq, \\
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_{0}_(d, \\
-        BOOST_PP_SEQ_TAIL(decl_seq), \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \\
-        replace_elem_macro(d, {1}, (BOOST_PP_SEQ_HEAD(decl_seq), \\
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \\
-        parse_elem_macro, \\
-        is_replacement_macro, \\
-        replace_elem_macro \\
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_{0}_(d, \\
-    decl_seq, traits, elemdecl_elemtraits, \\
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \\
-) \\
-    ( \\
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \\
-                2, 0, elemdecl_elemtraits)), \\
-            decl_seq BOOST_PP_TUPLE_EAT(2) \\
-        , \\
-            BOOST_PP_SEQ_PUSH_FRONT \\
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \\
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \\
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \\
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \\
-        parse_elem_macro, \\
-        is_replacement_macro, \\
-        replace_elem_macro \\
-    )
-'''.format(i, i + 1)
-    return result
-
-script = os.path.basename(sys.argv[0])
-path = sys.argv[0].replace('-generate.py', '', 1) + ".hpp"
-file = open(path, 'w')
-file.write('''
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "{0}".
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/void.hpp>
-#include <boost/contract/ext_/preprocessor/utility/empty.hpp>
-#include <boost/contract/ext_/preprocessor/variadic/to_seq.hpp>
-#include <boost/contract/ext_/preprocessor/variadic/enum_to_seq.hpp>
-#include <boost/preprocessor/comparison/not_equal.hpp>
-#include <boost/preprocessor/seq/seq.hpp>
-#include <boost/preprocessor/seq/size.hpp>
-#include <boost/preprocessor/seq/push_front.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-
-/* PUBLIC */
-
-// Maximum number of nested lists that can be parsed (before pp errors).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_LIMIT {1}
-
-// Usage:
-//  ..._LIST_PARSE_D_ ## l(d, decl, parse_elem_macro, is_replacement_macro,
-//          replace_elem_macro)
-// Expand decl = `( ,,, ) | ( )` (pp-tuple or empty tuple) to `[pp-seq] EMPTY`
-// of element traits as parsed by `parse_elem_macro(d, l, decl)`, or replaced
-// by `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)`
-// expands to 1.
-// Expand to `EMPTY` if decl is empty tuple `( )`.
-// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated
-// to parse_elem_macro and replace_elem_macro.
-// Note: no-void, yes-replace, no-enum (e.g., for template params).
-
-// Usage:
-//  ..._VOID_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro,
-//          is_replacement_macro, replace_elem_macro)
-// Expand decl = `( ,,, ) | ( ) | ( void )` (pp-tuple, empty tuple, or void
-// tuple) to `[pp-seq] EMPTY` of element traits as parsed by
-// `parse_elem_macro(d, l, decl)`, or replaced by
-// `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)`
-// expand to 1.
-// Expand to `EMPTY` if decl is empty `( )` or void `( void )` tuple.
-// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated
-// to parse_elem_macro and replace_elem_macro.
-// Note: yes-void, yes-replace, no-enum (e.g., for function params).
-
-// Usage:
-//  ..._FIXED_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro)
-// Expand decl = `( ,,, ) | ( )` (pp-tuple or empty tuple) to `[pp-seq] EMPTY`
-// of element traits as parsed by `parse_elem_macro(d, l, decl)`.
-// Expand to `EMPTY` if decl is empty tuple `( )`.
-// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated
-// to parse_elem_macro.
-// Note: no-void, no-replace, no-enum (e.g., for captures).
-
-// Usage:
-//  ..._ENUM_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro,
-//          is_replacement_macro, replace_elem_macro)
-// Expand decl = `( ,,, [,] ) | ( )` (pp-tuple, or enumeration tuple with extra
-// trailing comma `,`, or empty tuple) to `[pp-seq] EMPTY` of element traits as
-// parsed by `parse_elem_macro(d, l, decl)`, or replaced by
-// `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)`
-// expands to 1.
-// Expand to `EMPTY` if decl is empty tuple `( )`.
-// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated
-// to parse_elem_macro and replace_elem_macro.
-// Note: no-void, yes-replace, yes-enum (e.g., for assertions).
-{2}
-#endif // #include guard
-
-'''.format(script, LIMIT, code()))
-file.close()
-print "Written:", path
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/list.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/list.hpp
deleted file mode 100644
index b78dc49..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/list.hpp
+++ /dev/null
@@ -1,9929 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HPP_
-
-// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT!
-// Instead, modify and run related generation script "list-generate.py".
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/void.hpp>
-#include <boost/contract/ext_/preprocessor/utility/empty.hpp>
-#include <boost/contract/ext_/preprocessor/variadic/to_seq.hpp>
-#include <boost/contract/ext_/preprocessor/variadic/enum_to_seq.hpp>
-#include <boost/preprocessor/comparison/not_equal.hpp>
-#include <boost/preprocessor/seq/seq.hpp>
-#include <boost/preprocessor/seq/size.hpp>
-#include <boost/preprocessor/seq/push_front.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-
-/* PUBLIC */
-
-// Maximum number of nested lists that can be parsed (before pp errors).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_LIMIT 64
-
-// Usage:
-//  ..._LIST_PARSE_D_ ## l(d, decl, parse_elem_macro, is_replacement_macro,
-//          replace_elem_macro)
-// Expand decl = `( ,,, ) | ( )` (pp-tuple or empty tuple) to `[pp-seq] EMPTY`
-// of element traits as parsed by `parse_elem_macro(d, l, decl)`, or replaced
-// by `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)`
-// expands to 1.
-// Expand to `EMPTY` if decl is empty tuple `( )`.
-// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated
-// to parse_elem_macro and replace_elem_macro.
-// Note: no-void, yes-replace, no-enum (e.g., for template params).
-
-// Usage:
-//  ..._VOID_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro,
-//          is_replacement_macro, replace_elem_macro)
-// Expand decl = `( ,,, ) | ( ) | ( void )` (pp-tuple, empty tuple, or void
-// tuple) to `[pp-seq] EMPTY` of element traits as parsed by
-// `parse_elem_macro(d, l, decl)`, or replaced by
-// `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)`
-// expand to 1.
-// Expand to `EMPTY` if decl is empty `( )` or void `( void )` tuple.
-// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated
-// to parse_elem_macro and replace_elem_macro.
-// Note: yes-void, yes-replace, no-enum (e.g., for function params).
-
-// Usage:
-//  ..._FIXED_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro)
-// Expand decl = `( ,,, ) | ( )` (pp-tuple or empty tuple) to `[pp-seq] EMPTY`
-// of element traits as parsed by `parse_elem_macro(d, l, decl)`.
-// Expand to `EMPTY` if decl is empty tuple `( )`.
-// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated
-// to parse_elem_macro.
-// Note: no-void, no-replace, no-enum (e.g., for captures).
-
-// Usage:
-//  ..._ENUM_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro,
-//          is_replacement_macro, replace_elem_macro)
-// Expand decl = `( ,,, [,] ) | ( )` (pp-tuple, or enumeration tuple with extra
-// trailing comma `,`, or empty tuple) to `[pp-seq] EMPTY` of element traits as
-// parsed by `parse_elem_macro(d, l, decl)`, or replaced by
-// `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)`
-// expands to 1.
-// Expand to `EMPTY` if decl is empty tuple `( )`.
-// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated
-// to parse_elem_macro and replace_elem_macro.
-// Note: no-void, yes-replace, yes-enum (e.g., for assertions).
-
-/* PUBLIC (1) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_1( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_1_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_1( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_1_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_1( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_1_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_1( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_1_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (1) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_1_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_1_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_1_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_1_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_1_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_1_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_1_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_1_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_1_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_1_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_1_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_1_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_1_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_1_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 2, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_1_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_1_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_1_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_1_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 2, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_1_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_1_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 2, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_1_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (2) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_2( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_2_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_2( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_2_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_2( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_2_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_2( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_2_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (2) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_2_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_2_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_2_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_2_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_2_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_2_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_2_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_2_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_2_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_2_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_2_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_2_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_2_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_2_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 3, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_2_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_2_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_2_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_2_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 3, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_2_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_2_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 3, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_2_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (3) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_3( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_3_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_3( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_3_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_3( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_3_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_3( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_3_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (3) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_3_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_3_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_3_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_3_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_3_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_3_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_3_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_3_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_3_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_3_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_3_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_3_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_3_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_3_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 4, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_3_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_3_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_3_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_3_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 4, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_3_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_3_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 4, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_3_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (4) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_4( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_4_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_4( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_4_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_4( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_4_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_4( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_4_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (4) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_4_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_4_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_4_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_4_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_4_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_4_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_4_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_4_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_4_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_4_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_4_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_4_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_4_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_4_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 5, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_4_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_4_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_4_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_4_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 5, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_4_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_4_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 5, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_4_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (5) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_5( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_5_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_5( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_5_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_5( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_5_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_5( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_5_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (5) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_5_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_5_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_5_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_5_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_5_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_5_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_5_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_5_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_5_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_5_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_5_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_5_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_5_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_5_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 6, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_5_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_5_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_5_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_5_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 6, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_5_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_5_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 6, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_5_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (6) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_6( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_6_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_6( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_6_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_6( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_6_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_6( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_6_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (6) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_6_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_6_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_6_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_6_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_6_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_6_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_6_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_6_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_6_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_6_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_6_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_6_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_6_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_6_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 7, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_6_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_6_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_6_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_6_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 7, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_6_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_6_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 7, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_6_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (7) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_7( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_7_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_7( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_7_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_7( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_7_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_7( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_7_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (7) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_7_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_7_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_7_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_7_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_7_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_7_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_7_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_7_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_7_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_7_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_7_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_7_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_7_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_7_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 8, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_7_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_7_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_7_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_7_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 8, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_7_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_7_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 8, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_7_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (8) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_8( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_8_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_8( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_8_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_8( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_8_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_8( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_8_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (8) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_8_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_8_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_8_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_8_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_8_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_8_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_8_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_8_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_8_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_8_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_8_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_8_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_8_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_8_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 9, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_8_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_8_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_8_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_8_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 9, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_8_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_8_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 9, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_8_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (9) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_9( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_9_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_9( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_9_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_9( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_9_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_9( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_9_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (9) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_9_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_9_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_9_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_9_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_9_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_9_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_9_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_9_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_9_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_9_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_9_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_9_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_9_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_9_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 10, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_9_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_9_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_9_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_9_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 10, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_9_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_9_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 10, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_9_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (10) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_10( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_10_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_10( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_10_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_10( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_10_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_10( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_10_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (10) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_10_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_10_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_10_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_10_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_10_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_10_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_10_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_10_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_10_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_10_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_10_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_10_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_10_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_10_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 11, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_10_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_10_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_10_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_10_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 11, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_10_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_10_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 11, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_10_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (11) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_11( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_11_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_11( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_11_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_11( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_11_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_11( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_11_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (11) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_11_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_11_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_11_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_11_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_11_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_11_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_11_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_11_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_11_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_11_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_11_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_11_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_11_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_11_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 12, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_11_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_11_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_11_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_11_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 12, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_11_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_11_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 12, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_11_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (12) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_12( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_12_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_12( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_12_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_12( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_12_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_12( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_12_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (12) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_12_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_12_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_12_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_12_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_12_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_12_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_12_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_12_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_12_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_12_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_12_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_12_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_12_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_12_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 13, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_12_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_12_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_12_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_12_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 13, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_12_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_12_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 13, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_12_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (13) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_13( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_13_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_13( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_13_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_13( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_13_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_13( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_13_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (13) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_13_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_13_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_13_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_13_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_13_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_13_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_13_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_13_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_13_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_13_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_13_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_13_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_13_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_13_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 14, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_13_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_13_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_13_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_13_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 14, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_13_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_13_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 14, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_13_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (14) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_14( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_14_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_14( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_14_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_14( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_14_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_14( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_14_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (14) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_14_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_14_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_14_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_14_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_14_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_14_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_14_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_14_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_14_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_14_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_14_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_14_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_14_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_14_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 15, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_14_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_14_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_14_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_14_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 15, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_14_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_14_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 15, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_14_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (15) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_15( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_15_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_15( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_15_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_15( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_15_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_15( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_15_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (15) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_15_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_15_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_15_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_15_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_15_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_15_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_15_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_15_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_15_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_15_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_15_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_15_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_15_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_15_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 16, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_15_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_15_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_15_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_15_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 16, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_15_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_15_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 16, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_15_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (16) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_16( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_16_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_16( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_16_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_16( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_16_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_16( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_16_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (16) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_16_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_16_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_16_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_16_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_16_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_16_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_16_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_16_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_16_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_16_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_16_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_16_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_16_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_16_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 17, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_16_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_16_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_16_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_16_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 17, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_16_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_16_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 17, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_16_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (17) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_17( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_17_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_17( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_17_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_17( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_17_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_17( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_17_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (17) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_17_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_17_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_17_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_17_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_17_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_17_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_17_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_17_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_17_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_17_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_17_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_17_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_17_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_17_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 18, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_17_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_17_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_17_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_17_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 18, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_17_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_17_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 18, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_17_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (18) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_18( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_18_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_18( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_18_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_18( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_18_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_18( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_18_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (18) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_18_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_18_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_18_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_18_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_18_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_18_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_18_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_18_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_18_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_18_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_18_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_18_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_18_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_18_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 19, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_18_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_18_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_18_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_18_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 19, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_18_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_18_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 19, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_18_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (19) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_19( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_19_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_19( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_19_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_19( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_19_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_19( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_19_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (19) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_19_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_19_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_19_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_19_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_19_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_19_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_19_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_19_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_19_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_19_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_19_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_19_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_19_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_19_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 20, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_19_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_19_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_19_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_19_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 20, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_19_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_19_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 20, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_19_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (20) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_20( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_20_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_20( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_20_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_20( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_20_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_20( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_20_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (20) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_20_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_20_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_20_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_20_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_20_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_20_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_20_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_20_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_20_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_20_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_20_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_20_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_20_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_20_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 21, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_20_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_20_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_20_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_20_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 21, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_20_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_20_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 21, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_20_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (21) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_21( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_21_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_21( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_21_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_21( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_21_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_21( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_21_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (21) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_21_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_21_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_21_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_21_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_21_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_21_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_21_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_21_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_21_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_21_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_21_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_21_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_21_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_21_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 22, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_21_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_21_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_21_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_21_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 22, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_21_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_21_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 22, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_21_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (22) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_22( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_22_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_22( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_22_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_22( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_22_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_22( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_22_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (22) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_22_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_22_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_22_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_22_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_22_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_22_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_22_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_22_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_22_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_22_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_22_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_22_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_22_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_22_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 23, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_22_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_22_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_22_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_22_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 23, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_22_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_22_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 23, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_22_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (23) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_23( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_23_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_23( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_23_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_23( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_23_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_23( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_23_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (23) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_23_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_23_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_23_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_23_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_23_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_23_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_23_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_23_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_23_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_23_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_23_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_23_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_23_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_23_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 24, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_23_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_23_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_23_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_23_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 24, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_23_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_23_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 24, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_23_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (24) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_24( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_24_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_24( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_24_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_24( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_24_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_24( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_24_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (24) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_24_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_24_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_24_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_24_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_24_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_24_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_24_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_24_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_24_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_24_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_24_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_24_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_24_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_24_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 25, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_24_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_24_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_24_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_24_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 25, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_24_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_24_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 25, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_24_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (25) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_25( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_25_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_25( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_25_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_25( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_25_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_25( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_25_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (25) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_25_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_25_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_25_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_25_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_25_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_25_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_25_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_25_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_25_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_25_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_25_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_25_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_25_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_25_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 26, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_25_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_25_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_25_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_25_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 26, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_25_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_25_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 26, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_25_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (26) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_26( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_26_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_26( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_26_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_26( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_26_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_26( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_26_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (26) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_26_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_26_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_26_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_26_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_26_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_26_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_26_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_26_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_26_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_26_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_26_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_26_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_26_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_26_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 27, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_26_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_26_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_26_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_26_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 27, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_26_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_26_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 27, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_26_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (27) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_27( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_27_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_27( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_27_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_27( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_27_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_27( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_27_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (27) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_27_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_27_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_27_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_27_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_27_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_27_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_27_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_27_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_27_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_27_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_27_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_27_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_27_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_27_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 28, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_27_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_27_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_27_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_27_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 28, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_27_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_27_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 28, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_27_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (28) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_28( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_28_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_28( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_28_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_28( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_28_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_28( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_28_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (28) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_28_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_28_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_28_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_28_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_28_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_28_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_28_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_28_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_28_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_28_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_28_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_28_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_28_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_28_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 29, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_28_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_28_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_28_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_28_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 29, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_28_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_28_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 29, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_28_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (29) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_29( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_29_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_29( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_29_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_29( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_29_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_29( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_29_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (29) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_29_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_29_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_29_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_29_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_29_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_29_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_29_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_29_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_29_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_29_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_29_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_29_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_29_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_29_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 30, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_29_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_29_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_29_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_29_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 30, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_29_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_29_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 30, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_29_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (30) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_30( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_30_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_30( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_30_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_30( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_30_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_30( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_30_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (30) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_30_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_30_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_30_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_30_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_30_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_30_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_30_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_30_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_30_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_30_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_30_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_30_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_30_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_30_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 31, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_30_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_30_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_30_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_30_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 31, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_30_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_30_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 31, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_30_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (31) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_31( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_31_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_31( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_31_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_31( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_31_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_31( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_31_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (31) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_31_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_31_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_31_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_31_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_31_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_31_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_31_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_31_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_31_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_31_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_31_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_31_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_31_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_31_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 32, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_31_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_31_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_31_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_31_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 32, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_31_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_31_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 32, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_31_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (32) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_32( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_32_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_32( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_32_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_32( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_32_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_32( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_32_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (32) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_32_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_32_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_32_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_32_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_32_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_32_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_32_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_32_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_32_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_32_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_32_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_32_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_32_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_32_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 33, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_32_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_32_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_32_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_32_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 33, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_32_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_32_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 33, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_32_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (33) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_33( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_33_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_33( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_33_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_33( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_33_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_33( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_33_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (33) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_33_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_33_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_33_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_33_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_33_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_33_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_33_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_33_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_33_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_33_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_33_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_33_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_33_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_33_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 34, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_33_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_33_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_33_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_33_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 34, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_33_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_33_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 34, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_33_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (34) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_34( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_34_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_34( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_34_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_34( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_34_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_34( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_34_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (34) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_34_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_34_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_34_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_34_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_34_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_34_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_34_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_34_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_34_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_34_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_34_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_34_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_34_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_34_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 35, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_34_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_34_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_34_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_34_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 35, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_34_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_34_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 35, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_34_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (35) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_35( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_35_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_35( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_35_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_35( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_35_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_35( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_35_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (35) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_35_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_35_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_35_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_35_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_35_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_35_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_35_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_35_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_35_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_35_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_35_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_35_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_35_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_35_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 36, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_35_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_35_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_35_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_35_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 36, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_35_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_35_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 36, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_35_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (36) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_36( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_36_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_36( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_36_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_36( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_36_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_36( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_36_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (36) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_36_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_36_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_36_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_36_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_36_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_36_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_36_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_36_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_36_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_36_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_36_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_36_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_36_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_36_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 37, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_36_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_36_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_36_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_36_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 37, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_36_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_36_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 37, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_36_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (37) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_37( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_37_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_37( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_37_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_37( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_37_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_37( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_37_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (37) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_37_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_37_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_37_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_37_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_37_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_37_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_37_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_37_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_37_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_37_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_37_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_37_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_37_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_37_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 38, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_37_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_37_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_37_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_37_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 38, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_37_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_37_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 38, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_37_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (38) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_38( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_38_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_38( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_38_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_38( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_38_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_38( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_38_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (38) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_38_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_38_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_38_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_38_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_38_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_38_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_38_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_38_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_38_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_38_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_38_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_38_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_38_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_38_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 39, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_38_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_38_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_38_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_38_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 39, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_38_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_38_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 39, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_38_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (39) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_39( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_39_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_39( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_39_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_39( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_39_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_39( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_39_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (39) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_39_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_39_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_39_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_39_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_39_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_39_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_39_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_39_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_39_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_39_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_39_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_39_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_39_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_39_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 40, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_39_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_39_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_39_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_39_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 40, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_39_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_39_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 40, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_39_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (40) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_40( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_40_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_40( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_40_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_40( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_40_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_40( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_40_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (40) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_40_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_40_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_40_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_40_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_40_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_40_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_40_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_40_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_40_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_40_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_40_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_40_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_40_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_40_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 41, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_40_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_40_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_40_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_40_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 41, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_40_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_40_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 41, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_40_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (41) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_41( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_41_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_41( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_41_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_41( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_41_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_41( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_41_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (41) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_41_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_41_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_41_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_41_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_41_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_41_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_41_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_41_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_41_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_41_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_41_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_41_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_41_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_41_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 42, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_41_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_41_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_41_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_41_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 42, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_41_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_41_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 42, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_41_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (42) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_42( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_42_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_42( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_42_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_42( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_42_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_42( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_42_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (42) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_42_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_42_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_42_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_42_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_42_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_42_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_42_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_42_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_42_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_42_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_42_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_42_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_42_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_42_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 43, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_42_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_42_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_42_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_42_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 43, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_42_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_42_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 43, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_42_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (43) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_43( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_43_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_43( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_43_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_43( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_43_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_43( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_43_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (43) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_43_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_43_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_43_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_43_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_43_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_43_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_43_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_43_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_43_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_43_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_43_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_43_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_43_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_43_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 44, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_43_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_43_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_43_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_43_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 44, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_43_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_43_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 44, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_43_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (44) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_44( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_44_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_44( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_44_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_44( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_44_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_44( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_44_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (44) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_44_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_44_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_44_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_44_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_44_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_44_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_44_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_44_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_44_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_44_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_44_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_44_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_44_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_44_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 45, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_44_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_44_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_44_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_44_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 45, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_44_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_44_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 45, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_44_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (45) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_45( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_45_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_45( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_45_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_45( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_45_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_45( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_45_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (45) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_45_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_45_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_45_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_45_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_45_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_45_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_45_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_45_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_45_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_45_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_45_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_45_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_45_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_45_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 46, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_45_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_45_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_45_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_45_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 46, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_45_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_45_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 46, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_45_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (46) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_46( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_46_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_46( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_46_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_46( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_46_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_46( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_46_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (46) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_46_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_46_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_46_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_46_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_46_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_46_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_46_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_46_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_46_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_46_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_46_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_46_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_46_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_46_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 47, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_46_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_46_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_46_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_46_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 47, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_46_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_46_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 47, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_46_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (47) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_47( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_47_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_47( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_47_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_47( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_47_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_47( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_47_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (47) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_47_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_47_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_47_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_47_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_47_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_47_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_47_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_47_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_47_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_47_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_47_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_47_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_47_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_47_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 48, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_47_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_47_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_47_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_47_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 48, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_47_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_47_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 48, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_47_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (48) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_48( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_48_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_48( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_48_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_48( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_48_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_48( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_48_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (48) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_48_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_48_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_48_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_48_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_48_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_48_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_48_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_48_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_48_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_48_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_48_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_48_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_48_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_48_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 49, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_48_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_48_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_48_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_48_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 49, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_48_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_48_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 49, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_48_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (49) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_49( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_49_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_49( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_49_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_49( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_49_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_49( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_49_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (49) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_49_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_49_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_49_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_49_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_49_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_49_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_49_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_49_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_49_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_49_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_49_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_49_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_49_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_49_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 50, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_49_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_49_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_49_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_49_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 50, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_49_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_49_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 50, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_49_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (50) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_50( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_50_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_50( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_50_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_50( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_50_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_50( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_50_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (50) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_50_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_50_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_50_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_50_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_50_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_50_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_50_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_50_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_50_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_50_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_50_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_50_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_50_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_50_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 51, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_50_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_50_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_50_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_50_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 51, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_50_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_50_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 51, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_50_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (51) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_51( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_51_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_51( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_51_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_51( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_51_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_51( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_51_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (51) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_51_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_51_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_51_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_51_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_51_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_51_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_51_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_51_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_51_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_51_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_51_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_51_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_51_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_51_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 52, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_51_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_51_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_51_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_51_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 52, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_51_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_51_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 52, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_51_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (52) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_52( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_52_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_52( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_52_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_52( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_52_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_52( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_52_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (52) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_52_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_52_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_52_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_52_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_52_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_52_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_52_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_52_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_52_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_52_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_52_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_52_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_52_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_52_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 53, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_52_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_52_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_52_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_52_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 53, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_52_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_52_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 53, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_52_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (53) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_53( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_53_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_53( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_53_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_53( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_53_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_53( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_53_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (53) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_53_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_53_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_53_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_53_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_53_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_53_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_53_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_53_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_53_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_53_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_53_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_53_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_53_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_53_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 54, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_53_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_53_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_53_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_53_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 54, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_53_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_53_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 54, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_53_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (54) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_54( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_54_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_54( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_54_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_54( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_54_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_54( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_54_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (54) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_54_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_54_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_54_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_54_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_54_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_54_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_54_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_54_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_54_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_54_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_54_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_54_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_54_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_54_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 55, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_54_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_54_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_54_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_54_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 55, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_54_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_54_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 55, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_54_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (55) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_55( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_55_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_55( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_55_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_55( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_55_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_55( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_55_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (55) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_55_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_55_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_55_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_55_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_55_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_55_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_55_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_55_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_55_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_55_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_55_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_55_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_55_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_55_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 56, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_55_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_55_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_55_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_55_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 56, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_55_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_55_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 56, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_55_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (56) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_56( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_56_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_56( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_56_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_56( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_56_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_56( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_56_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (56) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_56_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_56_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_56_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_56_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_56_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_56_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_56_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_56_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_56_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_56_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_56_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_56_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_56_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_56_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 57, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_56_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_56_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_56_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_56_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 57, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_56_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_56_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 57, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_56_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (57) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_57( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_57_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_57( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_57_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_57( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_57_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_57( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_57_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (57) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_57_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_57_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_57_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_57_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_57_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_57_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_57_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_57_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_57_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_57_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_57_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_57_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_57_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_57_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 58, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_57_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_57_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_57_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_57_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 58, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_57_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_57_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 58, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_57_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (58) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_58( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_58_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_58( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_58_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_58( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_58_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_58( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_58_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (58) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_58_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_58_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_58_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_58_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_58_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_58_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_58_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_58_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_58_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_58_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_58_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_58_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_58_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_58_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 59, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_58_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_58_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_58_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_58_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 59, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_58_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_58_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 59, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_58_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (59) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_59( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_59_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_59( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_59_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_59( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_59_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_59( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_59_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (59) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_59_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_59_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_59_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_59_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_59_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_59_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_59_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_59_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_59_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_59_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_59_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_59_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_59_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_59_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 60, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_59_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_59_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_59_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_59_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 60, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_59_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_59_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 60, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_59_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (60) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_60( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_60_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_60( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_60_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_60( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_60_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_60( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_60_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (60) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_60_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_60_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_60_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_60_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_60_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_60_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_60_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_60_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_60_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_60_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_60_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_60_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_60_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_60_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 61, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_60_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_60_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_60_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_60_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 61, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_60_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_60_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 61, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_60_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (61) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_61( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_61_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_61( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_61_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_61( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_61_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_61( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_61_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (61) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_61_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_61_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_61_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_61_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_61_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_61_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_61_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_61_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_61_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_61_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_61_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_61_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_61_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_61_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 62, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_61_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_61_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_61_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_61_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 62, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_61_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_61_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 62, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_61_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (62) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_62( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_62_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_62( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_62_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_62( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_62_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_62( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_62_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (62) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_62_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_62_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_62_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_62_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_62_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_62_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_62_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_62_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_62_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_62_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_62_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_62_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_62_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_62_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 63, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_62_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_62_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_62_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_62_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 63, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_62_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_62_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 63, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_62_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (63) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_63( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_63_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_63( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_63_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_63( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_63_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_63( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_63_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (63) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_63_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_63_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_63_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_63_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_63_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_63_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_63_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_63_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_63_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_63_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_63_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_63_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_63_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_63_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 64, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_63_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_63_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_63_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_63_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 64, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_63_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_63_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 64, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_63_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PUBLIC (64) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_64( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_64_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_64( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_64_(d, \
-        1, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_64( \
-        d, decl, parse_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_64_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \
-        parse_elem_macro, \
-        0 BOOST_PP_TUPLE_EAT(3), \
-        BOOST_PP_NIL \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_64( \
-        d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_64_(d, \
-        0, \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-/* PRIVATE (64) */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_64_(d, allow_void, \
-        decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-   BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , BOOST_PP_IIF(allow_void, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_64_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_64_ \
-    ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY().
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_64_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \
-            BOOST_PP_SEQ_HEAD(decl_seq)), \
-        ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_64_ \
-    )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_64_(d, decl_seq, \
-        parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_64_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_64_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_64_, \
-            ( \
-                decl_seq (BOOST_PP_NIL), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \
-                parse_elem_macro, \
-                is_replacement_macro, \
-                replace_elem_macro \
-            ) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_64_( \
-        decl_traits_parse_is_replace) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \
-                decl_traits_parse_is_replace)) BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_64_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \
-            5, 0, decl_traits_parse_is_replace)), 1)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_64_( \
-        d, decl_traits_parse_is_replace) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_64_(d, \
-        BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \
-        BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_64_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_PP_IIF(is_replacement_macro(d, 65, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_64_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_64_ \
-    )(d, decl_seq, traits, \
-            parse_elem_macro, is_replacement_macro, replace_elem_macro)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_64_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_64_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        traits, \
-        parse_elem_macro(d, 65, BOOST_PP_SEQ_HEAD(decl_seq)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_64_(d, decl_seq, \
-        traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_64_(d, \
-        BOOST_PP_SEQ_TAIL(decl_seq), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \
-        replace_elem_macro(d, 65, (BOOST_PP_SEQ_HEAD(decl_seq), \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_64_(d, \
-    decl_seq, traits, elemdecl_elemtraits, \
-    parse_elem_macro, is_replacement_macro, replace_elem_macro \
-) \
-    ( \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \
-                2, 0, elemdecl_elemtraits)), \
-            decl_seq BOOST_PP_TUPLE_EAT(2) \
-        , \
-            BOOST_PP_SEQ_PUSH_FRONT \
-        )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \
-        parse_elem_macro, \
-        is_replacement_macro, \
-        replace_elem_macro \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/type.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/type.hpp
deleted file mode 100644
index 0457b55..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/aux_/type.hpp
+++ /dev/null
@@ -1,262 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_HPP_
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_HPP_
-
-#include <boost/contract/ext_/preprocessor/keyword/auto.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/register.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/const.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/volatile.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/long.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/short.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/signed.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/unsigned.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/void.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/bool.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/char.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/char16_t.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/char32_t.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/int.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/wchar_t.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/float.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/double.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/decltype.hpp>
-#include <boost/contract/ext_/preprocessor/paren/has.hpp>
-#include <boost/contract/ext_/preprocessor/paren/front.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/control/while.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand decl = `[type | (type)] ...` (type can also be `void`) to
-// `(..., [(type)] EMPTY)`.
-// For example, expand:
-//  decl = `int const ...` to `(..., (int const) EMPTY)`.
-//  decl = `(map<T, U>) ...` to `(..., (map<T, U>) EMPTY)`.
-//  decl = `auto ...` to `(..., (auto) EMPTY)`.
-//  decl = `f ...` to `(f ..., EMPTY)`.
-// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D(d, decl) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_D_(d, decl, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SPACED_PUSH_BACK_)
-
-// Expand decl = `[auto | type | (type)] ...` (type can also be `void`) to
-// `(..., [auto | (type)] EMPTY)` (note that auto not wrapped in parenthesis).
-// For example, expand:
-//  decl = `int const ...` to `(..., (int const) EMPTY)`.
-//  decl = `(map<T, U>) ...` to `(..., (map<T, U>) EMPTY)`.
-//  decl = `auto ...` to `(..., auto EMPTY)`.
-//  decl = `f ...` to `(f ..., EMPTY)`.
-// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid).
-// NOTE: So far, there is no need of a SEQ version of this macro.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D(d, decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \
-            decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D \
-    )(d, decl)
-
-// Expand decl = `[type | (type)] ...` (type can also be `void`) to
-// `(..., [((keyword1))...((keyword-n))] EMTPY)` (this is useful to access
-// single type keywords `int`, `const`, etc.).
-// For example, expand:
-//  decl = `int const ...` to `(..., ((int)) ((const)) EMPTY)`.
-//  decl = `(map<T, U>) ...` to `(..., ((map<T, U>)) EMPTY)`.
-//  decl = `auto ...` to `(..., ((auto)) EMPTY)`.
-//  decl = `f ...` to `(f ..., EMPTY)`.
-// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_PARSE_D(d, decl) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_RETURN_( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_D_(d, decl, \
-                BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_PUSH_BACK_) \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SPACED_PUSH_BACK_( \
-        spaced_type, trait) \
-    spaced_type trait
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_PUSH_BACK_(type_seq, trait) \
-    type_seq ((trait))
-
-// Precondition: decl = `auto ...`.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_(unused, decl) \
-    (BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE_FRONT(decl), auto BOOST_PP_EMPTY)
-
-// Extra level of indirection needed for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_RETURN_(decl_type) \
-    BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_RETURN_ARGS_ \
-            decl_type)
-
-// Remove an extra set of parenthesis around sequence (originally added to
-// handle commas by algorithms in common with spaced type traits).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_RETURN_ARGS_(decl, type) \
-    ( \
-        decl, \
-        BOOST_PP_EXPR_IIF(BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-                type())), \
-            BOOST_PP_TUPLE_REM(1) \
-        ) \
-        type \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_D_(d, decl, push_back_macro) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PAREN_D_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_D_ \
-    )(d, decl, push_back_macro)
-
-// Precondition: decl = `(...) ...`.
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PAREN_D_( \
-        d, decl, push_back_macro) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        push_back_macro(BOOST_PP_EMPTY(), \
-                BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-        BOOST_PP_EMPTY \
-    )
-
-// Precondition: decl does not start with paren (it's formed by keywords).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_D_( \
-        d, decl, push_back_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_RETURN_( \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PRED_, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_OP_, \
-            (1, decl, BOOST_PP_NIL, push_back_macro) \
-        ) \
-    )
-
-// Do not return continue_ and wrap type in paren (so same as paren type).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_RETURN_( \
-        continue_decl_type_push) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(4, 1, continue_decl_type_push), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PARENTHESIZE_( \
-            BOOST_CONTRACT_EXT_PP_NIL_REMOVE_FRONT( \
-                    BOOST_PP_TUPLE_ELEM(4, 2, continue_decl_type_push)) \
-        ) \
-        BOOST_PP_EMPTY \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PARENTHESIZE_(tokens) \
-    BOOST_PP_EXPR_IIF(BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY(tokens)), \
-        (tokens) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PRED_( \
-        d, continue_decl_type_push) \
-    BOOST_PP_TUPLE_ELEM(4, 0, continue_decl_type_push)
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_OP_( \
-        d, continue_decl_type_push) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_OP_ARGS_(d, \
-        BOOST_PP_TUPLE_ELEM(4, 1, continue_decl_type_push), \
-        BOOST_PP_TUPLE_ELEM(4, 2, continue_decl_type_push), \
-        BOOST_PP_TUPLE_ELEM(4, 3, continue_decl_type_push) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_OP_ARGS_( \
-        d, decl, type, push_back_macro) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_( \
-        d, \
-        decl, \
-        type, \
-        push_back_macro, \
-        BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            auto, BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REGISTER_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            register, BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            const, BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOLATILE_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            volatile, BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_LONG_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            long, BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SHORT_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            short, BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIGNED_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            signed, BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNSIGNED_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            unsigned, BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            void, BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BOOL_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            bool, BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            char, BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR16_T_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            char16_t, BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR32_T_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            char32_t, BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WCHAR_T_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            wchar_t, BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INT_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            int, BOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FLOAT_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            float, BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DOUBLE_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \
-            double, BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVE_FRONT) \
-        , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DECLTYPE_FRONT(decl), \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PAREN_, \
-            decltype, BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVE_FRONT) \
-        , \
-            (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_DONE_, ~, ~) \
-        )))))))))))))))))) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_( \
-        d, decl, type, push_back_macro, invoke_trait_remove) \
-    BOOST_PP_TUPLE_ELEM(3, 0, invoke_trait_remove)(d, \
-        decl, \
-        type, \
-        push_back_macro, \
-        BOOST_PP_TUPLE_ELEM(3, 1, invoke_trait_remove), \
-        BOOST_PP_TUPLE_ELEM(3, 2, invoke_trait_remove) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_DONE_( \
-        d, decl, type, push_back_macro, unused1, unused2) \
-    (0, decl, type, push_back_macro)
-    
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_( \
-        d, decl, type, push_back_macro, trait, remove_macro) \
-    (1, remove_macro(decl), push_back_macro(type, trait), push_back_macro)
-
-// Precondition: decl = `trait(...) ...` (e.g., for `decltype(...) ...`).
-#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PAREN_( \
-        d, decl, type, push_back_macro, trait, remove_macro) \
-    ( \
-        1, \
-        BOOST_PP_TUPLE_EAT(0) remove_macro(decl), \
-        push_back_macro(type, trait \
-                BOOST_CONTRACT_EXT_PP_PAREN_FRONT(remove_macro(decl))), \
-        push_back_macro \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/base.hpp b/include/boost/contract/ext_/preprocessor/traits/base.hpp
deleted file mode 100644
index c2b7346..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/base.hpp
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_BASE_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/base/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/base/classifiers.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-    
-/* PUBLIC */
-
-// Precondition: decl = `{[public | protected | private] [virtual] | [virtual]
-// [public | protected | private]} wrapped-type`.
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_PARSE(decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE( \
-    BOOST_CONTRACT_EXT_PP_BASE_TRAITS_CLASSIFIERS_PARSE( \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/base/classifiers.hpp b/include/boost/contract/ext_/preprocessor/traits/base/classifiers.hpp
deleted file mode 100644
index 7a08cbe..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/base/classifiers.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_BASE_TRAITS_CLASSIFIERS_HPP_
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_CLASSIFIERS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/base.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/virtual.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/private.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/protected.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/public.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `public | protected | private | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_ACCESS(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_ACCESS, traits)()
-
-// Expand to `virtual | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_VIRTUAL, traits)()
-
-// Implementation: Do NOT use EXPAND for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_CLASSIFIERS_PARSE(decl_traits) \
-    BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_CHECK_ decl_traits
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_CHECK_(decl, traits)\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VIRTUAL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_NO_ \
-    )(decl, traits)
-
-// Precondition: decl = `virtual ...`.
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_YES_(decl, traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_PUSH_BACK_ \
-        BOOST_CONTRACT_EXT_PP_BASE_TRAITS_ACCESS_( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVE_FRONT(decl), \
-            traits \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_PUSH_BACK_(decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-            virtual BOOST_PP_EMPTY))
-
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_NO_(decl, traits) \
-    BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_CHECK_ \
-            BOOST_CONTRACT_EXT_PP_BASE_TRAITS_ACCESS_(decl, traits))
-    
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_CHECK_(decl, traits)\
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VIRTUAL_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_NO_ \
-    )(decl, traits)
-
-// Precondition: decl = `virtual ...`.
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_YES_(decl, traits) \
-    ( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                virtual BOOST_PP_EMPTY) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_NO_(decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_ACCESS_(decl, traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD3_PARSE( \
-            decl, \
-            public, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PUBLIC_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_REMOVE_FRONT, \
-            protected, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PROTECTED_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_REMOVE_FRONT, \
-            private, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRIVATE_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_REMOVE_FRONT \
-        ), \
-        traits \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/base/type.hpp b/include/boost/contract/ext_/preprocessor/traits/base/type.hpp
deleted file mode 100644
index b14464b..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/base/type.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_HPP_
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/base.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/contract/ext_/preprocessor/parenthesize.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `(,,,)`, for example: `(vector<T>)` or `(map<U, V>)`.
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_TYPE, traits)
-
-// Implementation: EXPAND and REM to force proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE(decl_traits) \
-    BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE_EXPAND_( \
-            (BOOST_PP_TUPLE_REM_CTOR(2, decl_traits)))
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE_EXPAND_(decl_traits) \
-    BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE_ARGS_ \
-            decl_traits)
-
-#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE_ARGS_(decl, traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_PARENTHESIZE( \
-                    BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \
-        ) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/capture.hpp b/include/boost/contract/ext_/preprocessor/traits/capture.hpp
deleted file mode 100644
index 11fc953..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/capture.hpp
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/capture/name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/capture/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// Precondition: decl = `[wrapped-type] name`.
-#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_PARSE_D_L(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_NAME_PARSE( \
-    BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_TYPE_PARSE_D(d, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    ))))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/capture/name.hpp b/include/boost/contract/ext_/preprocessor/traits/capture/name.hpp
deleted file mode 100644
index 8e48cdc..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/capture/name.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_NAME_HPP_
-#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_NAME_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/capture.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-
-/* PUBLIC */
-
-// Expand to `name | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_NAME(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_NAME, traits)
-
-// Precondition: name must always be the last remaining token in decl.
-#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_NAME_PARSE(decl_traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits), \
-            BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                    BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-        ) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/capture/type.hpp b/include/boost/contract/ext_/preprocessor/traits/capture/type.hpp
deleted file mode 100644
index 0d86015..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/capture/type.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_TYPE_HPP_
-#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_TYPE_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/capture.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `(,,,) | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_TYPE(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_TYPE, traits)()
-
-
-// Precondition: decl = `[wrapped-type] ...`.
-// Implementation: Trailing EMPTY already added by AUX_TYPE_PARSE.
-#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_TYPE_PARSE_D(d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D(d, \
-                BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/class.hpp b/include/boost/contract/ext_/preprocessor/traits/class.hpp
deleted file mode 100644
index 8415f35..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/class.hpp
+++ /dev/null
@@ -1,145 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/class/bases.hpp>
-#include <boost/contract/ext_/preprocessor/traits/class/virt.hpp>
-#include <boost/contract/ext_/preprocessor/traits/class/specialization.hpp>
-#include <boost/contract/ext_/preprocessor/traits/class/name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/class/verbatim.hpp>
-#include <boost/contract/ext_/preprocessor/traits/class/key.hpp>
-#include <boost/contract/ext_/preprocessor/traits/class/friend.hpp>
-#include <boost/contract/ext_/preprocessor/traits/class/template.hpp>
-#include <boost/contract/ext_/preprocessor/traits/class/export.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// Expand class declaration to `(remaining-declaration, parsed-traits)`. If
-// there was no error, remaining declaration is `BOOST_PP_NIL`. Parsed traits
-// can be inspected via the CLASS_TRAITS_... macros.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_PARSE_D(d, decl) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_DONE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_BASES_PARSE_(d, \
-    BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VIRT_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_SPECIALIZATION_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_NAME_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VERBATIM_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_KEY_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_FRIEND_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_TEMPLATE_PARSE_(d, \
-    BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_EXPORT_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    )))))))))))
-
-/* PRIVATE */
-
-// To debug or test the pp parsing code, #define this internal macro to stop
-// parsing at a given trait index as #defined in aux_/index/class.hpp:
-// #define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST ...
-
-#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_MAX
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_DONE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_DONE_ \
-        BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_EXPORT
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_EXPORT_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_EXPORT_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_TEMPLATE
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_TEMPLATE_PARSE_(d, decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_TEMPLATE_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARSE_D
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FRIEND
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_FRIEND_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_FRIEND_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_KEY
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_KEY_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_KEY_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_VERBATIM
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VERBATIM_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VERBATIM_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_NAME
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_NAME_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_NAME_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_SPECIALIZATION
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_SPECIALIZATION_PARSE_( \
-            decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_SPECIALIZATION_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_VIRT
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VIRT_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VIRT_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VIRT_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_BASES
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_BASES_PARSE_(d, decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_BASES_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_PARSE_D
-#endif
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/class/bases.hpp b/include/boost/contract/ext_/preprocessor/traits/class/bases.hpp
deleted file mode 100644
index b90b89f..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/class/bases.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_HPP_
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/base.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/contract/extends.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to EMPTY() if no base class, otherwise expand to pp-seq of base class
-// traits (each pp-seq elem. to be inspected via BASE_TRAITS).
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_BASES, traits)()
-
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_PARSE_D(d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, \
-        decl_traits, \
-        BOOST_PP_EMPTY(), \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTENDS_FRONT, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVE_FRONT, \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_ \
-    )
-
-/* PRIVATE */
-
-// Precondition: decl = `(,,,) ...` from `extends(,,,) ...` originally in decl.
-// This macro will also parse `(,,,)` into a pp-seq of base traits.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_(d, decl) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_1(d, decl, \
-            BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASE_PARSE_)
-    
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASE_PARSE_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_BASE_TRAITS_PARSE(decl)
-                    
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/class/export.hpp b/include/boost/contract/ext_/preprocessor/traits/class/export.hpp
deleted file mode 100644
index 0ded356..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/class/export.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT_HPP_
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/export.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-
-// NOTE: The `export` keyword for templates was deprecated in C++11 but it is
-// still supported here for compliance and compatibility with C++03.
-
-/* PUBLIC */
-
-// Expand to `export | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_EXPORT, traits)()
-
-// Implementation: Trailing EMPTY already put by KEYWORD1.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT_PARSE(decl_traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD1_PARSE( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-            export, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPORT_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE_FRONT \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/class/friend.hpp b/include/boost/contract/ext_/preprocessor/traits/class/friend.hpp
deleted file mode 100644
index adbfb8c..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/class/friend.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND_HPP_
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/friend.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-
-/* PUBLIC */
-
-// Expand to `friend | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FRIEND, traits)()
-
-// Implementation: Trailing EMPTY already put by KEYWORD1.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND_PARSE(decl_traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD1_PARSE( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-            friend, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FRIEND_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE_FRONT \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/class/key.hpp b/include/boost/contract/ext_/preprocessor/traits/class/key.hpp
deleted file mode 100644
index 2b337e1..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/class/key.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_HPP_
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/class.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/struct.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `class | struct` (cannot be empty).
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_KEY, traits)
-
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_PARSE(decl_traits) \
-    BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_PARSE_ARGS_ \
-            decl_traits)
-
-/* PRIVATE */
-
-// Implementation: If decl does not start with `class`, it must (and therefore
-// it is here assumed to) start with `struct` (otherwise pp errors).
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_PARSE_ARGS_(decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_CLASS_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_STRUCT_ \
-    )(decl, traits)
-
-// Precondition: decl = `class ...`.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_CLASS_(decl, traits) \
-    ( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, class) \
-    )
-
-// Precondition: decl = `struct ...`.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_STRUCT_(decl, traits) \
-    ( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, struct) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/class/name.hpp b/include/boost/contract/ext_/preprocessor/traits/class/name.hpp
deleted file mode 100644
index c9dc519..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/class/name.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_HPP_
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/paren/front.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `name`.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_NAME, traits)
-
-// Precondition: decl = `(name) ...`.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_PARSE(decl_traits) \
-    BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_PARSE_ARGS_ \
-            decl_traits)
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_PARSE_ARGS_(decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(1) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_REM_CTOR(1, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-        ) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/class/specialization.hpp b/include/boost/contract/ext_/preprocessor/traits/class/specialization.hpp
deleted file mode 100644
index 591c98f..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/class/specialization.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_HPP_
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/paren/front.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `(,,,) | EMPTY()`, for example `(int, std::map<int, char>)`.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_SPECIALIZATION, \
-        traits \
-    )()
-
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_PARSE(decl_traits) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_PARSE_ARGS_ \
-        decl_traits \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_PARSE_ARGS_( \
-        decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_NO_ \
-    )(decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_NO_(decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_YES_(decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl) BOOST_PP_EMPTY) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/class/template.hpp b/include/boost/contract/ext_/preprocessor/traits/class/template.hpp
deleted file mode 100644
index dd5d212..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/class/template.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_HPP_
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/param.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/template.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/default.hpp>
-
-/* PUBLIC */
-
-// Expand to `template | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_TEMPLATE, traits)()
-
-// Expand to EMPTY() if no class template parameters, otherwise expand to
-// pp-seq of param. traits (each pp-seq elem. to be inspected via PARAM_TRAITS).
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARAMS(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_TEMPLATE_PARAMS, \
-        traits \
-    )()
-
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARSE_D(d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, \
-        decl_traits, \
-        template, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT, \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_ \
-    )
-
-/* PRIVATE */
-
-// Precondition: decl = `(,,,) ...` from `template(,,,) ...` originally in decl.
-// This macro will also parse `(,,,)` into a pp-seq of template param traits.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_(d, decl) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_1(d, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARAM_PARSE_, \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_IS_DEFAULT_, \
-        BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_REPLACE_DEFAULT_PARSE_ \
-    )
-    
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARAM_PARSE_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_PARSE_D(d, decl)
-                    
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_IS_DEFAULT_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_FRONT(decl)
-                    
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_REPLACE_DEFAULT_PARSE_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_REPLACE_DEFAULT_PARSE_D(d, decl)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/class/verbatim.hpp b/include/boost/contract/ext_/preprocessor/traits/class/verbatim.hpp
deleted file mode 100644
index c42f9c0..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/class/verbatim.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM_HPP_
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/contract/verbatim.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to `(,,,) | EMPTY()`, for example: `(__declspec(dllexport))`.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_VERBATIM, traits)()
-
-// Implementation: Trailing EMPTY already put by KEYWORD_PAREN.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM_PARSE(decl_traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_PARSE( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VERBATIM_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE_FRONT \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/class/virt.hpp b/include/boost/contract/ext_/preprocessor/traits/class/virt.hpp
deleted file mode 100644
index 05daa78..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/class/virt.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VIRT_HPP_
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VIRT_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/final.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-
-/* PUBLIC */
-
-// Expand to `final | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FINAL(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FINAL, traits)()
-
-// Implementation: Trailing EMPTY already put by KEYWORD1.
-#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VIRT_PARSE(decl_traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD1_PARSE( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-            final, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FINAL_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE_FRONT \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func.hpp b/include/boost/contract/ext_/preprocessor/traits/func.hpp
deleted file mode 100644
index 507280e..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func.hpp
+++ /dev/null
@@ -1,222 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/func/postconditions.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/preconditions.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/virt.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/except.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/ref.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/cv.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/params.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/return.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/classifiers.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/template.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/export.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/verbatim.hpp>
-#include <boost/contract/ext_/preprocessor/traits/func/access.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-// Expand class declaration to `(remaining-declaration, parsed-traits)`. If
-// there was no error, remaining declaration is `BOOST_PP_NIL`. Parsed traits
-// can be inspected via the FUNC_TRAITS_... macros.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARSE_D(d, decl) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_DONE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITIONS_PARSE_(d, \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PRECONDITIONS_PARSE_(d, \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VIRT_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TRAILING_RETURN_PARSE_(d, \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXCEPT_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_REF_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CV_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PARAMS_PARSE_(d, \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_NAME_PARSE_(d, \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_RETURN_PARSE_(d, \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CLASSIFIERS_PARSE_(d, \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TEMPLATE_PARSE_(d, \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXPORT_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VERBATIM_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_ACCESS_PARSE_( \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    )))))))))))))))))
-
-/* PRIVATE */
-
-// To debug or test the pp parsing code, #define this internal macro to stop
-// parsing at a given trait index as #defined in aux_/index/func.hpp:
-// #define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST ...
-
-// NOTE: These macros #definitions read TRAITS_FUNC instead of FUNC_TRAITS to
-// avoid name clashes with macro #define in func/*.
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_MAX
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_DONE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_DONE_ \
-        BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_ACCESS
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_ACCESS_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_ACCESS_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_ACCESS_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VERBATIM
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VERBATIM_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VERBATIM_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXPORT
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXPORT_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXPORT_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TEMPLATE
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TEMPLATE_PARSE_(d, decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TEMPLATE_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARSE_D
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CLASSIFIERS
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CLASSIFIERS_PARSE_( \
-            d, decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CLASSIFIERS_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PARSE_D
-#endif
-        
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_RETURN
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_RETURN_PARSE_(d, decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_RETURN_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PARSE_D
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_NAME
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_NAME_PARSE_(d, decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_NAME_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_PARSE_D
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PARAMS
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PARAMS_PARSE_(d, decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PARAMS_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_PARSE_D
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CV
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CV_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CV_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_REF
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_REF_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_REF_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXCEPT
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXCEPT_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXCEPT_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TRAILING_RETURN
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TRAILING_RETURN_PARSE_( \
-            d, decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TRAILING_RETURN_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_PARSE_D
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VIRT
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VIRT_PARSE_(decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VIRT_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_PARSE
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PRECONDITIONS
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PRECONDITIONS_PARSE_( \
-            d, decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PRECONDITIONS_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_PARSE_D
-#endif
-
-#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_POSTCONDITIONS
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITIONS_PARSE_( \
-            d, decl_traits) \
-        decl_traits
-#else
-#   define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITIONS_PARSE_ \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_PARSE_D
-#endif
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/access.hpp b/include/boost/contract/ext_/preprocessor/traits/func/access.hpp
deleted file mode 100644
index 0627d4a..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/access.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_ACCESS_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_ACCESS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/public.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/protected.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/private.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to `public | protected | private | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_ACCESS(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_ACCESS, traits)()
-
-// Implementation: Trailing EMPTY already put by KEYWORD3.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_ACCESS_PARSE(decl_traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD3_PARSE( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-            public, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PUBLIC_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_REMOVE_FRONT, \
-            protected, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PROTECTED_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_REMOVE_FRONT, \
-            private, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRIVATE_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_REMOVE_FRONT \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/classifiers.hpp b/include/boost/contract/ext_/preprocessor/traits/func/classifiers.hpp
deleted file mode 100644
index cd26e3f..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/classifiers.hpp
+++ /dev/null
@@ -1,173 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/inline.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/static.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/extern.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/explicit.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/virtual.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/friend.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/inline.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/control/while.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/control/expr_iif.hpp>
-#include <boost/preprocessor/logical/bitand.hpp>
-#include <boost/preprocessor/logical/compl.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `inline | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_INLINE(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_INLINE, traits)()
-
-// Expand to `static | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_STATIC(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_STATIC, traits)()
-
-// Expand to `extern | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXTERN(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXTERN, traits)()
-
-// Expand to `explicit | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPLICIT(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXPLICIT, traits)()
-
-// Expand to `virtual | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRTUAL(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VIRTUAL, traits)()
-
-// Expand to `friend | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_FRIEND(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_FRIEND, traits)()
-
-// NOTE: In general, function classifiers `inline static extern explicit virtual
-// friend` can appear in most any order (so they are parsed all together here).
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PARSE_D(d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PRASE_ARGS_(d, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PRASE_ARGS_( \
-        d, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_RETURN_( \
-        traits, \
-        BOOST_PP_WHILE_ ## d( \
-            BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PRED_, \
-            BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_OP_, \
-            (1, decl, 0, 0, 0, 0, 0, 0) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_RETURN_( \
-        traits, continue_decl_inline_static_extern_explicit_virtual_friend) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_RETURN_ARGS_( \
-        BOOST_PP_TUPLE_ELEM(8, 1, \
-                continue_decl_inline_static_extern_explicit_virtual_friend), \
-        traits, \
-        BOOST_PP_TUPLE_ELEM(8, 2, \
-                continue_decl_inline_static_extern_explicit_virtual_friend), \
-        BOOST_PP_TUPLE_ELEM(8, 3, \
-                continue_decl_inline_static_extern_explicit_virtual_friend), \
-        BOOST_PP_TUPLE_ELEM(8, 4, \
-                continue_decl_inline_static_extern_explicit_virtual_friend), \
-        BOOST_PP_TUPLE_ELEM(8, 5, \
-                continue_decl_inline_static_extern_explicit_virtual_friend), \
-        BOOST_PP_TUPLE_ELEM(8, 6, \
-                continue_decl_inline_static_extern_explicit_virtual_friend), \
-        BOOST_PP_TUPLE_ELEM(8, 7, \
-                continue_decl_inline_static_extern_explicit_virtual_friend) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_RETURN_ARGS_( \
-        decl, traits, inline_, static_, extern_, explicit_, virtual_, friend_) \
-    ( \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_EXPR_IIF(inline_, inline) BOOST_PP_EMPTY), \
-            BOOST_PP_EXPR_IIF(static_, static) BOOST_PP_EMPTY), \
-            BOOST_PP_EXPR_IIF(extern_, extern) BOOST_PP_EMPTY), \
-            BOOST_PP_EXPR_IIF(explicit_, explicit) BOOST_PP_EMPTY), \
-            BOOST_PP_EXPR_IIF(virtual_, virtual) BOOST_PP_EMPTY), \
-            BOOST_PP_EXPR_IIF(friend_, friend) BOOST_PP_EMPTY \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PRED_( \
-        d, continue_decl_inline_static_extern_explicit_virtual_friend) \
-    BOOST_PP_TUPLE_ELEM(8, 0, \
-            continue_decl_inline_static_extern_explicit_virtual_friend)
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_OP_( \
-        d, continue_decl_inline_static_extern_explicit_virtual_friend) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_OP_ARGS_ \
-            continue_decl_inline_static_extern_explicit_virtual_friend
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_OP_ARGS_(continue_, \
-        decl, inline_, static_, extern_, explicit_, virtual_, friend_) \
-    BOOST_PP_EXPAND( \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_ \
-        BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(inline_), \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INLINE_FRONT(decl)), \
-            (1, BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVE_FRONT, \
-            decl, 1, static_, extern_, explicit_, virtual_, friend_) \
-        , BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(static_), \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_FRONT(decl)), \
-            (1, BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT, \
-            decl, inline_, 1, extern_, explicit_, virtual_, friend_) \
-        , BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(extern_), \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTERN_FRONT(decl)), \
-            (1, BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVE_FRONT, \
-            decl, inline_, static_, 1, explicit_, virtual_, friend_) \
-        , BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(explicit_), \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPLICIT_FRONT(decl)), \
-            (1, BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVE_FRONT, \
-            decl, inline_, static_, extern_, 1, virtual_, friend_) \
-        , BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(virtual_), \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VIRTUAL_FRONT(decl)), \
-            (1, BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVE_FRONT, \
-            decl, inline_, static_, extern_, explicit_, 1, friend_) \
-        , BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(friend_), \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FRIEND_FRONT(decl)), \
-            (1, BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE_FRONT, decl, \
-            inline_, static_, extern_, explicit_, virtual_, 1) \
-        , \
-            (0, BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_EXPAND_IDEM_, \
-            decl, inline_, static_, extern_, explicit_, virtual_, friend_) \
-        )))))) \
-    )
-        
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_( \
-    continue_, \
-    decl_macro, decl, \
-    inline_, static_, extern_, explicit_, virtual_, friend_ \
-) \
-    (continue_, decl_macro(decl), inline_, static_, extern_, explicit_, \
-            virtual_, friend_)
-
-// Use this macro (instead of REM(1)) for proper macro expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_EXPAND_IDEM_(decl) decl
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/cv.hpp b/include/boost/contract/ext_/preprocessor/traits/func/cv.hpp
deleted file mode 100644
index a38d1c2..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/cv.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_comb.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/const.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/volatile.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/control/expr_iif.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to `const | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CONST(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CONST, traits)()
-
-// Expand to `volatile | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VOLATILE(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VOLATILE, traits)()
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_PARSE(decl_traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_PARSE( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOLATILE_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE_FRONT \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE */
-
-// Precondition: cv = `(c, v)` where c/v == 1/0 iif const/volatile present.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_(decl_cv, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_cv), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-                traits, \
-                BOOST_PP_EXPR_IIF(BOOST_PP_TUPLE_ELEM(2, 0, \
-                        BOOST_PP_TUPLE_ELEM(2, 1, decl_cv)), \
-                    const \
-                ) \
-                BOOST_PP_EMPTY \
-            ), \
-            BOOST_PP_EXPR_IIF(BOOST_PP_TUPLE_ELEM(2, 1, \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_cv)), \
-                volatile \
-            ) \
-            BOOST_PP_EMPTY \
-        ) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/except.hpp b/include/boost/contract/ext_/preprocessor/traits/func/except.hpp
deleted file mode 100644
index 4003d11..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/except.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/noexcept.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/throw.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-// Expand to `noexcept | noexcept(,,,) | throw(,,,) | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXCEPT, traits)()
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_PARSE(decl_traits) \
-    BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_PARSE_ARGS_ \
-            decl_traits)
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_PARSE_ARGS_(decl, traits) \
-    BOOST_PP_IIF( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOEXCEPT_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_NOEXCEPT_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THROW_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_THROW_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_NONE_ \
-    ))(decl, traits)
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_NOEXCEPT_(decl, traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_PARSE( \
-            decl, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOEXCEPT_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVE_FRONT \
-        ), \
-        noexcept, \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_THROW_(decl, traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_PARSE( \
-            decl, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THROW_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVE_FRONT \
-        ), \
-        throw, \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_NONE_(decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-
-// Precondition: except = `[(,,,)] EMPTY` (so trailing EMPTY already there).
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_( \
-        decl_except, keyword, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_except), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                keyword BOOST_PP_TUPLE_ELEM(2, 1, decl_except)) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/export.hpp b/include/boost/contract/ext_/preprocessor/traits/func/export.hpp
deleted file mode 100644
index 914435a..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/export.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/export.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-
-// NOTE: The `export` keyword for templates was deprecated in C++11 but it is
-// still supported here for compliance and compatibility with C++03.
-
-/* PUBLIC */
-
-// Expand to `export | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXPORT, traits)()
-
-// Implementation: Trailing EMPTY already put by KEYWORD1.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT_PARSE(decl_traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD1_PARSE( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-            export, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPORT_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE_FRONT \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/name.hpp b/include/boost/contract/ext_/preprocessor/traits/func/name.hpp
deleted file mode 100644
index 28d67d4..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/name.hpp
+++ /dev/null
@@ -1,148 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/operator.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/new.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/delete.hpp>
-#include <boost/contract/ext_/preprocessor/paren/front.hpp>
-#include <boost/contract/ext_/preprocessor/paren/has.hpp>
-#include <boost/preprocessor/seq/cat.hpp>
-#include <boost/preprocessor/seq/for_each.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/control/expr_iif.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to `(operator_name,,,) | EMPTY()` (EMPTY if not an operator).
-// This is the usual C++ operator's symbolic name (often NOT alphanumeric like
-// `+`, etc.), use NAME macro below for operator's alphanumeric name instead.
-// Wrapped within parenthesis to handle comma operator `(,)`, conversion
-// operators for types with commas `(std::map<int, char>)`, etc.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OPERATOR_NAME(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_OPERATOR_NAME, traits)()
-
-// Expand to `func_name`.
-// This is always an alphanumeric name (also for operators like `plus`, etc.),
-// but for destructors where name has the leading symbol `~`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_NAME, traits)
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_PARSE_D(d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_ARGS_(d, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_ARGS_(d, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_NO_ \
-    )(d, decl, traits)
-// Precondition: decl = `operator ...`
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_YES_(d, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_(d, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVE_FRONT(decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_(d, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_PAREN_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NEW_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_NEW_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DELETE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_DELETE_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_ \
-    )))(d, decl, traits)
-
-// Precondition: decl = `parenthesized-type ...`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_(d, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_SEQ_( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_PARSE_D(d, decl), traits)
-
-// Precondition: SECOND(decl_type) is a double parenthesized sequence of type
-// traits (e.g., `((int)) ((const))`).
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_SEQ_( \
-        decl_type, traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_PAREN_(~, \
-        ( \
-            BOOST_PP_SEQ_FOR_EACH( \
-                BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_REM_,\
-                1, \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)() \
-            ) \
-        ) \
-        ( \
-            BOOST_PP_SEQ_CAT( \
-                BOOST_PP_SEQ_FOR_EACH( \
-                    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_REM_, \
-                    0, \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_type)() \
-                ) \
-            ) \
-        ) \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_type), \
-        traits \
-    )
-
-// This macro already removes one set of parenthesis via the SEQ_FOR_EACH
-// (from `((elem))` to `(elem)`). Furthermore, if remove_all_paren is 1, it also
-// removes a second set of parenthesis (removing all parenthesis of a double
-// parenthesized sequence element, from `((elem))` to `elem`).
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_REM_( \
-        r, remove_all_paren, paren_type_trait) \
-    BOOST_PP_EXPR_IIF(remove_all_paren, \
-        BOOST_PP_TUPLE_REM(1) \
-    ) paren_type_trait
-
-// Precondition: decl = `delete ...`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_DELETE_( \
-        unused, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_PAREN_(~, (delete)(delete) \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVE_FRONT(decl), traits)
-
-// Precondition: decl = `new ...`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_NEW_( \
-        unused, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_PAREN_(~, (new)(new) \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVE_FRONT(decl), traits)
-
-// Precondition: decl = `(operator_name,,,) (func_name) ...`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_PAREN_( \
-        unused, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_( \
-        BOOST_PP_TUPLE_EAT(0) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl) BOOST_PP_EMPTY) \
-    )
-
-// Add empty operator name (i.e., not an operator).
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_NO_( \
-        unused, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_(decl, \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-
-// Precondition: decl = `(func_name) ...`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_(decl, traits) \
-    ( \
-        BOOST_PP_TUPLE_EAT(1) decl, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_PP_TUPLE_REM_CTOR(1, \
-                    BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \
-        ) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/params.hpp b/include/boost/contract/ext_/preprocessor/traits/func/params.hpp
deleted file mode 100644
index 4aba020..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/params.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/param.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to EMPTY() if no function formal parameters, otherwise expand to
-// pp-seq of param. traits (each pp-seq elem. to be inspected via PARAM_TRAITS).
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PARAMS, traits)()
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_PARSE_D(d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PUSH_BACK_PARSE_D(d, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits), \
-        BOOST_PP_EMPTY(), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_ \
-    )
-
-/* PRIVATE */
-            
-// Precondition: decl = `(,,,) ...`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_(d, decl) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_1(d, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_PARAM_PARSE_, \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_IS_DEFAULT_, \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_REPLACE_DEFAULT_PARSE_ \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_PARAM_PARSE_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_PARSE_D(d, decl)
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_IS_DEFAULT_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_FRONT(decl)
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_REPLACE_DEFAULT_PARSE_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_REPLACE_DEFAULT_PARSE_D(d, decl)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/postconditions.hpp b/include/boost/contract/ext_/preprocessor/traits/func/postconditions.hpp
deleted file mode 100644
index c116848..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/postconditions.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/contract/postcondition.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to pp-seq of postcondition assertion traits to be inspected via
-// ASSERTION_TRAITS macro, or to EMPTY() if no postconditions.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_POSTCONDITIONS, traits \
-    )()
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_PARSE_D( \
-        d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, \
-        decl_traits, \
-        BOOST_PP_EMPTY(), \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IS_POSTCONDITION_FRONT, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE_FRONT, \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_ \
-    )
-
-/* PRIVATE */
-
-// Precondition: decl = `(,,,) ...` from `postcondition(,,,) ...` originally in
-// decl. This macro will also parse `(,,,)` into a pp-seq of assertion traits.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_(d, decl) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_1(d, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_1, \
-        BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_1, \
-        BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_1 \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/preconditions.hpp b/include/boost/contract/ext_/preprocessor/traits/func/preconditions.hpp
deleted file mode 100644
index 80413bb..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/preconditions.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/assertion.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/contract/precondition.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to pp-seq of precondition assertion traits to be inspected via
-// ASSERTION_TRAITS macro, or to EMPTY() if no preconditions.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PRECONDITIONS, traits)()
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_PARSE_D( \
-        d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, \
-        decl_traits, \
-        BOOST_PP_EMPTY(), \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRECONDITION_FRONT, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVE_FRONT, \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_ \
-    )
-
-/* PRIVATE */
-
-// Precondition: decl = `(,,,) ...` from `precondition(,,,) ...` originally in
-// decl. This macro will also parse `(,,,)` into a pp-seq of assertion traits.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_(d, decl) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_1(d, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_1, \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_1, \
-        BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_1 \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/ref.hpp b/include/boost/contract/ext_/preprocessor/traits/func/ref.hpp
deleted file mode 100644
index fcc7361..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/ref.hpp
+++ /dev/null
@@ -1,75 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/contract/ref.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/* PUBLIC */
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_IS_REF_REF(tokens) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT( \
-            tokens), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_IS_REF_REF_MAYBE_ \
-    , \
-        0 BOOST_PP_TUPLE_EAT(1) \
-    )(tokens)
-
-// Expand to `ref | ref ref | EMPTY()` (ref for lvalue&, ref ref for rvalue&&).
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_REF, traits)()
-
-// Implementation: EXPAND needed for proper expansion (on MSVC).
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_PARSE(decl_traits) \
-    BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_PARSE_ARGS_ \
-            decl_traits)
-
-/* PRIVATE */
-
-// Precondition: tokens = `ref ...`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_IS_REF_REF_MAYBE_(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REF_REMOVE_FRONT(tokens))
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_PARSE_ARGS_(decl, traits) \
-    BOOST_PP_IIF( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_NO_ \
-    )(decl, traits)
-
-// Precondition: decl = `ref ...`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_YES_(decl, traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_REF_REMOVE_FRONT(decl), traits)
-        
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_(decl, traits) \
-    BOOST_PP_IIF( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_NO_ \
-    )(decl, traits)
-        
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_NO_(decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_NO_(decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-            ref BOOST_PP_EMPTY))
-
-// Precondition: decl = `ref ...`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_YES_(decl, traits) \
-    ( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_REF_REMOVE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                ref ref BOOST_PP_EMPTY) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/return.hpp b/include/boost/contract/ext_/preprocessor/traits/func/return.hpp
deleted file mode 100644
index 75c9779..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/return.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/return.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/operator.hpp>
-#include <boost/contract/ext_/preprocessor/paren/has.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-
-/* PUBLIC */
-
-// Expand to `(,,,) | auto | EMPTY()` (`auto` for alternative function syntax,
-// see also `..._TRAILING_RETURN`), for example: `(void)`, `(map<U, V>)`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_RETURN, traits)()
-
-// Expand to `(,,,) | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TRAILING_RETURN, traits \
-    )()
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PARSE_D(d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PARSE_ARGS_(d, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_PARSE_D( \
-        d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_PARSE_ARGS_(d, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_PARSE_ARGS_( \
-        d, decl, traits) \
-    BOOST_PP_IIF( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_FRONT(decl), \
-        BOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_NO_ \
-    )(d, decl, traits)
-
-// Precondition: decl = `return ...`.
-// Implementation: Trailing EMPTY already added by AUX_TYPE_PARSE.
-#define BOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_YES_(d, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D(d, \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE_FRONT(decl)), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PARSE_ARGS_(d, decl, traits) \
-    BOOST_PP_IIF( \
-            BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_HAS_RETURN_(decl), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_YES_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_NO_ \
-    )(d, decl, traits)
-
-// Implementation: Trailing EMPTY already added by AUX_AUTO_TYPE_PARSE.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_YES_(d, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D(d, decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_NO_(d, decl, traits) \
-    (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY))
-
-// Constructors, destructors, type conversion operators, etc. do no have a
-// return type so this checks first if this declaration is supposed to have
-// a return type or not (based on upcoming number of parenthesis, etc.).
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_HAS_RETURN_(decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PEEK_NAME_AND_PARAMS_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_FRONT(decl), \
-        0 BOOST_PP_TUPLE_EAT(1) \
-    , \
-        1 BOOST_PP_TUPLE_EAT(1) \
-    ))(decl)
-
-// Precondition: decl = `(result_type?) ...`
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PEEK_NAME_AND_PARAMS_(decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(BOOST_PP_TUPLE_EAT(0) decl), \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PEEK_PARAMS_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_FRONT( \
-            BOOST_PP_TUPLE_EAT(0) decl), \
-        1 BOOST_PP_TUPLE_EAT(1) \
-    , \
-        0 BOOST_PP_TUPLE_EAT(1) \
-    ))(BOOST_PP_TUPLE_EAT(0) decl)
-
-// Precondition: decl = `(func_name?) ...`
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PEEK_PARAMS_(decl) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(BOOST_PP_TUPLE_EAT(0) decl), \
-        1 \
-    , \
-        0 \
-    )
-    
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/template.hpp b/include/boost/contract/ext_/preprocessor/traits/func/template.hpp
deleted file mode 100644
index 5f6b611..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/template.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/param.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/template.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/default.hpp>
-
-/* PUBLIC */
-
-// Expand to `template | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TEMPLATE, traits)()
-
-// Expand to EMPTY() if no function template parameters, otherwise expand to
-// pp-seq of param. traits (each pp-seq elem. to be inspected via PARAM_TRAITS).
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARAMS(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TEMPLATE_PARAMS, \
-        traits \
-    )()
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARSE_D(d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, \
-        decl_traits, \
-        template, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT, \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT, \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_ \
-    )
-
-/* PRIVATE */
-
-// Precondition: decl = `(,,,) ...` from `template(,,,) ...` originally in decl.
-// This macro will also parse `(,,,)` into a pp-seq of template param traits.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_(d, decl) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_1(d, \
-        decl, \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARAM_PARSE_, \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_IS_DEFAULT_, \
-        BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_REPLACE_DEFAULT_PARSE_ \
-    )
-    
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARAM_PARSE_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_PARSE_D(d, decl)
-                    
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_IS_DEFAULT_(d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_FRONT(decl)
-                    
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_REPLACE_DEFAULT_PARSE_( \
-        d, l, decl) \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_REPLACE_DEFAULT_PARSE_D(d, decl)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/verbatim.hpp b/include/boost/contract/ext_/preprocessor/traits/func/verbatim.hpp
deleted file mode 100644
index 43fd247..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/verbatim.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/contract/verbatim.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to `(,,,) | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VERBATIM, traits)()
-
-// Implementation: Trailing EMPTY already put by KEYWORD_PAREN.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM_PARSE(decl_traits) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_PARSE( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VERBATIM_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE_FRONT \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/func/virt.hpp b/include/boost/contract/ext_/preprocessor/traits/func/virt.hpp
deleted file mode 100644
index e9a973d..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/func/virt.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_HPP_
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_comb.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/final.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/override.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/control/expr_iif.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to `final | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_FINAL(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_FINAL, traits)()
-
-// Expand to `override | EMPTY()`.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OVERRIDE(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_OVERRIDE, traits)()
-
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_PARSE(decl_traits) \
-    BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_( \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_PARSE( \
-            BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FINAL_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OVERRIDE_FRONT, \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVE_FRONT \
-        ), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE */
-
-// Precondition: virt = `(f, o)` where f/o == 1/0 iff final/override present.
-#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_(decl_virt, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_virt), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-                traits, \
-                BOOST_PP_EXPR_IIF(BOOST_PP_TUPLE_ELEM(2, 0, \
-                        BOOST_PP_TUPLE_ELEM(2, 1, decl_virt)), \
-                    final \
-                ) \
-                BOOST_PP_EMPTY \
-            ), \
-            BOOST_PP_EXPR_IIF(BOOST_PP_TUPLE_ELEM(2, 1, \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_virt)), \
-                override \
-            ) \
-            BOOST_PP_EMPTY \
-        ) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/param.hpp b/include/boost/contract/ext_/preprocessor/traits/param.hpp
deleted file mode 100644
index cb233fb..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/param.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_HPP_
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/param/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/param/name.hpp>
-#include <boost/contract/ext_/preprocessor/traits/param/default.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-
-/* PUBLIC */
-
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_PARSE_D(d, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_EMPTY_DEFAULT_PARSE( \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME_PARSE( \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_PARSE_D(d, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    )))))
-
-#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_PARSE_D(d, decl) \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_EMPTY_DEFAULT_PARSE( \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME_PARSE( \
-    BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_PARSE_D(d, \
-    BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \
-        decl BOOST_PP_NIL \
-    )))))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/param/default.hpp b/include/boost/contract/ext_/preprocessor/traits/param/default.hpp
deleted file mode 100644
index 1b72873..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/param/default.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_DEFAULT_HPP_
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_DEFAULT_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/default.hpp>
-#include <boost/contract/ext_/preprocessor/parenthesize.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to `(,,,) | EMPTY()`, for example: `(true)` or `(same<U, V>::value)`.
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_DEFAULT(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_DEFAULT, traits)()
-
-// Initialize default argument to EMPTY without altering decl.
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_EMPTY_DEFAULT_PARSE(decl_traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(BOOST_PP_TUPLE_ELEM(2, 1, \
-                decl_traits), BOOST_PP_EMPTY) \
-    )
-
-// Replace previously init. default argument with what's parsed from decl.
-// Precondition: decl = `default ...`.
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_REPLACE_DEFAULT_PARSE_D( \
-        d, decl_traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \
-                    BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)), \
-            BOOST_CONTRACT_EXT_PP_PARENTHESIZE( \
-                BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVE_FRONT( \
-                    BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) \
-                ) \
-            ) \
-            BOOST_PP_EMPTY \
-        ) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/param/name.hpp b/include/boost/contract/ext_/preprocessor/traits/param/name.hpp
deleted file mode 100644
index c34f26b..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/param/name.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME_HPP_
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-
-/* PUBLIC */
-
-// Expand to `[...] name | EMPTY()` (ellipses `...` for variadic templates).
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_NAME, traits)()
-
-// Precondition: name must always be the last remaining token in decl.
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME_PARSE(decl_traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_traits), \
-            BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                    BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \
-            BOOST_PP_EMPTY \
-        ) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/traits/param/type.hpp b/include/boost/contract/ext_/preprocessor/traits/param/type.hpp
deleted file mode 100644
index c3f7547..0000000
--- a/include/boost/contract/ext_/preprocessor/traits/param/type.hpp
+++ /dev/null
@@ -1,157 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_HPP_
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_HPP_
-
-#include <boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp>
-#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/typename.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/class.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/template.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/control/expr_iif.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-/* PUBLIC */
-
-// Expand to `typename | class | (,,,) | template( ,,, ) class` (for
-// type template parameters, value template parameter or function formal
-// parameters, and template template parameters respectively).
-// See also TEMPLATE_PARAM macros below for template template parameters.
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE(traits) \
-    BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_TYPE, traits)
-
-// Expand `template( ,,, ) ...` to `( ,,, )` (this is useful to get the
-// pp-tuple with the template parameters of a template template parameter).
-// Expand to `(...)` for variadic function parameters.
-// Precondition: tokens = `template( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_PARAMS( \
-        tokens) \
-    BOOST_CONTRACT_EXT_PP_PAREN_FRONT( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(tokens))
-
-// Expand `template( ,,, ) ...` to `...` (for example, this is useful to get
-// the `class` key specifier of a template template parameter, without assuming
-// it is `class`).
-// Precondition: tokens = `template( ,,, ) ...`.
-#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_KEY(tokens) \
-    BOOST_PP_TUPLE_EAT(0) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(tokens)
-
-// Parse type for (function formal, not template) parameters.
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_PARSE_D(d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_PARSE_ARGS_(d, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-// Parse "type" (or "key") for template parameters.
-#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_PARSE_D( \
-        d, decl_traits) \
-    BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_PARSE_ARGS_(d, \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \
-        BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \
-    )
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_PARSE_ARGS_( \
-        d, decl, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPENAME_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TYPENAME_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_CLASS_ \
-    , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_PARSE_ARGS_ \
-    )))(d, decl, traits)
-
-// Precondition: decl = `wrapped-type ... | type`.
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_PARSE_ARGS_(d, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_( \
-            BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D(d, decl), traits)
-
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_(decl_type, traits) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \
-            BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()), \
-        BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_NO_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_YES_ \
-    )(decl_type, traits)
-
-// Precondition: Unable to parse type so assume decl = `type NIL` (i.e., the
-// non-keyword type was specified unwrapped). That is allowed only when no
-// parameter name is given so all tokens in decl are for the type and remaining
-// decl is set to NIL here (which will be parsed as no parameter name).
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_NO_(decl_type, traits) \
-    ( \
-        BOOST_PP_NIL, \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \
-                    BOOST_PP_TUPLE_ELEM(2, 0, decl_type)) \
-        ) \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_YES_(decl_type, traits) \
-    ( \
-        BOOST_PP_TUPLE_ELEM(2, 0, decl_type), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \
-                BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \
-    )
-
-// Precondition: decl = `typename ...`.
-#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TYPENAME_( \
-        d, decl, traits) \
-    ( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, typename) \
-    )
-            
-// Precondition: decl = `class ...`.
-#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_CLASS_( \
-        d, decl, traits) \
-    ( \
-        BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_FRONT(decl), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, class) \
-    )
-
-// Precondition: decl = `template(,,,) ...`.
-#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_( \
-        d, decl, traits) \
-    BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_PUSH_BACK_( \
-        BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_KEY( \
-                decl), \
-        BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_PARAMS( \
-                decl), \
-        traits \
-    )
-
-#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_PUSH_BACK_( \
-        template_template_key, template_template_params, traits) \
-    ( \
-        BOOST_PP_IIF( \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_FRONT( \
-                    template_template_key) \
-        , \
-            BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_FRONT \
-        , \
-            BOOST_PP_TUPLE_REM(1) \
-        )(template_template_key), \
-        BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \
-            traits, \
-            template \
-            template_template_params \
-            BOOST_PP_EXPR_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_FRONT( \
-                    template_template_key), \
-                class \
-            ) \
-        ) \
-    )
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/utility/empty.hpp b/include/boost/contract/ext_/preprocessor/utility/empty.hpp
deleted file mode 100644
index beaa217..0000000
--- a/include/boost/contract/ext_/preprocessor/utility/empty.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_EMPTY_HPP_
-#define BOOST_CONTRACT_EXT_PP_EMPTY_HPP_
-
-#include <boost/contract/ext_/preprocessor/paren/has.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-#include <boost/preprocessor/comparison/equal.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-#include <boost/preprocessor/facilities/is_empty.hpp>
-#include <boost/preprocessor/variadic/size.hpp>
-
-// NOTE: Variadics (and trailing EMPTY()) are used to handle empty arguments on
-// all compilers (including MSVC).
-
-/* PRIVATE */
-
-#define BOOST_CONTRACT_EXT_PP_IS_EMPTY_NO_(...) 0
-
-#define BOOST_CONTRACT_EXT_PP_IS_EMPTY_MAYBE_(...) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(__VA_ARGS__ \
-            BOOST_PP_EMPTY()), \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY_NO_ \
-    , \
-        BOOST_PP_IS_EMPTY \
-    )(__VA_ARGS__ BOOST_PP_EMPTY())
-
-/* PUBLIC */
-
-// Only IS_EMPTY() expands to 1.
-// Handle arguments with parenthesis and commas, BOOST_PP_EMPTY does not
-// (e.g., IS_EMPTY(x), IS_EMPTY(()), IS_EMPTY(x, y), IS_EMPTY((), ()) all
-// expand to 0).
-#define BOOST_CONTRACT_EXT_PP_IS_EMPTY(...) \
-    BOOST_PP_IIF(BOOST_PP_EQUAL(1, BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)), \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY_MAYBE_ \
-    , \
-        BOOST_CONTRACT_EXT_PP_IS_EMPTY_NO_ \
-    )(__VA_ARGS__)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/utility/nil.hpp b/include/boost/contract/ext_/preprocessor/utility/nil.hpp
deleted file mode 100644
index 7aaaee9..0000000
--- a/include/boost/contract/ext_/preprocessor/utility/nil.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_NIL_HPP_
-#define BOOST_CONTRACT_EXT_PP_NIL_HPP_
-
-#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp>
-#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp>
-
-/* PUBLIC */
-
-// This macro name must NOT be #defined (used here like a "keyword"). The
-// Boost.Preprocessor doc indicates the purpose of BOOST_PP_NIL is to NOT be
-// a macro (i.e., to be #undefined, according with its usage here).
-#ifdef BOOST_PP_NIL
-#   error "reserved macro name must not be #defined"
-#endif
-
-// Precondition: tokens must start with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \
-            BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must end with a token concatenable to a macro name
-//               (e.g., a literal or integral token) or with parenthesis.
-#define BOOST_CONTRACT_EXT_PP_IS_NIL_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \
-            BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_COMMA, tokens)
-
-// Precondition: tokens must start with `BOOST_PP_NIL` (this can be
-//               checked with `..._IS_NIL_FRONT` macro above).
-#define BOOST_CONTRACT_EXT_PP_NIL_REMOVE_FRONT(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
-            BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_EMPTY, tokens)
-
-// Precondition: tokens must end with `BOOST_PP_NIL` (this can be
-//               checked with `..._IS_NIL_BACK` macro above).
-#define BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(tokens) \
-    BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \
-            BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_EMPTY, tokens)
-
-/* PRIVATE */
-
-// Must expand to a single comma `,` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_COMMABOOST_PP_NIL ,
-#define BOOST_PP_NILBOOST_CONTRACT_EXT_PP_NIL_CAT_TO_COMMA ,
-// Must expand to empty `` (not local macros, do not #undefine).
-#define BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_EMPTYBOOST_PP_NIL
-#define BOOST_PP_NILBOOST_CONTRACT_EXT_PP_NIL_CAT_TO_EMPTY
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/variadic/enum_to_seq.hpp b/include/boost/contract/ext_/preprocessor/variadic/enum_to_seq.hpp
deleted file mode 100644
index a59ddd0..0000000
--- a/include/boost/contract/ext_/preprocessor/variadic/enum_to_seq.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_HPP_
-#define BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_HPP_
-
-#include <boost/contract/ext_/preprocessor/utility/nil.hpp>
-#include <boost/preprocessor/variadic/to_seq.hpp>
-#include <boost/preprocessor/seq/pop_back.hpp>
-#include <boost/preprocessor/seq/elem.hpp>
-#include <boost/preprocessor/seq/size.hpp>
-#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/preprocessor/arithmetic/dec.hpp>
-#include <boost/preprocessor/logical/compl.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-
-/* PRIVATE */
-
-// Wrapped with parenthesis after removal of NIL so to make it a pp-seq elem.
-#define BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_REMOVE_NIL_(back) \
-    (BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(back))
-
-#define BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_BACK_(seq, back) \
-    BOOST_PP_SEQ_POP_BACK(seq) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(back), \
-        BOOST_PP_TUPLE_EAT(1) \
-    , \
-        BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_REMOVE_NIL_ \
-    )(back)
-
-#define BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_(seq) \
-    BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_BACK_(seq, \
-            BOOST_PP_SEQ_ELEM(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), seq))
-
-/* PUBLIC */
-
-// Expand EMPTY() to EMPTY(), otherwise variadic to seq allowing for an
-// optional trailing comma (like with C++ enumerations):
-//  ``              to ``
-//  `x, ..., y`     to (x)...(y)
-//  `x, ..., y,`    to (x)...(y) (handle optional trailing comma `,`)
-// Implementation: Tokens must be front-concatenable and cannot be specified as
-// NIL (because they are internally for being NIL).
-#define BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ(...) \
-    BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_( \
-            BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__ BOOST_PP_NIL))
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/variadic/to_seq.hpp b/include/boost/contract/ext_/preprocessor/variadic/to_seq.hpp
deleted file mode 100644
index e30a5ab..0000000
--- a/include/boost/contract/ext_/preprocessor/variadic/to_seq.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ_HPP_
-#define BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ_HPP_
-
-#include <boost/contract/ext_/preprocessor/utility/empty.hpp>
-#include <boost/preprocessor/variadic/to_seq.hpp>
-#include <boost/preprocessor/control/iif.hpp>
-
-/* PUBLIC */
-
-// Expand EMPTY() to EMPTY(), otherwise expand variadic data to pp-seq.
-#define BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ(...) \
-    BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(__VA_ARGS__), \
-        BOOST_PP_EMPTY \
-    , \
-        BOOST_PP_VARIADIC_TO_SEQ \
-    )(__VA_ARGS__)
-
-#endif // #include guard
-
diff --git a/include/boost/contract/ext_/preprocessor/variadic/wrap_iif.hpp b/include/boost/contract/ext_/preprocessor/variadic/wrap_iif.hpp
deleted file mode 100644
index e25ad70..0000000
--- a/include/boost/contract/ext_/preprocessor/variadic/wrap_iif.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#ifndef BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF_HPP_
-#define BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF_HPP_
-
-#include <boost/preprocessor/control/expr_iif.hpp>
-
-/* PUBLIC */
-
-// Expand to `prefix ,,, postfix` if bit is 1, or to `,,,` if bit is 0 (where
-// `prefix`, `,,,`, and `postfix` can all be EMTPY()).
-#define BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF(bit, prefix, postfix, ...) \
-    BOOST_PP_TUPLE_REM_CTOR(BOOST_PP_IIF(bit, \
-            (prefix __VA_ARGS__ postfix), (__VA_ARGS__)))
-
-#endif // #include guard
-