diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
index a930b3b4fb2ba889df8652aeac55971d508b3534..91310085abb774a23fff32ce7d1ca7113aedceef 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
@@ -19,6 +19,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../RankedTreeWrapper.h"
 #include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 #include "../../CastApi.hpp"
@@ -207,7 +208,8 @@ void PrefixRankedBarPattern::compose ( std::deque < sax::Token > & out ) const {
 namespace alib {
 
 xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarPattern > prefixRankedBarPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::XML_TAG_NAME, tree::PrefixRankedBarPattern::parse );
-xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarPattern > prefixRankedBarPatternParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::XML_TAG_NAME, tree::PrefixRankedBarPattern::parse );
+xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedBarPattern > prefixRankedBarPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::XML_TAG_NAME, tree::PrefixRankedBarPattern::parse );
+xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarPattern > prefixRankedBarPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::XML_TAG_NAME, tree::PrefixRankedBarPattern::parse );
 
 auto PrefixRankedBarPatternFromRankedPattern = castApi::CastRegister < tree::PrefixRankedBarPattern, tree::RankedPattern > ( );
 auto PrefixRankedBarPatternFromRankedTree = castApi::CastRegister < tree::PrefixRankedBarPattern, tree::PrefixRankedBarTree > ( );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
index e66bccfb652ff2b3750a943ea1f8b70fae4442cd..cd81c36e436b83ebb7e112e85e317e62ecef3a10 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../RankedTreeWrapper.h"
 #include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 #include "../../CastApi.hpp"
@@ -181,7 +182,8 @@ void PrefixRankedBarTree::compose ( std::deque < sax::Token > & out ) const {
 namespace alib {
 
 xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarTree > prefixRankedBarTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME, tree::PrefixRankedBarTree::parse );
-xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarTree > prefixRankedBarTreeParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME, tree::PrefixRankedBarTree::parse );
+xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedBarTree > prefixRankedBarTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME, tree::PrefixRankedBarTree::parse );
+xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarTree > prefixRankedBarTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME, tree::PrefixRankedBarTree::parse );
 
 auto PrefixRankedBarTreeFromRankedTree = castApi::CastRegister < tree::PrefixRankedBarTree, tree::RankedTree > ( );
 auto PrefixRankedBarTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME );
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
index 2df24d5258ed96d4caecabe490dbcf6f14699d97..9158c35850310a7f28695b152d2ef64a3909ed62 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../RankedTreeWrapper.h"
 #include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 #include "../../CastApi.hpp"
@@ -169,7 +170,8 @@ void PrefixRankedPattern::compose ( std::deque < sax::Token > & out ) const {
 namespace alib {
 
 xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedPattern > prefixRankedPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedPattern > ( tree::PrefixRankedPattern::XML_TAG_NAME, tree::PrefixRankedPattern::parse );
-xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedPattern > prefixRankedPatternParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedPattern > ( tree::PrefixRankedPattern::XML_TAG_NAME, tree::PrefixRankedPattern::parse );
+xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedPattern > prefixRankedPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedPattern > ( tree::PrefixRankedPattern::XML_TAG_NAME, tree::PrefixRankedPattern::parse );
+xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedPattern > prefixRankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedPattern > ( tree::PrefixRankedPattern::XML_TAG_NAME, tree::PrefixRankedPattern::parse );
 
 auto PrefixRankedPatternFromRankedPattern = castApi::CastRegister < tree::PrefixRankedPattern, tree::RankedPattern > ( );
 auto PrefixRankedPatternCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedPattern > ( tree::PrefixRankedPattern::XML_TAG_NAME );
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.cpp b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
index ac012e367f0c06cc8f0be5bb28eb613c62aacca8..37bcb2e91c4e5d2a79c650c8cd1e2d5891c8e892 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../RankedTreeWrapper.h"
 #include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 #include "../../CastApi.hpp"
@@ -164,7 +165,8 @@ void PrefixRankedTree::compose ( std::deque < sax::Token > & out ) const {
 namespace alib {
 
 xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedTree > prefixRankedTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedTree > ( tree::PrefixRankedTree::XML_TAG_NAME, tree::PrefixRankedTree::parse );
-xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedTree > prefixRankedTreeParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedTree > ( tree::PrefixRankedTree::XML_TAG_NAME, tree::PrefixRankedTree::parse );
+xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedTree > prefixRankedTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedTree > ( tree::PrefixRankedTree::XML_TAG_NAME, tree::PrefixRankedTree::parse );
+xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedTree > prefixRankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedTree > ( tree::PrefixRankedTree::XML_TAG_NAME, tree::PrefixRankedTree::parse );
 
 auto PrefixRankedTreeFromRankedTree = castApi::CastRegister < tree::PrefixRankedTree, tree::RankedTree > ( );
 auto PrefixRankedTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedTree > ( tree::PrefixRankedTree::XML_TAG_NAME );
diff --git a/alib2data/src/tree/ranked/RankedPattern.cpp b/alib2data/src/tree/ranked/RankedPattern.cpp
index 55fa2dbd639d949ec002ba29d4687cb8e78082f5..63bd3116c3f3b363dfc2d0a5d7c2d6af65195b76 100644
--- a/alib2data/src/tree/ranked/RankedPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedPattern.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../RankedTreeWrapper.h"
 #include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 #include "../../CastApi.hpp"
@@ -167,7 +168,8 @@ void RankedPattern::compose ( std::deque < sax::Token > & out ) const {
 namespace alib {
 
 xmlApi < tree::Tree >::ParserRegister < tree::RankedPattern > rankedPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME, tree::RankedPattern::parse );
-xmlApi < alib::Object >::ParserRegister < tree::RankedPattern > rankedPatternParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME, tree::RankedPattern::parse );
+xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedPattern > rankedPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME, tree::RankedPattern::parse );
+xmlApi < alib::Object >::ParserRegister < tree::RankedPattern > rankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME, tree::RankedPattern::parse );
 
 auto RankedPatternFromUnrankedPattern = castApi::CastRegister < tree::RankedPattern, tree::UnrankedPattern > ( );
 auto RankedPatternCastBinder = castApi::CastPoolStringBinder < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME );
diff --git a/alib2data/src/tree/ranked/RankedTree.cpp b/alib2data/src/tree/ranked/RankedTree.cpp
index 274316be1def4941aecf79b11058a5b4c8db6514..e3d8eea033c66c1fe17b1ade3a6acfccfb872796 100644
--- a/alib2data/src/tree/ranked/RankedTree.cpp
+++ b/alib2data/src/tree/ranked/RankedTree.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../RankedTreeWrapper.h"
 #include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 #include "../../CastApi.hpp"
@@ -158,7 +159,8 @@ void RankedTree::compose ( std::deque < sax::Token > & out ) const {
 namespace alib {
 
 xmlApi < tree::Tree >::ParserRegister < tree::RankedTree > rankedTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME, tree::RankedTree::parse );
-xmlApi < alib::Object >::ParserRegister < tree::RankedTree > rankedTreeParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME, tree::RankedTree::parse );
+xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedTree > rankedTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME, tree::RankedTree::parse );
+xmlApi < alib::Object >::ParserRegister < tree::RankedTree > rankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME, tree::RankedTree::parse );
 
 auto RankedTreeFromUnrankedTree = castApi::CastRegister < tree::RankedTree, tree::UnrankedTree > ( );
 auto RankedTreeCastBinder = castApi::CastPoolStringBinder < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME );
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.cpp b/alib2data/src/tree/unranked/UnrankedPattern.cpp
index 166bbd4a1e75f9aa9e1bae1fb6082615d44f09dd..0ef161a1e11ef366db1a88aacc4991f1c4bd847c 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedPattern.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../UnrankedTreeWrapper.h"
 #include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 #include "../../CastApi.hpp"
@@ -167,7 +168,8 @@ void UnrankedPattern::compose ( std::deque < sax::Token > & out ) const {
 namespace alib {
 
 xmlApi < tree::Tree >::ParserRegister < tree::UnrankedPattern > unrankedPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME, tree::UnrankedPattern::parse );
-xmlApi < alib::Object >::ParserRegister < tree::UnrankedPattern > unrankedPatternParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME, tree::UnrankedPattern::parse );
+xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::UnrankedPattern > unrankedPatternParserRegister2 = xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME, tree::UnrankedPattern::parse );
+xmlApi < alib::Object >::ParserRegister < tree::UnrankedPattern > unrankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME, tree::UnrankedPattern::parse );
 
 auto UnrankedPatternFromRankedPattern = castApi::CastRegister < tree::UnrankedPattern, tree::RankedPattern > ( );
 auto UnrankedPatternCastBinder = castApi::CastPoolStringBinder < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME );
diff --git a/alib2data/src/tree/unranked/UnrankedTree.cpp b/alib2data/src/tree/unranked/UnrankedTree.cpp
index a8e4686bffe1f08644e9ed0da9676e9912d2f079..11afe473b168363644d1bc6a8cb4f06d4b3e2ef9 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.cpp
+++ b/alib2data/src/tree/unranked/UnrankedTree.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../UnrankedTreeWrapper.h"
 #include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 #include "../../CastApi.hpp"
@@ -158,7 +159,8 @@ void UnrankedTree::compose ( std::deque < sax::Token > & out ) const {
 namespace alib {
 
 xmlApi < tree::Tree >::ParserRegister < tree::UnrankedTree > unrankedTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME, tree::UnrankedTree::parse );
-xmlApi < alib::Object >::ParserRegister < tree::UnrankedTree > unrankedTreeParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME, tree::UnrankedTree::parse );
+xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::UnrankedTree > unrankedTreeParserRegister2 = xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME, tree::UnrankedTree::parse );
+xmlApi < alib::Object >::ParserRegister < tree::UnrankedTree > unrankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME, tree::UnrankedTree::parse );
 
 auto UnrankedTreeFromRankedTree = castApi::CastRegister < tree::UnrankedTree, tree::RankedTree > ( );
 auto UnrankedTreeCastBinder = castApi::CastPoolStringBinder < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME );