diff --git a/alib2algo/src/tree/generate/RandomTreeFactory.cpp b/alib2algo/src/tree/generate/RandomTreeFactory.cpp
index 4501479837ea21adac79fe4421b6b1a6d81068b4..45d109c3c447fc1348fcbe97e4449907fc1b8d2e 100644
--- a/alib2algo/src/tree/generate/RandomTreeFactory.cpp
+++ b/alib2algo/src/tree/generate/RandomTreeFactory.cpp
@@ -26,6 +26,8 @@
 
 #include <registration/AlgoRegistration.hpp>
 
+#include <global/GlobalData.h>
+
 namespace tree {
 
 namespace generate {
diff --git a/alib2data/src/tree/TreeBase.h b/alib2data/src/tree/TreeBase.h
index 6431792ad85d8eff0b5fa70f2097f7b18e1fb6de..ccdedd35cb1a72d674e291b082b711b0fdb1a90a 100644
--- a/alib2data/src/tree/TreeBase.h
+++ b/alib2data/src/tree/TreeBase.h
@@ -10,8 +10,6 @@
 
 #include <object/ObjectBase.h>
 
-#include <core/xmlApi.hpp>
-
 namespace tree {
 
 /**
@@ -25,28 +23,4 @@ public:
 
 } /* namespace tree */
 
-namespace core {
-
-template < typename Type >
-struct xmlApi < Type, typename std::enable_if < std::is_base_of < tree::TreeBase, Type >::value >::type > {
-	static Type parse ( ext::deque < sax::Token >::iterator & input ) {
-		return Type::parse ( input );
-	}
-
-	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
-		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName() );
-	}
-
-	static std::string xmlTagName ( ) {
-		return Type::getXmlTagName();
-	}
-
-	static void compose ( ext::deque < sax::Token > & output, const Type & data ) {
-		Type::compose ( output, data );
-	}
-
-};
-
-} /* namespace core */
-
 #endif /* TREE_BASE_H_ */
diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.cpp b/alib2data/src/tree/ranked/PostfixRankedTree.cpp
index 5b5ee74ffec97d2a9fbf5c72332ff84de3317798..b02ff6bf6a061348ba4bdb7dbbb16b6d1e70c4c3 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.cpp
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PostfixRankedTr
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::PostfixRankedTree < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::PostfixRankedTree < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::PostfixRankedTree < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PostfixRankedTree < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PostfixRankedTree < > > ( );
-
 static auto PostfixRankedTreeFromRankedTree = registration::CastRegister < tree::PostfixRankedTree < >, tree::RankedTree < > > ( );
 
 static auto LinearStringFromPostfixRankedTree = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PostfixRankedTree < > > ( );
diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.h b/alib2data/src/tree/ranked/PostfixRankedTree.h
index c56dbad68742ea82066466f6db61d2b2c2972dae..1dc8e04963f11691bec85908c58edd6469bd1659 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.h
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.h
@@ -32,16 +32,12 @@
 #include <alib/deque>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
-#include <alphabet/xml/RankedSymbol.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
 #include "../TreeBase.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -195,36 +191,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName ( ) {
-		static std::string xmlTagName = "PostfixRankedTree";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the tree
-	 */
-	static PostfixRankedTree parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the tree
-	 * \param tree the tree to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const PostfixRankedTree & tree );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -342,24 +308,6 @@ PostfixRankedTree < SymbolType, RankType >::operator std::string ( ) const {
 	return std::move ( ss ).str ( );
 }
 
-template < class SymbolType, class RankType >
-PostfixRankedTree < SymbolType, RankType > PostfixRankedTree < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PostfixRankedTree::getXmlTagName ( ) );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PostfixRankedTree::getXmlTagName ( ) );
-
-	return PostfixRankedTree < SymbolType, RankType > ( std::move ( rankedAlphabet ), std::move ( data ) );
-}
-
-template < class SymbolType, class RankType >
-void PostfixRankedTree < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PostfixRankedTree & tree ) {
-	out.emplace_back ( PostfixRankedTree::getXmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) );
-	TreeToXMLComposer::composeContent ( out, tree.m_Data );
-	out.emplace_back ( PostfixRankedTree::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class RankType >
 object::ObjectBase * PostfixRankedTree < SymbolType, RankType >::inc ( ) && {
 	return new object::UniqueObject ( object::Object ( std::move ( * this ) ), primitive::Integer ( 0 ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp
index 6103320e72042b2c3fd2646fa71614731f7f01e6..9b371889115b37a2486d531975b19ea49cbdf19e 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedBar
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedBarNonlinearPattern < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarNonlinearPattern < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarNonlinearPattern < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarNonlinearPattern < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarNonlinearPattern < > > ( );
-
 static auto PrefixRankedBarNonlinearPatternFromRankedTree = registration::CastRegister < tree::PrefixRankedBarNonlinearPattern < >, tree::RankedTree < > > ( );
 static auto PrefixRankedBarNonlinearPatternFromRankedPattern = registration::CastRegister < tree::PrefixRankedBarNonlinearPattern < >, tree::RankedPattern < > > ( );
 static auto PrefixRankedBarNonlinearPatternFromRankedNonlinearPattern = registration::CastRegister < tree::PrefixRankedBarNonlinearPattern < >, tree::RankedNonlinearPattern < > > ( );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
index 7aeb633d54247e211c64af5840b1b7938c5f1efd..fbe4ea5311f55f32df0b26920fb50cb51ef074b8 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -31,17 +31,13 @@
 #include <alib/algorithm>
 #include <alib/deque>
 
-#include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
-#include <alphabet/xml/RankedSymbol.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
 #include "../TreeBase.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -363,36 +359,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName ( ) {
-		static std::string xmlTagName = "PrefixRankedBarNonlinearPattern";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the pattern
-	 */
-	static PrefixRankedBarNonlinearPattern parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the pattern
-	 * \param pattern the pattern to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const PrefixRankedBarNonlinearPattern & pattern );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -564,32 +530,6 @@ PrefixRankedBarNonlinearPattern < SymbolType, RankType >::operator std::string (
 	return std::move ( ss ).str ( );
 }
 
-template < class SymbolType, class RankType >
-PrefixRankedBarNonlinearPattern < SymbolType, RankType > PrefixRankedBarNonlinearPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedBarNonlinearPattern::getXmlTagName ( ) );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > bars = TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input );
-	common::ranked_symbol < SymbolType, RankType > variablesBarSymbol = TreeFromXMLParser::parseVariablesBar < common::ranked_symbol < SymbolType, RankType > > ( input );
-	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedBarNonlinearPattern::getXmlTagName ( ) );
-
-	return PrefixRankedBarNonlinearPattern < SymbolType, RankType > ( std::move ( bars ), std::move ( variablesBarSymbol ), std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( data ) );
-}
-
-template < class SymbolType, class RankType >
-void PrefixRankedBarNonlinearPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedBarNonlinearPattern & pattern ) {
-	out.emplace_back ( PrefixRankedBarNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeBars ( out, pattern.getBars ( ) );
-	TreeToXMLComposer::composeVariablesBar ( out, pattern.getVariablesBar ( ) );
-	TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) );
-	TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) );
-	TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) );
-	TreeToXMLComposer::composeContent ( out, pattern.m_Data );
-	out.emplace_back ( PrefixRankedBarNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class RankType >
 object::ObjectBase* PrefixRankedBarNonlinearPattern < SymbolType, RankType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
index fe72f8c47371e69d3380a639c7e7aec470e24e6b..aef03991fd28a2c95cfb5e58ffeffebb2bd15c2f 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedBar
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedBarPattern < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarPattern < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarPattern < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarPattern < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarPattern < > > ( );
-
 static auto PrefixRankedBarPatternFromRankedPattern = registration::CastRegister < tree::PrefixRankedBarPattern < >, tree::RankedPattern < > > ( );
 static auto PrefixRankedBarPatternFromPrefixRankedBarTree = registration::CastRegister < tree::PrefixRankedBarPattern < >, tree::PrefixRankedBarTree < > > ( );
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
index 27435ceb7845fe14abf05f42039e7bad981dad76..342800c38c7347306c70e5032c6d9b63c20ebf60 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -32,16 +32,12 @@
 #include <alib/deque>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
-#include <alphabet/xml/RankedSymbol.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
 #include "../TreeBase.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -292,36 +288,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "PrefixRankedBarPattern";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the pattern
-	 */
-	static PrefixRankedBarPattern parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the pattern
-	 * \param pattern the pattern to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const PrefixRankedBarPattern & pattern );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -462,30 +428,6 @@ PrefixRankedBarPattern < SymbolType, RankType >::operator std::string ( ) const
 	return std::move ( ss ).str ( );
 }
 
-template < class SymbolType, class RankType >
-PrefixRankedBarPattern < SymbolType, RankType > PrefixRankedBarPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedBarPattern::getXmlTagName() );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > bars = TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input );
-	common::ranked_symbol < SymbolType, RankType > variablesBarSymbol = TreeFromXMLParser::parseVariablesBar < common::ranked_symbol < SymbolType, RankType > > ( input );
-	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedBarPattern::getXmlTagName() );
-
-	return PrefixRankedBarPattern < SymbolType, RankType > ( std::move ( bars ), std::move ( variablesBarSymbol ), std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( data ) );
-}
-
-template < class SymbolType, class RankType >
-void PrefixRankedBarPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedBarPattern & pattern ) {
-	out.emplace_back ( PrefixRankedBarPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeBars ( out, pattern.getBars() );
-	TreeToXMLComposer::composeVariablesBar ( out, pattern.getVariablesBar() );
-	TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() );
-	TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() );
-	TreeToXMLComposer::composeContent ( out, pattern.m_Data );
-	out.emplace_back ( PrefixRankedBarPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class RankType >
 object::ObjectBase* PrefixRankedBarPattern < SymbolType, RankType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
index 9d416167ab74e4516385a7525266300db9a1ecc2..ce1d344b2452ffcdb07b5478c8a87170756cdd1f 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedBar
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedBarTree < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarTree < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarTree < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarTree < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarTree < > > ( );
-
 static auto PrefixRankedBarTreeFromRankedTree = registration::CastRegister < tree::PrefixRankedBarTree < >, tree::RankedTree < > > ( );
 
 static auto LinearStringFromPrefixRankedBarTree = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedBarTree < > > ( );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
index 8d62a3ba300fb822963139f074bf225d4bc5d487..8273f36475784b9e9eb11c792633a7c2a5f973fe 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -32,16 +32,12 @@
 #include <alib/deque>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
-#include <alphabet/xml/RankedSymbol.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
 #include "../TreeBase.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -238,36 +234,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "PrefixRankedBarTree";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the tree
-	 */
-	static PrefixRankedBarTree parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the tree
-	 * \param tree the tree to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const PrefixRankedBarTree & tree );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -398,26 +364,6 @@ PrefixRankedBarTree < SymbolType, RankType >::operator std::string ( ) const {
 	return std::move ( ss ).str ( );
 }
 
-template < class SymbolType, class RankType >
-PrefixRankedBarTree < SymbolType, RankType > PrefixRankedBarTree < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedBarTree::getXmlTagName() );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > bars = TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedBarTree::getXmlTagName() );
-
-	return PrefixRankedBarTree < SymbolType, RankType > ( std::move ( bars ), std::move ( rankedAlphabet ), std::move ( data ) );
-}
-
-template < class SymbolType, class RankType >
-void PrefixRankedBarTree < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedBarTree & tree ) {
-	out.emplace_back ( PrefixRankedBarTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeBars ( out, tree.getBars() );
-	TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet() );
-	TreeToXMLComposer::composeContent ( out, tree.m_Data );
-	out.emplace_back ( PrefixRankedBarTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class RankType >
 object::ObjectBase* PrefixRankedBarTree < SymbolType, RankType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp
index 4d0edd86a63562acc664d07a6316a056011a8a15..8041e5203a92eee7a6f0416b6cdbfb115e5bb40d 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedNon
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedNonlinearPattern < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedNonlinearPattern < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedNonlinearPattern < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedNonlinearPattern < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedNonlinearPattern < > > ( );
-
 static auto PrefixRankedNonlinearPatternFromRankedTree = registration::CastRegister < tree::PrefixRankedNonlinearPattern < >, tree::RankedTree < > > ( );
 static auto PrefixRankedNonlinearPatternFromRankedPattern = registration::CastRegister < tree::PrefixRankedNonlinearPattern < >, tree::RankedPattern < > > ( );
 static auto PrefixRankedNonlinearPatternFromRankedNonlinearPattern = registration::CastRegister < tree::PrefixRankedNonlinearPattern < >, tree::RankedNonlinearPattern < > > ( );
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
index abe6c55f9ed0c8eee0fda187cd7a73abfd4f495a..c9fc012a9a8d898f970d2d7db6354eab7404705e 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -32,16 +32,12 @@
 #include <alib/deque>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
-#include <alphabet/xml/RankedSymbol.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
 #include "../TreeBase.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -277,36 +273,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName ( ) {
-		static std::string xmlTagName = "PrefixRankedNonlinearPattern";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the pattern
-	 */
-	static PrefixRankedNonlinearPattern parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the pattern
-	 * \param pattern the pattern to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const PrefixRankedNonlinearPattern & pattern );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -448,28 +414,6 @@ PrefixRankedNonlinearPattern < SymbolType, RankType >::operator std::string ( )
 	return std::move ( ss ).str ( );
 }
 
-template < class SymbolType, class RankType >
-PrefixRankedNonlinearPattern < SymbolType, RankType > PrefixRankedNonlinearPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedNonlinearPattern::getXmlTagName ( ) );
-	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedNonlinearPattern::getXmlTagName ( ) );
-
-	return PrefixRankedNonlinearPattern < SymbolType, RankType > ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( data ) );
-}
-
-template < class SymbolType, class RankType >
-void PrefixRankedNonlinearPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedNonlinearPattern & pattern ) {
-	out.emplace_back ( PrefixRankedNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) );
-	TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) );
-	TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) );
-	TreeToXMLComposer::composeContent ( out, pattern.m_Data );
-	out.emplace_back ( PrefixRankedNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class RankType >
 object::ObjectBase* PrefixRankedNonlinearPattern < SymbolType, RankType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
index fc190f77e1a958720d7b85fcaa22fc4e1faefa48..4628b46a558b22fb85f773f6442017a63b4984f2 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedPat
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedPattern < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedPattern < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedPattern < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedPattern < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedPattern < > > ( );
-
 static auto PrefixRankedPatternFromRankedPattern = registration::CastRegister < tree::PrefixRankedPattern < >, tree::RankedPattern < > > ( );
 static auto PrefixRankedPatternFromPrefixRankedTree = registration::CastRegister < tree::PrefixRankedPattern < >, tree::PrefixRankedTree < > > ( );
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h
index cbcae7842acae5c321f46415616c1df875ad5e45..4336b3c93a457598bf2b6094f9a0f788c7a9f873 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -32,16 +32,12 @@
 #include <alib/deque>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
-#include <alphabet/xml/RankedSymbol.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
 #include "../TreeBase.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -226,36 +222,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "PrefixRankedPattern";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the pattern
-	 */
-	static PrefixRankedPattern parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the pattern
-	 * \param pattern the pattern to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const PrefixRankedPattern & pattern );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -378,26 +344,6 @@ PrefixRankedPattern < SymbolType, RankType >::operator std::string ( ) const {
 	return std::move ( ss ).str ( );
 }
 
-template < class SymbolType, class RankType >
-PrefixRankedPattern < SymbolType, RankType > PrefixRankedPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedPattern::getXmlTagName() );
-	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedPattern::getXmlTagName() );
-
-	return PrefixRankedPattern < SymbolType, RankType > ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( data ) );
-}
-
-template < class SymbolType, class RankType >
-void PrefixRankedPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedPattern & pattern ) {
-	out.emplace_back ( PrefixRankedPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() );
-	TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() );
-	TreeToXMLComposer::composeContent ( out, pattern.m_Data );
-	out.emplace_back ( PrefixRankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class RankType >
 object::ObjectBase* PrefixRankedPattern < SymbolType, RankType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.cpp b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
index c4e805b4be6f90a922afb23a943af8346fedccb1..1ec0466b74069143bc767b3b7be9e421ccfe6bf8 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedTre
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedTree < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedTree < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedTree < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedTree < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedTree < > > ( );
-
 static auto PrefixRankedTreeFromRankedTree = registration::CastRegister < tree::PrefixRankedTree < >, tree::RankedTree < > > ( );
 static auto PrefixRankedTreeFromPostfixRankedTree = registration::CastRegister < tree::PrefixRankedTree < >, tree::PostfixRankedTree < > > ( );
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h
index 86ef80109f3677501b8ad03af78729e80f2b899c..a53b6604697d7c61cffc5b70afab374753d23a84 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -32,16 +32,12 @@
 #include <alib/deque>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
-#include <alphabet/xml/RankedSymbol.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
 #include "../TreeBase.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include <tree/common/TreeNormalize.h>
 
 #include <core/normalize.hpp>
@@ -201,36 +197,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "PrefixRankedTree";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the tree
-	 */
-	static PrefixRankedTree parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the tree
-	 * \param tree the tree to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const PrefixRankedTree & tree );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -352,24 +318,6 @@ PrefixRankedTree < SymbolType, RankType >::operator std::string ( ) const {
 	return std::move ( ss ).str ( );
 }
 
-template < class SymbolType, class RankType >
-PrefixRankedTree < SymbolType, RankType > PrefixRankedTree < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedTree::getXmlTagName() );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedTree::getXmlTagName() );
-
-	return PrefixRankedTree < SymbolType, RankType > ( std::move ( rankedAlphabet ), std::move ( data ) );
-}
-
-template < class SymbolType, class RankType >
-void PrefixRankedTree < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedTree & tree ) {
-	out.emplace_back ( PrefixRankedTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet() );
-	TreeToXMLComposer::composeContent ( out, tree.m_Data );
-	out.emplace_back ( PrefixRankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class RankType >
 object::ObjectBase* PrefixRankedTree < SymbolType, RankType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
index 60dced13adf7e4cc7fb960a6d1d7f9f7492f7cb8..3c3be98adda7706cdcfc7c356a6c685d59148a5c 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,10 +19,4 @@ static auto components = registration::ComponentRegister < tree::RankedNonlinear
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::RankedNonlinearPattern < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::RankedNonlinearPattern < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::RankedNonlinearPattern < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedNonlinearPattern < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedNonlinearPattern < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
index d096f7aa2a34cb5f163849caf68b15a81d2180f2..85e7b80cbf424c8079890551705301b6d3e3291a 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -32,16 +32,12 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
-#include <alphabet/xml/RankedSymbol.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
 #include "../TreeBase.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -251,36 +247,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "RankedNonlinearPattern";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the pattern
-	 */
-	static RankedNonlinearPattern parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the pattern
-	 * \param pattern the pattern to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const RankedNonlinearPattern & pattern );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -392,29 +358,6 @@ RankedNonlinearPattern < SymbolType, RankType >::operator std::string ( ) const
 	return ss.str ( );
 }
 
-template < class SymbolType, class RankType >
-RankedNonlinearPattern < SymbolType, RankType > RankedNonlinearPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedNonlinearPattern::getXmlTagName() );
-	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::tree < common::ranked_symbol < SymbolType, RankType > > root = TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input );
-	RankedNonlinearPattern < SymbolType, RankType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( root ) );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedNonlinearPattern::getXmlTagName() );
-	return tree;
-}
-
-template < class SymbolType, class RankType >
-void RankedNonlinearPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const RankedNonlinearPattern & pattern ) {
-	out.emplace_back ( RankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() );
-	TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables() );
-	TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() );
-	TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
-	out.emplace_back ( RankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class RankType >
 object::ObjectBase* RankedNonlinearPattern < SymbolType, RankType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/ranked/RankedPattern.cpp b/alib2data/src/tree/ranked/RankedPattern.cpp
index 7dd5aa02845862cda5d8e822ec94b478ec71f0b8..e51075d3fd07c89364b6e0f727a664a9492917b4 100644
--- a/alib2data/src/tree/ranked/RankedPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedPattern.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::RankedPattern <
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::RankedPattern < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::RankedPattern < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::RankedPattern < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedPattern < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedPattern < > > ( );
-
 static auto RankedPatternFromUnrankedPattern = registration::CastRegister < tree::RankedPattern < >, tree::UnrankedPattern < > > ( );
 
 } /* namespace */
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index 7c82483342e12d6f89c93e9bf052274423225361..20cf26a31466f1ab072f37f4770e4a887c75fb4d 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -32,16 +32,12 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
-#include <alphabet/xml/RankedSymbol.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
 #include "../TreeBase.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -221,36 +217,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "RankedPattern";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the pattern
-	 */
-	static RankedPattern parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the pattern
-	 * \param pattern the pattern to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const RankedPattern & pattern );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -358,27 +324,6 @@ RankedPattern < SymbolType, RankType >::operator std::string ( ) const {
 	return ss.str ( );
 }
 
-template < class SymbolType, class RankType >
-RankedPattern < SymbolType, RankType > RankedPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedPattern::getXmlTagName() );
-	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::tree < common::ranked_symbol < SymbolType, RankType > > root = TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input );
-	RankedPattern < SymbolType, RankType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( root ) );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedPattern::getXmlTagName() );
-	return tree;
-}
-
-template < class SymbolType, class RankType >
-void RankedPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const RankedPattern & pattern ) {
-	out.emplace_back ( RankedPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() );
-	TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() );
-	TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
-	out.emplace_back ( RankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class RankType >
 object::ObjectBase* RankedPattern < SymbolType, RankType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/ranked/RankedTree.cpp b/alib2data/src/tree/ranked/RankedTree.cpp
index 9b015b2920fd9cb7056fd89955a2739d3ddaadad..0d48b48f161a222d73895368bbee3474a71fbf00 100644
--- a/alib2data/src/tree/ranked/RankedTree.cpp
+++ b/alib2data/src/tree/ranked/RankedTree.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::RankedTree < >
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::RankedTree < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::RankedTree < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::RankedTree < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedTree < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedTree < > > ( );
-
 static auto RankedTreeFromUnrankedTree = registration::CastRegister < tree::RankedTree < >, tree::UnrankedTree < > > ( );
 static auto RankedTreeFromPostfixRankedTree = registration::CastRegister < tree::RankedTree < >, tree::PostfixRankedTree < > > ( );
 
diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h
index 960f7b331ca89672303527a54a7d22c8582ce683..f9a09bc1c39a7b43965735c16d2fb4d9c9c428dc 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -32,16 +32,12 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
-#include <alphabet/xml/RankedSymbol.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeBase.h"
 #include "../TreeException.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 
 #include <tree/common/TreeNormalize.h>
@@ -207,36 +203,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "RankedTree";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the tree
-	 */
-	static RankedTree parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the tree
-	 * \param tree the tree to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const RankedTree & tree );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -349,25 +315,6 @@ RankedTree < SymbolType, RankType >::operator std::string ( ) const {
 	return ss.str ( );
 }
 
-template < class SymbolType, class RankType >
-RankedTree < SymbolType, RankType > RankedTree < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedTree::getXmlTagName() );
-	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
-	ext::tree < common::ranked_symbol < SymbolType, RankType > > root = TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input );
-	RankedTree < SymbolType, RankType > tree ( std::move ( rankedAlphabet ), std::move ( root ) );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedTree::getXmlTagName() );
-	return tree;
-}
-
-template < class SymbolType, class RankType >
-void RankedTree < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const RankedTree & tree ) {
-	out.emplace_back ( RankedTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) );
-	TreeToXMLComposer::composeContent ( out, tree.getContent ( ) );
-	out.emplace_back ( RankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class RankType >
 object::ObjectBase* RankedTree < SymbolType, RankType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.cpp b/alib2data/src/tree/unranked/PrefixBarTree.cpp
index 19b1c14024f93ce5b38e2112f4721e3b8fa70786..69a0f8f66852804f79d6360f5cb2f0872c033e3e 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.cpp
+++ b/alib2data/src/tree/unranked/PrefixBarTree.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixBarTree <
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixBarTree < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixBarTree < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::PrefixBarTree < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixBarTree < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixBarTree < > > ( );
-
 static auto PrefixBarTreeFromUnrankedTree = registration::CastRegister < tree::PrefixBarTree < >, tree::UnrankedTree < > > ( );
 
 static auto LinearStringFromPrefixBarTree = registration::CastRegister < string::LinearString < >, tree::PrefixBarTree < > > ( );
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h
index 036981d71f7adf139457040dc4b66f5b9e35e2e8..f1c803cb028b2c60c8f4b721f90f67ceff8860ad 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -31,15 +31,12 @@
 #include <alib/vector>
 #include <alib/tree>
 
-#include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeBase.h"
 #include "../TreeException.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -226,36 +223,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "PrefixBarTree";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the tree
-	 */
-	static PrefixBarTree parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the tree
-	 * \param tree the tree to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const PrefixBarTree & tree );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -379,26 +346,6 @@ PrefixBarTree < SymbolType >::operator std::string ( ) const {
 	return std::move ( ss ).str ( );
 }
 
-template < class SymbolType >
-PrefixBarTree < SymbolType > PrefixBarTree < SymbolType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixBarTree::getXmlTagName() );
-	SymbolType bar = TreeFromXMLParser::parseBar < SymbolType > ( input );
-	ext::set < SymbolType > unrankedAlphabet = TreeFromXMLParser::parseAlphabet < SymbolType > ( input );
-	ext::vector < SymbolType > data = TreeFromXMLParser::parseLinearContent < SymbolType > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixBarTree::getXmlTagName() );
-
-	return PrefixBarTree < SymbolType > ( std::move ( bar ), std::move ( unrankedAlphabet ), std::move ( data ) );
-}
-
-template < class SymbolType >
-void PrefixBarTree < SymbolType >::compose ( ext::deque < sax::Token > & out, const PrefixBarTree & tree ) {
-	out.emplace_back ( PrefixBarTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeBar ( out, tree.getBar ( ) );
-	TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) );
-	TreeToXMLComposer::composeContent ( out, tree.m_Data );
-	out.emplace_back ( PrefixBarTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType >
 object::ObjectBase* PrefixBarTree < SymbolType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp
index 0c70d87e93a52ac96823583e4cba073d46cb22b6..d33e21caff0882883e9356c8d2599695917c4626 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,10 +19,4 @@ static auto components = registration::ComponentRegister < tree::UnrankedNonline
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::UnrankedNonlinearPattern < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedNonlinearPattern < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedNonlinearPattern < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedNonlinearPattern < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedNonlinearPattern < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
index ae8d1f2ccf7385bb65eed99db93fc43950b9f9f9..7321f6db9b7cb706d28c140d2da82f5ce13c89d7 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -32,14 +32,11 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
 #include "../TreeBase.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -240,36 +237,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "UnrankedNonlinearPattern";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the pattern
-	 */
-	static UnrankedNonlinearPattern parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the pattern
-	 * \param pattern the pattern to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const UnrankedNonlinearPattern & pattern );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -371,29 +338,6 @@ UnrankedNonlinearPattern < SymbolType >::operator std::string ( ) const {
 	return ss.str ( );
 }
 
-template < class SymbolType >
-UnrankedNonlinearPattern < SymbolType > UnrankedNonlinearPattern < SymbolType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedNonlinearPattern::getXmlTagName() );
-	SymbolType subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < SymbolType > ( input );
-	ext::set < SymbolType > nonlinearVariables = TreeFromXMLParser::parseNonlinearVariables < SymbolType > ( input );
-	ext::set < SymbolType > rankedAlphabet = TreeFromXMLParser::parseAlphabet < SymbolType > ( input );
-	ext::tree < SymbolType > root = TreeFromXMLParser::parseTreeContent < SymbolType > ( input );
-	UnrankedNonlinearPattern < SymbolType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( root ) );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedNonlinearPattern::getXmlTagName() );
-	return tree;
-}
-
-template < class SymbolType >
-void UnrankedNonlinearPattern < SymbolType >::compose ( ext::deque < sax::Token > & out, const UnrankedNonlinearPattern & pattern ) {
-	out.emplace_back ( UnrankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) );
-	TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) );
-	TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) );
-	TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
-	out.emplace_back ( UnrankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType >
 object::ObjectBase* UnrankedNonlinearPattern < SymbolType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.cpp b/alib2data/src/tree/unranked/UnrankedPattern.cpp
index 2ef1e6d7ed261cf4d373af329d5109671d1b5b3f..66d60543ee4dee5f624e171cbf8adb1d0b686190 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedPattern.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::UnrankedPattern
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::UnrankedPattern < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedPattern < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedPattern < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedPattern < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedPattern < > > ( );
-
 static auto UnrankedPatternFromRankedPattern = registration::CastRegister < tree::UnrankedPattern < >, tree::RankedPattern < > > ( );
 
 } /* namespace */
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h
index 4c2d9fa98be65e5ee34f9c7f9a8923a2a66e5a17..1fd8290864c8eb23e2ee24a831aa1de30c4dfe50 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -32,14 +32,11 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
 #include "../TreeBase.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -211,36 +208,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "UnrankedPattern";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the pattern
-	 */
-	static UnrankedPattern parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the pattern
-	 * \param pattern the pattern to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const UnrankedPattern & pattern );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -338,27 +305,6 @@ UnrankedPattern < SymbolType >::operator std::string ( ) const {
 	return ss.str ( );
 }
 
-template < class SymbolType >
-UnrankedPattern < SymbolType > UnrankedPattern < SymbolType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedPattern::getXmlTagName() );
-	SymbolType subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < SymbolType > ( input );
-	ext::set < SymbolType > rankedAlphabet = TreeFromXMLParser::parseAlphabet < SymbolType > ( input );
-	ext::tree < SymbolType > root = TreeFromXMLParser::parseTreeContent < SymbolType > ( input );
-	UnrankedPattern < SymbolType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( root ) );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedPattern::getXmlTagName() );
-	return tree;
-}
-
-template < class SymbolType >
-void UnrankedPattern < SymbolType >::compose ( ext::deque < sax::Token > & out, const UnrankedPattern & pattern ) {
-	out.emplace_back ( UnrankedPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) );
-	TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) );
-	TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
-	out.emplace_back ( UnrankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType >
 object::ObjectBase* UnrankedPattern < SymbolType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/unranked/UnrankedTree.cpp b/alib2data/src/tree/unranked/UnrankedTree.cpp
index c54d0ffad9da3f36adc118ebe698069a70f31cdf..360bd4f3b07a50c8399dc7fbb6df2e2f15490f1a 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.cpp
+++ b/alib2data/src/tree/unranked/UnrankedTree.cpp
@@ -10,7 +10,6 @@
 #include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::UnrankedTree <
 
 static auto valuePrinter = registration::ValuePrinterRegister < tree::UnrankedTree < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedTree < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedTree < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedTree < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedTree < > > ( );
-
 static auto UnrankedTreeFromRankedTree = registration::CastRegister < tree::UnrankedTree < >, tree::RankedTree < > > ( );
 
 } /* namespace */
diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h
index 3aef8ffa361cc4aa5c628bb5e2279c8ec47d6e52..35c77d48d6e526d915d3bb394b54ff12b7203ba3 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -31,15 +31,12 @@
 #include <alib/algorithm>
 #include <sstream>
 
-#include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeBase.h"
 #include "../TreeException.h"
-#include "../common/TreeFromXMLParser.h"
-#include "../common/TreeToXMLComposer.h"
 #include "../common/TreeAuxiliary.h"
 #include <tree/common/TreeNormalize.h>
 
@@ -189,36 +186,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "UnrankedTree";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the pattern
-	 */
-	static UnrankedTree parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the pattern
-	 * \param pattern the pattern to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const UnrankedTree & tree );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -316,25 +283,6 @@ UnrankedTree < SymbolType >::operator std::string ( ) const {
 	return ss.str ( );
 }
 
-template < class SymbolType >
-UnrankedTree < SymbolType > UnrankedTree < SymbolType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedTree::getXmlTagName() );
-	ext::set < SymbolType > rankedAlphabet = TreeFromXMLParser::parseAlphabet < SymbolType > ( input );
-	ext::tree < SymbolType > root = TreeFromXMLParser::parseTreeContent < SymbolType > ( input );
-	UnrankedTree < SymbolType > tree ( std::move ( rankedAlphabet ), std::move ( root ) );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedTree::getXmlTagName() );
-	return tree;
-}
-
-template < class SymbolType >
-void UnrankedTree < SymbolType >::compose ( ext::deque < sax::Token > & out, const UnrankedTree & tree ) {
-	out.emplace_back ( UnrankedTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-	TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) );
-	TreeToXMLComposer::composeContent ( out, tree.getContent ( ) );
-	out.emplace_back ( UnrankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType >
 object::ObjectBase* UnrankedTree < SymbolType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/tree/common/TreeFromXMLParser.h b/alib2data/src/tree/xml/common/TreeFromXMLParser.h
similarity index 100%
rename from alib2data/src/tree/common/TreeFromXMLParser.h
rename to alib2data/src/tree/xml/common/TreeFromXMLParser.h
diff --git a/alib2data/src/tree/common/TreeToXMLComposer.h b/alib2data/src/tree/xml/common/TreeToXMLComposer.h
similarity index 100%
rename from alib2data/src/tree/common/TreeToXMLComposer.h
rename to alib2data/src/tree/xml/common/TreeToXMLComposer.h
diff --git a/alib2data/src/tree/xml/ranked/PostfixRankedTree.cpp b/alib2data/src/tree/xml/ranked/PostfixRankedTree.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..36f09c7a282108c9cbb2711c675660f85c3d2682
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PostfixRankedTree.cpp
@@ -0,0 +1,22 @@
+/*
+ * PostfixRankedTree.cpp
+ *
+ *  Created on: May 4, 2017
+ *      Author: Aleksandr Shatrovskii
+ */
+
+#include "PostfixRankedTree.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::PostfixRankedTree < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::PostfixRankedTree < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PostfixRankedTree < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PostfixRankedTree < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/ranked/PostfixRankedTree.h b/alib2data/src/tree/xml/ranked/PostfixRankedTree.h
new file mode 100644
index 0000000000000000000000000000000000000000..a3cded10b4a0ddb90e56668bad96dda0a0710dc5
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PostfixRankedTree.h
@@ -0,0 +1,88 @@
+/*
+ * PostfixRankedTree.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: May 4, 2017
+ *      Author: Aleksandr Shatrovskii
+ */
+
+#ifndef _XML_POSTFIX_RANKED_TREE_H_
+#define _XML_POSTFIX_RANKED_TREE_H_
+
+#include <tree/ranked/PostfixRankedTree.h>
+#include <sax/FromXMLParserHelper.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType >
+struct xmlApi < tree::PostfixRankedTree < SymbolType, RankType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName ( ) {
+		static std::string xmlTagName = "PostfixRankedTree";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the tree
+	 */
+	static tree::PostfixRankedTree < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the tree
+	 * \param tree the tree to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::PostfixRankedTree < SymbolType, RankType > & tree );
+};
+
+template < class SymbolType, class RankType >
+tree::PostfixRankedTree < SymbolType, RankType > xmlApi < tree::PostfixRankedTree < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+
+	return tree::PostfixRankedTree < SymbolType, RankType > ( std::move ( rankedAlphabet ), std::move ( data ) );
+}
+
+template < class SymbolType, class RankType >
+void xmlApi < tree::PostfixRankedTree < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PostfixRankedTree < SymbolType, RankType > & tree ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) );
+	tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_POSTFIX_RANKED_TREE_H_ */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5c0c40ae297b1cc7e51ee3142978b4741e941e3d
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.cpp
@@ -0,0 +1,22 @@
+/*
+ * PrefixRankedBarNonlinearPattern.cpp
+ *
+ *  Created on: Jul 20, 2016
+ *      Author: Jan Travnicek
+ */
+
+#include "PrefixRankedBarNonlinearPattern.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarNonlinearPattern < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarNonlinearPattern < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarNonlinearPattern < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarNonlinearPattern < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.h
new file mode 100644
index 0000000000000000000000000000000000000000..bd5bcdf5c162e578b1c9a6b3be7bf2f36c13ff19
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.h
@@ -0,0 +1,96 @@
+/*
+ * PrefixRankedBarNonlinearPattern.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Jul 20, 2016
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_PREFIX_RANKED_BAR_NONLINEAR_PATTERN_H_
+#define _XML_PREFIX_RANKED_BAR_NONLINEAR_PATTERN_H_
+
+#include <tree/ranked/PrefixRankedBarNonlinearPattern.h>
+#include <sax/FromXMLParserHelper.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType >
+struct xmlApi < tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName ( ) {
+		static std::string xmlTagName = "PrefixRankedBarNonlinearPattern";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the pattern
+	 */
+	static tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the pattern
+	 * \param pattern the pattern to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > & pattern );
+};
+
+template < class SymbolType, class RankType >
+tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > xmlApi < tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > bars = tree::TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input );
+	common::ranked_symbol < SymbolType, RankType > variablesBarSymbol = tree::TreeFromXMLParser::parseVariablesBar < common::ranked_symbol < SymbolType, RankType > > ( input );
+	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = tree::TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+
+	return tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > ( std::move ( bars ), std::move ( variablesBarSymbol ), std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( data ) );
+}
+
+template < class SymbolType, class RankType >
+void xmlApi < tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > & pattern ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeBars ( out, pattern.getBars ( ) );
+	tree::TreeToXMLComposer::composeVariablesBar ( out, pattern.getVariablesBar ( ) );
+	tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) );
+	tree::TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) );
+	tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) );
+	tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_PREFIX_RANKED_BAR_NONLINEAR_PATTERN_H_ */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..360776d1fa2e67703a627d15b5c2c93aaf36a12b
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.cpp
@@ -0,0 +1,22 @@
+/*
+ * PrefixRankedBarPattern.cpp
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "PrefixRankedBarPattern.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarPattern < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarPattern < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarPattern < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarPattern < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.h
new file mode 100644
index 0000000000000000000000000000000000000000..5fd5ccaae63123dcbfb198080a5fb791aa5b17c7
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.h
@@ -0,0 +1,94 @@
+/*
+ * PrefixRankedBarPattern.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_PREFIX_RANKED_BAR_PATTERN_H_
+#define _XML_PREFIX_RANKED_BAR_PATTERN_H_
+
+#include <tree/ranked/PrefixRankedBarPattern.h>
+#include <sax/FromXMLParserHelper.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType >
+struct xmlApi < tree::PrefixRankedBarPattern < SymbolType, RankType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "PrefixRankedBarPattern";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the pattern
+	 */
+	static tree::PrefixRankedBarPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the pattern
+	 * \param pattern the pattern to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarPattern < SymbolType, RankType > & pattern );
+};
+
+template < class SymbolType, class RankType >
+tree::PrefixRankedBarPattern < SymbolType, RankType > xmlApi < tree::PrefixRankedBarPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > bars = tree::TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input );
+	common::ranked_symbol < SymbolType, RankType > variablesBarSymbol = tree::TreeFromXMLParser::parseVariablesBar < common::ranked_symbol < SymbolType, RankType > > ( input );
+	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+
+	return tree::PrefixRankedBarPattern < SymbolType, RankType > ( std::move ( bars ), std::move ( variablesBarSymbol ), std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( data ) );
+}
+
+template < class SymbolType, class RankType >
+void xmlApi < tree::PrefixRankedBarPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarPattern < SymbolType, RankType > & pattern ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeBars ( out, pattern.getBars() );
+	tree::TreeToXMLComposer::composeVariablesBar ( out, pattern.getVariablesBar() );
+	tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() );
+	tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() );
+	tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_PREFIX_RANKED_BAR_PATTERN_H_ */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9b575999754f4083b1f7c0e33917bbf27f4868b5
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.cpp
@@ -0,0 +1,22 @@
+/*
+ * PrefixRankedBarTree.cpp
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "PrefixRankedBarTree.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarTree < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarTree < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarTree < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarTree < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.h
new file mode 100644
index 0000000000000000000000000000000000000000..1a0372983b13bc91c337aef19af9eec79bf9d48b
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.h
@@ -0,0 +1,90 @@
+/*
+ * PrefixRankedBarTree.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_PREFIX_RANKED_BAR_TREE_H_
+#define _XML_PREFIX_RANKED_BAR_TREE_H_
+
+#include <tree/ranked/PrefixRankedBarTree.h>
+#include <sax/FromXMLParserHelper.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType >
+struct xmlApi < tree::PrefixRankedBarTree < SymbolType, RankType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "PrefixRankedBarTree";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the tree
+	 */
+	static tree::PrefixRankedBarTree < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the tree
+	 * \param tree the tree to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarTree < SymbolType, RankType > & tree );
+};
+
+template < class SymbolType, class RankType >
+tree::PrefixRankedBarTree < SymbolType, RankType > xmlApi < tree::PrefixRankedBarTree < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > bars = tree::TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+
+	return tree::PrefixRankedBarTree < SymbolType, RankType > ( std::move ( bars ), std::move ( rankedAlphabet ), std::move ( data ) );
+}
+
+template < class SymbolType, class RankType >
+void xmlApi < tree::PrefixRankedBarTree < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarTree < SymbolType, RankType > & tree ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeBars ( out, tree.getBars() );
+	tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet() );
+	tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_PREFIX_RANKED_BAR_TREE_H_ */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cc8d3ea9a04ed83921b6d312df5b264c449bde54
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.cpp
@@ -0,0 +1,22 @@
+/*
+ * PrefixRankedNonlinearPattern.cpp
+ *
+ *  Created on: Jul 20, 2016
+ *      Author: Jan Travnicek
+ */
+
+#include "PrefixRankedNonlinearPattern.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedNonlinearPattern < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedNonlinearPattern < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedNonlinearPattern < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedNonlinearPattern < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.h
new file mode 100644
index 0000000000000000000000000000000000000000..8a311ed974ce181c4a779c4d74b2b5b392245360
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.h
@@ -0,0 +1,92 @@
+/*
+ * PrefixRankedNonlinearPattern.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Jul 20, 2016
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_PREFIX_RANKED_NONLINEAR_PATTERN_H_
+#define _XML_PREFIX_RANKED_NONLINEAR_PATTERN_H_
+
+#include <tree/ranked/PrefixRankedNonlinearPattern.h>
+#include <sax/FromXMLParserHelper.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType >
+struct xmlApi < tree::PrefixRankedNonlinearPattern < SymbolType, RankType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName ( ) {
+		static std::string xmlTagName = "PrefixRankedNonlinearPattern";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the pattern
+	 */
+	static tree::PrefixRankedNonlinearPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the pattern
+	 * \param pattern the pattern to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedNonlinearPattern < SymbolType, RankType > & pattern );
+};
+
+template < class SymbolType, class RankType >
+tree::PrefixRankedNonlinearPattern < SymbolType, RankType > xmlApi < tree::PrefixRankedNonlinearPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = tree::TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+
+	return tree::PrefixRankedNonlinearPattern < SymbolType, RankType > ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( data ) );
+}
+
+template < class SymbolType, class RankType >
+void xmlApi < tree::PrefixRankedNonlinearPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedNonlinearPattern < SymbolType, RankType > & pattern ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) );
+	tree::TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) );
+	tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) );
+	tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_PREFIX_RANKED_NONLINEAR_PATTERN_H_ */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedPattern.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..71b582d100d1395a4a411a899398129049c31f06
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedPattern.cpp
@@ -0,0 +1,22 @@
+/*
+ * PrefixRankedPattern.cpp
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "PrefixRankedPattern.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedPattern < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedPattern < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedPattern < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedPattern < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedPattern.h
new file mode 100644
index 0000000000000000000000000000000000000000..8e0489c839fae8263ffaa6604ea0231603dcbc48
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedPattern.h
@@ -0,0 +1,90 @@
+/*
+ * PrefixRankedPattern.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_PREFIX_RANKED_PATTERN_H_
+#define _XML_PREFIX_RANKED_PATTERN_H_
+
+#include <tree/ranked/PrefixRankedPattern.h>
+#include <sax/FromXMLParserHelper.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType >
+struct xmlApi < tree::PrefixRankedPattern < SymbolType, RankType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "PrefixRankedPattern";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the pattern
+	 */
+	static tree::PrefixRankedPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the pattern
+	 * \param pattern the pattern to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedPattern < SymbolType, RankType > & pattern );
+};
+
+template < class SymbolType, class RankType >
+tree::PrefixRankedPattern < SymbolType, RankType > xmlApi < tree::PrefixRankedPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+
+	return tree::PrefixRankedPattern < SymbolType, RankType > ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( data ) );
+}
+
+template < class SymbolType, class RankType >
+void xmlApi < tree::PrefixRankedPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedPattern < SymbolType, RankType > & pattern ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() );
+	tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() );
+	tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_PREFIX_RANKED_PATTERN_H_ */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedTree.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedTree.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2bed6ee9e58e605e40d7fa7ffe5f7a1742192e58
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedTree.cpp
@@ -0,0 +1,22 @@
+/*
+ * PrefixRankedTree.cpp
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "PrefixRankedTree.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedTree < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedTree < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedTree < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedTree < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedTree.h b/alib2data/src/tree/xml/ranked/PrefixRankedTree.h
new file mode 100644
index 0000000000000000000000000000000000000000..1f16cd053c1b14850a3564ca730fa7074aba0469
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedTree.h
@@ -0,0 +1,88 @@
+/*
+ * PrefixRankedTree.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_PREFIX_RANKED_TREE_H_
+#define _XML_PREFIX_RANKED_TREE_H_
+
+#include <tree/ranked/PrefixRankedTree.h>
+#include <sax/FromXMLParserHelper.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType >
+struct xmlApi < tree::PrefixRankedTree < SymbolType, RankType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "PrefixRankedTree";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the tree
+	 */
+	static tree::PrefixRankedTree < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the tree
+	 * \param tree the tree to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedTree < SymbolType, RankType > & tree );
+};
+
+template < class SymbolType, class RankType >
+tree::PrefixRankedTree < SymbolType, RankType > xmlApi < tree::PrefixRankedTree < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+
+	return tree::PrefixRankedTree < SymbolType, RankType > ( std::move ( rankedAlphabet ), std::move ( data ) );
+}
+
+template < class SymbolType, class RankType >
+void xmlApi < tree::PrefixRankedTree < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedTree < SymbolType, RankType > & tree ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet() );
+	tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_PREFIX_RANKED_TREE_H_ */
diff --git a/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.cpp b/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c4d6c5dce9e9f52d6e23b10d15cbecf9be66c0e3
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.cpp
@@ -0,0 +1,22 @@
+/*
+ * RankedNonlinearPattern.cpp
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "RankedNonlinearPattern.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::RankedNonlinearPattern < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::RankedNonlinearPattern < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedNonlinearPattern < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedNonlinearPattern < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.h
new file mode 100644
index 0000000000000000000000000000000000000000..970049092d8c118db54129a54edf888f2342af86
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.h
@@ -0,0 +1,93 @@
+/*
+ * RankedNonlinearPattern.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_RANKED_NONLINEAR_PATTERN_H_
+#define _XML_RANKED_NONLINEAR_PATTERN_H_
+
+#include <tree/ranked/RankedNonlinearPattern.h>
+#include <sax/FromXMLParserHelper.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType >
+struct xmlApi < tree::RankedNonlinearPattern < SymbolType, RankType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "RankedNonlinearPattern";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the pattern
+	 */
+	static tree::RankedNonlinearPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the pattern
+	 * \param pattern the pattern to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::RankedNonlinearPattern < SymbolType, RankType > & pattern );
+};
+
+template < class SymbolType, class RankType >
+tree::RankedNonlinearPattern < SymbolType, RankType > xmlApi < tree::RankedNonlinearPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = tree::TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::tree < common::ranked_symbol < SymbolType, RankType > > root = tree::TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input );
+	tree::RankedNonlinearPattern < SymbolType, RankType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( root ) );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return tree;
+}
+
+template < class SymbolType, class RankType >
+void xmlApi < tree::RankedNonlinearPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::RankedNonlinearPattern < SymbolType, RankType > & pattern ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() );
+	tree::TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables() );
+	tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() );
+	tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_RANKED_NONLINEAR_PATTERN_H_ */
diff --git a/alib2data/src/tree/xml/ranked/RankedPattern.cpp b/alib2data/src/tree/xml/ranked/RankedPattern.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8817ae3ca4a0f77f2bd379296487ad994da8ee25
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/RankedPattern.cpp
@@ -0,0 +1,22 @@
+/*
+ * RankedPattern.cpp
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "RankedPattern.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::RankedPattern < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::RankedPattern < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedPattern < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedPattern < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/ranked/RankedPattern.h b/alib2data/src/tree/xml/ranked/RankedPattern.h
new file mode 100644
index 0000000000000000000000000000000000000000..2476fb6e298539cbd99778f0f3b7e367fddcb86f
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/RankedPattern.h
@@ -0,0 +1,91 @@
+/*
+ * RankedPattern.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_RANKED_PATTERN_H_
+#define _XML_RANKED_PATTERN_H_
+
+#include <tree/ranked/RankedPattern.h>
+#include <sax/FromXMLParserHelper.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType >
+struct xmlApi < tree::RankedPattern < SymbolType, RankType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "RankedPattern";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the pattern
+	 */
+	static tree::RankedPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the pattern
+	 * \param pattern the pattern to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::RankedPattern < SymbolType, RankType > & pattern );
+};
+
+template < class SymbolType, class RankType >
+tree::RankedPattern < SymbolType, RankType > xmlApi < tree::RankedPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::tree < common::ranked_symbol < SymbolType, RankType > > root = tree::TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input );
+	tree::RankedPattern < SymbolType, RankType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( root ) );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return tree;
+}
+
+template < class SymbolType, class RankType >
+void xmlApi < tree::RankedPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::RankedPattern < SymbolType, RankType > & pattern ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() );
+	tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() );
+	tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_RANKED_PATTERN_H_ */
diff --git a/alib2data/src/tree/xml/ranked/RankedTree.cpp b/alib2data/src/tree/xml/ranked/RankedTree.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..47296deea33058fc405beaa4233a82ebc85cd631
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/RankedTree.cpp
@@ -0,0 +1,22 @@
+/*
+ * RankedTree.cpp
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Stepan Plachy
+ */
+
+#include "RankedTree.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::RankedTree < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::RankedTree < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedTree < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedTree < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/ranked/RankedTree.h b/alib2data/src/tree/xml/ranked/RankedTree.h
new file mode 100644
index 0000000000000000000000000000000000000000..f99889340f1584f448ac4157149dbad6c1f5de07
--- /dev/null
+++ b/alib2data/src/tree/xml/ranked/RankedTree.h
@@ -0,0 +1,93 @@
+/*
+ * RankedTree.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Stepan Plachy
+ */
+
+#ifndef _XML_RANKED_TREE_H_
+#define _XML_RANKED_TREE_H_
+
+#include <tree/ranked/RankedTree.h>
+#include <sax/FromXMLParserHelper.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType >
+struct xmlApi < tree::RankedTree < SymbolType, RankType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "RankedTree";
+
+		return xmlTagName;
+	}
+
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the tree
+	 */
+	static tree::RankedTree < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the tree
+	 * \param tree the tree to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::RankedTree < SymbolType, RankType > & tree );
+};
+
+template < class SymbolType, class RankType >
+tree::RankedTree < SymbolType, RankType > xmlApi < tree::RankedTree < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input );
+	ext::tree < common::ranked_symbol < SymbolType, RankType > > root = tree::TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input );
+	tree::RankedTree < SymbolType, RankType > tree ( std::move ( rankedAlphabet ), std::move ( root ) );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return tree;
+}
+
+template < class SymbolType, class RankType >
+void xmlApi < tree::RankedTree < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::RankedTree < SymbolType, RankType > & tree ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) );
+	tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_RANKED_TREE_H_ */
diff --git a/alib2data/src/tree/xml/unranked/PrefixBarTree.cpp b/alib2data/src/tree/xml/unranked/PrefixBarTree.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..999f34ee34da73aaefb5d3864de0cdb965a47391
--- /dev/null
+++ b/alib2data/src/tree/xml/unranked/PrefixBarTree.cpp
@@ -0,0 +1,22 @@
+/*
+ * PrefixBarTree.cpp
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "PrefixBarTree.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixBarTree < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::PrefixBarTree < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixBarTree < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixBarTree < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/unranked/PrefixBarTree.h b/alib2data/src/tree/xml/unranked/PrefixBarTree.h
new file mode 100644
index 0000000000000000000000000000000000000000..89373bd9676fcbeca747afc50df4a5e54d316aa9
--- /dev/null
+++ b/alib2data/src/tree/xml/unranked/PrefixBarTree.h
@@ -0,0 +1,89 @@
+/*
+ * PrefixBarTree.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_PREFIX_BAR_TREE_H_
+#define _XML_PREFIX_BAR_TREE_H_
+
+#include <tree/unranked/PrefixBarTree.h>
+#include <sax/FromXMLParserHelper.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType >
+struct xmlApi < tree::PrefixBarTree < SymbolType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "PrefixBarTree";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the tree
+	 */
+	static tree::PrefixBarTree < SymbolType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the tree
+	 * \param tree the tree to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::PrefixBarTree < SymbolType > & tree );
+};
+
+template < class SymbolType >
+tree::PrefixBarTree < SymbolType > xmlApi < tree::PrefixBarTree < SymbolType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	SymbolType bar = tree::TreeFromXMLParser::parseBar < SymbolType > ( input );
+	ext::set < SymbolType > unrankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < SymbolType > ( input );
+	ext::vector < SymbolType > data = tree::TreeFromXMLParser::parseLinearContent < SymbolType > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+
+	return tree::PrefixBarTree < SymbolType > ( std::move ( bar ), std::move ( unrankedAlphabet ), std::move ( data ) );
+}
+
+template < class SymbolType >
+void xmlApi < tree::PrefixBarTree < SymbolType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixBarTree < SymbolType > & tree ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeBar ( out, tree.getBar ( ) );
+	tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) );
+	tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_PREFIX_BAR_TREE_H_ */
diff --git a/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.cpp b/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..77de071ad2892569efc088128f93547898446825
--- /dev/null
+++ b/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.cpp
@@ -0,0 +1,22 @@
+/*
+ * UnrankedNonlinearPattern.cpp
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "UnrankedNonlinearPattern.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedNonlinearPattern < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedNonlinearPattern < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedNonlinearPattern < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedNonlinearPattern < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.h
new file mode 100644
index 0000000000000000000000000000000000000000..d33c9ea887049e47f5c9df0626c470b057771f3a
--- /dev/null
+++ b/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.h
@@ -0,0 +1,92 @@
+/*
+ * UnrankedNonlinearPattern.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_UNRANKED_NONLINEAR_PATTERN_H_
+#define _XML_UNRANKED_NONLINEAR_PATTERN_H_
+
+#include <tree/unranked/UnrankedNonlinearPattern.h>
+#include <sax/FromXMLParserHelper.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType >
+struct xmlApi < tree::UnrankedNonlinearPattern < SymbolType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "UnrankedNonlinearPattern";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the pattern
+	 */
+	static tree::UnrankedNonlinearPattern < SymbolType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the pattern
+	 * \param pattern the pattern to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::UnrankedNonlinearPattern < SymbolType > & pattern );
+};
+
+template < class SymbolType >
+tree::UnrankedNonlinearPattern < SymbolType > xmlApi < tree::UnrankedNonlinearPattern < SymbolType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	SymbolType subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < SymbolType > ( input );
+	ext::set < SymbolType > nonlinearVariables = tree::TreeFromXMLParser::parseNonlinearVariables < SymbolType > ( input );
+	ext::set < SymbolType > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < SymbolType > ( input );
+	ext::tree < SymbolType > root = tree::TreeFromXMLParser::parseTreeContent < SymbolType > ( input );
+	tree::UnrankedNonlinearPattern < SymbolType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( root ) );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return tree;
+}
+
+template < class SymbolType >
+void xmlApi < tree::UnrankedNonlinearPattern < SymbolType > >::compose ( ext::deque < sax::Token > & out, const tree::UnrankedNonlinearPattern < SymbolType > & pattern ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) );
+	tree::TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) );
+	tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) );
+	tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_UNRANKED_NONLINEAR_PATTERN_H_ */
diff --git a/alib2data/src/tree/xml/unranked/UnrankedPattern.cpp b/alib2data/src/tree/xml/unranked/UnrankedPattern.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f84704cbcdbb005359fadd5483d28c1ae0f88a9a
--- /dev/null
+++ b/alib2data/src/tree/xml/unranked/UnrankedPattern.cpp
@@ -0,0 +1,22 @@
+/*
+ * UnrankedPattern.cpp
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "UnrankedPattern.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedPattern < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedPattern < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedPattern < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedPattern < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/unranked/UnrankedPattern.h b/alib2data/src/tree/xml/unranked/UnrankedPattern.h
new file mode 100644
index 0000000000000000000000000000000000000000..6ed06e27448e9aaf3b12b9bd1197c0d2f35adc9a
--- /dev/null
+++ b/alib2data/src/tree/xml/unranked/UnrankedPattern.h
@@ -0,0 +1,90 @@
+/*
+ * UnrankedPattern.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_UNRANKED_PATTERN_H_
+#define _XML_UNRANKED_PATTERN_H_
+
+#include <tree/unranked/UnrankedPattern.h>
+#include <sax/FromXMLParserHelper.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType >
+struct xmlApi < tree::UnrankedPattern < SymbolType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "UnrankedPattern";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the pattern
+	 */
+	static tree::UnrankedPattern < SymbolType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the pattern
+	 * \param pattern the pattern to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::UnrankedPattern < SymbolType > & pattern );
+};
+
+template < class SymbolType >
+tree::UnrankedPattern < SymbolType > xmlApi < tree::UnrankedPattern < SymbolType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	SymbolType subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < SymbolType > ( input );
+	ext::set < SymbolType > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < SymbolType > ( input );
+	ext::tree < SymbolType > root = tree::TreeFromXMLParser::parseTreeContent < SymbolType > ( input );
+	tree::UnrankedPattern < SymbolType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( root ) );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return tree;
+}
+
+template < class SymbolType >
+void xmlApi < tree::UnrankedPattern < SymbolType > >::compose ( ext::deque < sax::Token > & out, const tree::UnrankedPattern < SymbolType > & pattern ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) );
+	tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) );
+	tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_UNRANKED_PATTERN_H_ */
diff --git a/alib2data/src/tree/xml/unranked/UnrankedTree.cpp b/alib2data/src/tree/xml/unranked/UnrankedTree.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b57cba92a8f936545b4d3e4e1c20a0da427d9612
--- /dev/null
+++ b/alib2data/src/tree/xml/unranked/UnrankedTree.cpp
@@ -0,0 +1,22 @@
+/*
+ * UnrankedTree.cpp
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Stepan Plachy
+ */
+
+#include "UnrankedTree.h"
+#include <tree/Tree.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedTree < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedTree < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedTree < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedTree < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/tree/xml/unranked/UnrankedTree.h b/alib2data/src/tree/xml/unranked/UnrankedTree.h
new file mode 100644
index 0000000000000000000000000000000000000000..de52ad7738187fc18e01c46abfbf475f4bf19f47
--- /dev/null
+++ b/alib2data/src/tree/xml/unranked/UnrankedTree.h
@@ -0,0 +1,92 @@
+/*
+ * UnrankedTree.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Nov 23, 2013
+ *      Author: Stepan Plachy
+ */
+
+#ifndef _XML_UNRANKED_TREE_H_
+#define _XML_UNRANKED_TREE_H_
+
+#include <tree/unranked/UnrankedTree.h>
+#include <sax/FromXMLParserHelper.h>
+#include "../common/TreeFromXMLParser.h"
+#include "../common/TreeToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType >
+struct xmlApi < tree::UnrankedTree < SymbolType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "UnrankedTree";
+
+		return xmlTagName;
+	}
+
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the pattern
+	 */
+	static tree::UnrankedTree < SymbolType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the pattern
+	 * \param pattern the pattern to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const tree::UnrankedTree < SymbolType > & tree );
+};
+
+template < class SymbolType >
+tree::UnrankedTree < SymbolType > xmlApi < tree::UnrankedTree < SymbolType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	ext::set < SymbolType > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < SymbolType > ( input );
+	ext::tree < SymbolType > root = tree::TreeFromXMLParser::parseTreeContent < SymbolType > ( input );
+	tree::UnrankedTree < SymbolType > tree ( std::move ( rankedAlphabet ), std::move ( root ) );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return tree;
+}
+
+template < class SymbolType >
+void xmlApi < tree::UnrankedTree < SymbolType > >::compose ( ext::deque < sax::Token > & out, const tree::UnrankedTree < SymbolType > & tree ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+	tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) );
+	tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) );
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_UNRANKED_TREE_H_ */
diff --git a/alib2data/test-src/tree/PatternTest.cpp b/alib2data/test-src/tree/PatternTest.cpp
index e800aa0adba001bb06cfed9d0da95d79e13b22de..03ff89765eb09569c6be78bfc329a87ad694ef5c 100644
--- a/alib2data/test-src/tree/PatternTest.cpp
+++ b/alib2data/test-src/tree/PatternTest.cpp
@@ -4,9 +4,13 @@
 #include "sax/SaxComposeInterface.h"
 
 #include "tree/unranked/UnrankedPattern.h"
+#include "tree/xml/unranked/UnrankedPattern.h"
 #include "tree/ranked/RankedPattern.h"
+#include "tree/xml/ranked/RankedPattern.h"
 #include "tree/ranked/PrefixRankedPattern.h"
+#include "tree/xml/ranked/PrefixRankedPattern.h"
 #include "tree/ranked/PrefixRankedBarPattern.h"
+#include "tree/xml/ranked/PrefixRankedBarPattern.h"
 
 #include "tree/TreeException.h"
 
diff --git a/alib2data/test-src/tree/TreeTest.cpp b/alib2data/test-src/tree/TreeTest.cpp
index f40573c989812a861a2d40254aeb6d00e2529d30..ab6d01abbec44bf6324c15bee1c0359a5d3f0ab4 100644
--- a/alib2data/test-src/tree/TreeTest.cpp
+++ b/alib2data/test-src/tree/TreeTest.cpp
@@ -4,10 +4,15 @@
 #include "sax/SaxComposeInterface.h"
 
 #include "tree/ranked/RankedTree.h"
+#include "tree/xml/ranked/RankedTree.h"
 #include "tree/unranked/UnrankedTree.h"
+#include "tree/xml/unranked/UnrankedTree.h"
 #include "tree/ranked/PrefixRankedTree.h"
+#include "tree/xml/ranked/PrefixRankedTree.h"
 #include "tree/ranked/PrefixRankedBarTree.h"
+#include "tree/xml/ranked/PrefixRankedBarTree.h"
 #include "tree/ranked/RankedPattern.h"
+#include "tree/xml/ranked/RankedPattern.h"
 
 #include "tree/TreeException.h"
 
diff --git a/tniceprint/src/tniceprint.cpp b/tniceprint/src/tniceprint.cpp
index 4af9f005ea40b631acbb47902073f6ec75b31032..51f3090c91906330caf640df6393d43c36817b7b 100644
--- a/tniceprint/src/tniceprint.cpp
+++ b/tniceprint/src/tniceprint.cpp
@@ -14,7 +14,9 @@
 #include <factory/XmlDataFactory.hpp>
 #include <tree/Tree.h>
 #include <tree/ranked/RankedTree.h>
+#include <tree/xml/ranked/RankedTree.h>
 #include <tree/unranked/UnrankedTree.h>
+#include <tree/xml/unranked/UnrankedTree.h>
 
 int main(int argc, char** argv) {
 	try {