From 825ae70f3e5c1b9edfc1e4f8ac2c754fde665b02 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Sun, 26 Jul 2015 16:25:58 +0200
Subject: [PATCH] finish refactoring xmlApi

---
 alib2data/src/XmlApi.cpp                      | 358 ------------------
 alib2data/src/XmlApi.hpp                      | 152 +-------
 alib2data/src/XmlApiBase.h                    |   2 -
 alib2data/src/alphabet/BarSymbol.cpp          |   2 +
 alib2data/src/alphabet/BlankSymbol.cpp        |   2 +
 .../src/alphabet/BottomOfTheStackSymbol.cpp   |   2 +
 alib2data/src/alphabet/EndSymbol.cpp          |   2 +
 alib2data/src/alphabet/LabeledSymbol.cpp      |   2 +
 alib2data/src/alphabet/RankedSymbol.cpp       |   2 +
 alib2data/src/alphabet/StartSymbol.cpp        |   2 +
 .../src/alphabet/SubtreeWildcardSymbol.cpp    |   2 +
 alib2data/src/alphabet/SymbolBase.h           |   4 -
 alib2data/src/alphabet/SymbolPairSymbol.cpp   |   2 +
 alib2data/src/alphabet/SymbolSetSymbol.cpp    |   2 +
 alib2data/src/alphabet/UniqueSymbol.cpp       |   2 +
 alib2data/src/alphabet/VariablesBarSymbol.cpp |   2 +
 alib2data/src/automaton/AutomatonBase.h       |   2 -
 alib2data/src/automaton/FSM/CompactNFA.cpp    |   2 +
 alib2data/src/automaton/FSM/DFA.cpp           |   2 +
 alib2data/src/automaton/FSM/EpsilonNFA.cpp    |   2 +
 alib2data/src/automaton/FSM/ExtendedNFA.cpp   |   2 +
 .../automaton/FSM/MultiInitialStateNFA.cpp    |   2 +
 alib2data/src/automaton/FSM/NFA.cpp           |   2 +
 alib2data/src/automaton/PDA/DPDA.cpp          |   2 +
 .../src/automaton/PDA/InputDrivenDPDA.cpp     |   2 +
 .../src/automaton/PDA/InputDrivenNPDA.cpp     |   2 +
 alib2data/src/automaton/PDA/NPDA.cpp          |   2 +
 .../PDA/RealTimeHeightDeterministicDPDA.cpp   |   2 +
 .../PDA/RealTimeHeightDeterministicNPDA.cpp   |   2 +
 alib2data/src/automaton/PDA/SinglePopDPDA.cpp |   2 +
 alib2data/src/automaton/PDA/SinglePopNPDA.cpp |   2 +
 .../src/automaton/PDA/VisiblyPushdownDPDA.cpp |   2 +
 .../src/automaton/PDA/VisiblyPushdownNPDA.cpp |   2 +
 alib2data/src/automaton/TA/DFTA.cpp           |   2 +
 alib2data/src/automaton/TA/NFTA.cpp           |   2 +
 alib2data/src/automaton/TM/OneTapeDTM.cpp     |   2 +
 alib2data/src/automaton/common/State.h        |   2 +-
 .../container/ContainerFromXMLParser.hpp.tmp  |  31 +-
 alib2data/src/container/ObjectsMap.cpp        |   2 +
 alib2data/src/container/ObjectsPair.cpp       |   2 +
 alib2data/src/container/ObjectsSet.cpp        |   2 +
 alib2data/src/container/ObjectsVector.cpp     |   2 +
 alib2data/src/exception/AlibException.cpp     |   8 +
 alib2data/src/grammar/ContextFree/CFG.cpp     |   2 +
 alib2data/src/grammar/ContextFree/CNF.cpp     |   2 +
 .../grammar/ContextFree/EpsilonFreeCFG.cpp    |   2 +
 alib2data/src/grammar/ContextFree/GNF.cpp     |   2 +
 alib2data/src/grammar/ContextFree/LG.cpp      |   2 +
 .../src/grammar/ContextSensitive/CSG.cpp      |   2 +
 .../NonContractingGrammar.cpp                 |   4 +-
 alib2data/src/grammar/GrammarBase.h           |   2 -
 alib2data/src/grammar/Regular/LeftLG.cpp      |   2 +
 alib2data/src/grammar/Regular/LeftRG.cpp      |   2 +
 alib2data/src/grammar/Regular/RightLG.cpp     |   2 +
 alib2data/src/grammar/Regular/RightRG.cpp     |   2 +
 .../ContextPreservingUnrestrictedGrammar.cpp  |   2 +
 .../Unrestricted/UnrestrictedGrammar.cpp      |   2 +
 .../grammar/common/GrammarFromXMLParser.cpp   |   1 -
 .../src/grammar/common/GrammarFromXMLParser.h |   2 +-
 .../src/grammar/common/GrammarToXMLComposer.h |   1 -
 alib2data/src/graph/GraphBase.h               |   4 -
 .../src/graph/directed/DirectedGraph.cpp      |   2 +
 .../src/graph/undirected/UndirectedGraph.cpp  |   2 +
 alib2data/src/label/HexavigesimalLabel.cpp    |   2 +
 alib2data/src/label/LabelBase.h               |   4 -
 alib2data/src/label/LabelPairLabel.cpp        |   2 +
 alib2data/src/label/LabelSetLabel.cpp         |   4 +-
 alib2data/src/label/ObjectLabel.cpp           |   2 +
 alib2data/src/label/PrimitiveLabel.cpp        |   2 +
 alib2data/src/label/UniqueLabel.cpp           |   2 +
 alib2data/src/object/ObjectBase.h             |   5 +-
 alib2data/src/object/ObjectFromXMLParser.cpp  |  80 ----
 alib2data/src/object/ObjectFromXMLParser.h    |  35 --
 alib2data/src/object/ObjectToXMLComposer.cpp  |  25 --
 alib2data/src/object/ObjectToXMLComposer.h    |  45 ---
 alib2data/src/object/Void.cpp                 |   7 +
 alib2data/src/primitive/Bool.cpp              |   3 +-
 alib2data/src/primitive/Bool.h                |   2 +-
 alib2data/src/primitive/Character.cpp         |   3 +-
 alib2data/src/primitive/Character.h           |   2 +-
 alib2data/src/primitive/Integer.cpp           |   3 +-
 alib2data/src/primitive/Integer.h             |   2 +-
 alib2data/src/primitive/PrimitiveBase.h       |   2 -
 alib2data/src/primitive/String.cpp            |   3 +-
 alib2data/src/primitive/String.h              |   2 +-
 alib2data/src/primitive/Unsigned.cpp          |   3 +-
 alib2data/src/primitive/Unsigned.h            |   2 +-
 alib2data/src/regexp/RegExpBase.h             |   4 -
 .../src/regexp/common/RegExpFromXMLParser.cpp |   2 +-
 .../src/regexp/common/RegExpFromXMLParser.h   |   1 -
 .../src/regexp/common/RegExpToXMLComposer.cpp |   2 +-
 .../src/regexp/common/RegExpToXMLComposer.h   |   1 -
 alib2data/src/regexp/formal/FormalRegExp.cpp  |   2 +
 .../src/regexp/unbounded/UnboundedRegExp.cpp  |   2 +
 alib2data/src/string/CyclicString.cpp         |   2 +
 alib2data/src/string/Epsilon.cpp              |   2 +
 alib2data/src/string/LinearString.cpp         |   2 +
 alib2data/src/string/StringBase.h             |   4 -
 alib2data/src/tree/TreeBase.h                 |   4 -
 alib2data/src/tree/TreeToRawComposer.cpp      |   1 -
 alib2data/src/tree/TreeToRawComposer.h        |   1 -
 .../tree/ranked/PrefixRankedBarPattern.cpp    |   2 +
 .../src/tree/ranked/PrefixRankedBarTree.cpp   |   2 +
 .../src/tree/ranked/PrefixRankedPattern.cpp   |   2 +
 .../src/tree/ranked/PrefixRankedTree.cpp      |   2 +
 alib2data/src/tree/ranked/RankedPattern.cpp   |   2 +
 alib2data/src/tree/ranked/RankedTree.cpp      |   2 +
 .../src/tree/unranked/UnrankedPattern.cpp     |   2 +
 alib2data/src/tree/unranked/UnrankedTree.cpp  |   2 +
 109 files changed, 211 insertions(+), 748 deletions(-)
 delete mode 100644 alib2data/src/XmlApi.cpp
 delete mode 100644 alib2data/src/object/ObjectFromXMLParser.cpp
 delete mode 100644 alib2data/src/object/ObjectFromXMLParser.h
 delete mode 100644 alib2data/src/object/ObjectToXMLComposer.cpp
 delete mode 100644 alib2data/src/object/ObjectToXMLComposer.h

diff --git a/alib2data/src/XmlApi.cpp b/alib2data/src/XmlApi.cpp
deleted file mode 100644
index f4100981fe..0000000000
--- a/alib2data/src/XmlApi.cpp
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * XmlApi.cpp
- *
- * Created on: Apr 1, 2013
- * Author: Jan Travnicek
- */
-
-#include "XmlApi.hpp"
-
-#include "alphabet/Symbol.h"
-#include "alphabet/SymbolClasses.h"
-#include "label/Label.h"
-#include "label/LabelClasses.h"
-#include "primitive/Primitive.h"
-#include "primitive/PrimitiveClasses.h"
-#include "object/ObjectClasses.h"
-#include "exception/ExceptionClasses.h"
-#include "string/String.h"
-#include "string/StringClasses.h"
-#include "automaton/Automaton.h"
-#include "automaton/AutomatonClasses.h"
-#include "container/Container.h"
-#include "container/ContainerClasses.h"
-#include "grammar/Grammar.h"
-#include "grammar/GrammarClasses.h"
-#include "regexp/RegExp.h"
-#include "regexp/RegExpClasses.h"
-#include "tree/Tree.h"
-#include "tree/TreeClasses.h"
-#include "graph/Graph.h"
-#include "graph/GraphClasses.h"
-
-namespace alib {
-
-const alib::ObjectFromXMLParser FromXMLParsers::objectParser;
-
-const alib::ObjectToXMLComposer ToXMLComposers::objectComposer;
-
-const ToXMLComposers ToXMLComposers::toXMLComposers;
-
-alib::Object xmlApi<alib::Object>::parse(std::deque<sax::Token>::iterator& input) {
-	return FromXMLParsers::objectParser.parseObject(input);
-}
-
-bool xmlApi<alib::Object>::first(const std::deque<sax::Token>::const_iterator& input) {
-	return FromXMLParsers::objectParser.first(input);
-}
-
-void xmlApi<alib::Object>::compose(std::deque<sax::Token>& output, const alib::Object& data) {
-	ToXMLComposers::objectComposer.compose(output, data);
-}
-
-
-void ToXMLComposers::Visit(void* data, const Void& voidObject) const {
-	xmlApi<Void>::compose(*((std::deque<sax::Token>*) data), voidObject);
-}
-
-void ToXMLComposers::Visit(void* data, const container::ObjectsSet& container) const {
-	xmlApi<container::ObjectsSet>::compose(*((std::deque<sax::Token>*) data), container);
-}
-
-void ToXMLComposers::Visit(void* data, const container::ObjectsVector& container) const {
-	xmlApi<container::ObjectsVector>::compose(*((std::deque<sax::Token>*) data), container);
-}
-
-void ToXMLComposers::Visit(void* data, const container::ObjectsPair& container) const {
-	xmlApi<container::ObjectsPair>::compose(*((std::deque<sax::Token>*) data), container);
-}
-
-void ToXMLComposers::Visit(void* data, const container::ObjectsMap& container) const {
-	xmlApi<container::ObjectsMap>::compose(*((std::deque<sax::Token>*) data), container);
-}
-
-void ToXMLComposers::Visit(void* data, const exception::AlibException& symbol) const {
-	xmlApi<exception::AlibException>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::BlankSymbol& symbol) const {
-	xmlApi<alphabet::BlankSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::BottomOfTheStackSymbol& symbol) const {
-	xmlApi<alphabet::BottomOfTheStackSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::EndSymbol& symbol) const {
-	xmlApi<alphabet::EndSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::StartSymbol& symbol) const {
-	xmlApi<alphabet::StartSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::RankedSymbol& symbol) const {
-	xmlApi<alphabet::RankedSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::BarSymbol& symbol) const {
-	xmlApi<alphabet::BarSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::VariablesBarSymbol& symbol) const {
-	xmlApi<alphabet::VariablesBarSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::SubtreeWildcardSymbol& symbol) const {
-	xmlApi<alphabet::SubtreeWildcardSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::LabeledSymbol& symbol) const {
-	xmlApi<alphabet::LabeledSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::SymbolSetSymbol& symbol) const {
-	xmlApi<alphabet::SymbolSetSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::SymbolPairSymbol& symbol) const {
-	xmlApi<alphabet::SymbolPairSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const alphabet::UniqueSymbol& symbol) const {
-	xmlApi<alphabet::UniqueSymbol>::compose(*((std::deque<sax::Token>*) data), symbol);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::EpsilonNFA& automaton) const {
-	xmlApi<automaton::EpsilonNFA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::MultiInitialStateNFA& automaton) const {
-	xmlApi<automaton::MultiInitialStateNFA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::NFA& automaton) const {
-	xmlApi<automaton::NFA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::DFA& automaton) const {
-	xmlApi<automaton::DFA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::ExtendedNFA& automaton) const {
-	xmlApi<automaton::ExtendedNFA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::CompactNFA& automaton) const {
-	xmlApi<automaton::CompactNFA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::DFTA& automaton) const {
-	xmlApi<automaton::DFTA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::NFTA& automaton) const {
-	xmlApi<automaton::NFTA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::DPDA& automaton) const {
-	xmlApi<automaton::DPDA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::SinglePopDPDA& automaton) const {
-	xmlApi<automaton::SinglePopDPDA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::InputDrivenDPDA& automaton) const {
-	xmlApi<automaton::InputDrivenDPDA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::InputDrivenNPDA& automaton) const {
-	xmlApi<automaton::InputDrivenNPDA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::VisiblyPushdownDPDA& automaton) const {
-	xmlApi<automaton::VisiblyPushdownDPDA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::VisiblyPushdownNPDA& automaton) const {
-	xmlApi<automaton::VisiblyPushdownNPDA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::RealTimeHeightDeterministicDPDA& automaton) const {
-	xmlApi<automaton::RealTimeHeightDeterministicDPDA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::RealTimeHeightDeterministicNPDA& automaton) const {
-	xmlApi<automaton::RealTimeHeightDeterministicNPDA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::NPDA& automaton) const {
-	xmlApi<automaton::NPDA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::SinglePopNPDA& automaton) const {
-	xmlApi<automaton::SinglePopNPDA>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const automaton::OneTapeDTM& automaton) const {
-	xmlApi<automaton::OneTapeDTM>::compose(*((std::deque<sax::Token>*) data), automaton);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::LeftLG& grammar) const {
-	xmlApi<grammar::LeftLG>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::LeftRG& grammar) const {
-	xmlApi<grammar::LeftRG>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::RightLG& grammar) const {
-	xmlApi<grammar::RightLG>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::RightRG& grammar) const {
-	xmlApi<grammar::RightRG>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::LG& grammar) const {
-	xmlApi<grammar::LG>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::CFG& grammar) const {
-	xmlApi<grammar::CFG>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::EpsilonFreeCFG& grammar) const {
-	xmlApi<grammar::EpsilonFreeCFG>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::CNF& grammar) const {
-	xmlApi<grammar::CNF>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::GNF& grammar) const {
-	xmlApi<grammar::GNF>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::CSG& grammar) const {
-	xmlApi<grammar::CSG>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::NonContractingGrammar& grammar) const {
-	xmlApi<grammar::NonContractingGrammar>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::ContextPreservingUnrestrictedGrammar& grammar) const {
-	xmlApi<grammar::ContextPreservingUnrestrictedGrammar>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const grammar::UnrestrictedGrammar& grammar) const {
-	xmlApi<grammar::UnrestrictedGrammar>::compose(*((std::deque<sax::Token>*) data), grammar);
-}
-
-void ToXMLComposers::Visit(void* data, const graph::DirectedGraph& graph) const {
-	xmlApi<graph::DirectedGraph>::compose(*((std::deque<sax::Token>*) data), graph);
-}
-
-void ToXMLComposers::Visit(void* data, const graph::UndirectedGraph& graph) const {
-	xmlApi<graph::UndirectedGraph>::compose(*((std::deque<sax::Token>*) data), graph);
-}
-
-void ToXMLComposers::Visit(void* data, const label::PrimitiveLabel& label) const {
-	xmlApi<label::PrimitiveLabel>::compose(*((std::deque<sax::Token>*) data), label);
-}
-
-void ToXMLComposers::Visit(void* data, const label::HexavigesimalLabel& label) const {
-	xmlApi<label::HexavigesimalLabel>::compose(*((std::deque<sax::Token>*) data), label);
-}
-
-void ToXMLComposers::Visit(void* data, const label::ObjectLabel& label) const {
-	xmlApi<label::ObjectLabel>::compose(*((std::deque<sax::Token>*) data), label);
-}
-
-void ToXMLComposers::Visit(void* data, const label::LabelSetLabel& label) const {
-	xmlApi<label::LabelSetLabel>::compose(*((std::deque<sax::Token>*) data), label);
-}
-
-void ToXMLComposers::Visit(void* data, const label::LabelPairLabel& label) const {
-	xmlApi<label::LabelPairLabel>::compose(*((std::deque<sax::Token>*) data), label);
-}
-
-void ToXMLComposers::Visit(void* data, const label::UniqueLabel& label) const {
-	xmlApi<label::UniqueLabel>::compose(*((std::deque<sax::Token>*) data), label);
-}
-
-void ToXMLComposers::Visit(void* data, const regexp::UnboundedRegExp& regexp) const {
-	xmlApi<regexp::UnboundedRegExp>::compose(*((std::deque<sax::Token>*) data), regexp);
-}
-
-void ToXMLComposers::Visit(void* data, const regexp::FormalRegExp& regexp) const {
-	xmlApi<regexp::FormalRegExp>::compose(*((std::deque<sax::Token>*) data), regexp);
-}
-
-void ToXMLComposers::Visit(void* data, const string::Epsilon& string) const {
-	xmlApi<string::Epsilon>::compose(*((std::deque<sax::Token>*) data), string);
-}
-
-void ToXMLComposers::Visit(void* data, const string::CyclicString& string) const {
-	xmlApi<string::CyclicString>::compose(*((std::deque<sax::Token>*) data), string);
-}
-
-void ToXMLComposers::Visit(void* data, const string::LinearString& string) const {
-	xmlApi<string::LinearString>::compose(*((std::deque<sax::Token>*) data), string);
-}
-
-void ToXMLComposers::Visit(void* data, const primitive::String& primitive) const {
-	xmlApi<primitive::String>::compose(*((std::deque<sax::Token>*) data), primitive);
-}
-
-void ToXMLComposers::Visit(void* data, const primitive::Integer& primitive) const {
-	xmlApi<primitive::Integer>::compose(*((std::deque<sax::Token>*) data), primitive);
-}
-
-void ToXMLComposers::Visit(void* data, const primitive::Character& primitive) const {
-	xmlApi<primitive::Character>::compose(*((std::deque<sax::Token>*) data), primitive);
-}
-
-void ToXMLComposers::Visit(void* data, const primitive::Unsigned& primitive) const {
-	xmlApi<primitive::Unsigned>::compose(*((std::deque<sax::Token>*) data), primitive);
-}
-
-void ToXMLComposers::Visit(void* data, const primitive::Bool& primitive) const {
-	xmlApi<primitive::Bool>::compose(*((std::deque<sax::Token>*) data), primitive);
-}
-
-void ToXMLComposers::Visit(void* data, const tree::RankedTree& tree) const {
-	xmlApi<tree::RankedTree>::compose(*((std::deque<sax::Token>*) data), tree);
-}
-
-void ToXMLComposers::Visit(void* data, const tree::RankedPattern& tree) const {
-	xmlApi<tree::RankedPattern>::compose(*((std::deque<sax::Token>*) data), tree);
-}
-
-void ToXMLComposers::Visit(void* data, const tree::PrefixRankedTree& tree) const {
-	xmlApi<tree::PrefixRankedTree>::compose(*((std::deque<sax::Token>*) data), tree);
-}
-
-void ToXMLComposers::Visit(void* data, const tree::PrefixRankedBarTree& tree) const {
-	xmlApi<tree::PrefixRankedBarTree>::compose(*((std::deque<sax::Token>*) data), tree);
-}
-
-void ToXMLComposers::Visit(void* data, const tree::PrefixRankedPattern& tree) const {
-	xmlApi<tree::PrefixRankedPattern>::compose(*((std::deque<sax::Token>*) data), tree);
-}
-
-void ToXMLComposers::Visit(void* data, const tree::PrefixRankedBarPattern& tree) const {
-	xmlApi<tree::PrefixRankedBarPattern>::compose(*((std::deque<sax::Token>*) data), tree);
-}
-
-void ToXMLComposers::Visit(void* data, const tree::UnrankedTree& tree) const {
-	xmlApi<tree::UnrankedTree>::compose(*((std::deque<sax::Token>*) data), tree);
-}
-
-void ToXMLComposers::Visit(void* data, const tree::UnrankedPattern& tree) const {
-	xmlApi<tree::UnrankedPattern>::compose(*((std::deque<sax::Token>*) data), tree);
-}
-
-} /* namespace alib */
diff --git a/alib2data/src/XmlApi.hpp b/alib2data/src/XmlApi.hpp
index e7110f8e82..6a0800bb94 100644
--- a/alib2data/src/XmlApi.hpp
+++ b/alib2data/src/XmlApi.hpp
@@ -8,8 +8,6 @@
 #ifndef XML_API_HPP_
 #define XML_API_HPP_
 
-#include "XmlApiBase.h"
-
 #include <functional>
 #include <deque>
 #include <map>
@@ -17,15 +15,14 @@
 #include "sax/Token.h"
 #include "sax/FromXMLParserHelper.h"
 
-#include "object/ObjectFromXMLParser.h"
-
-#include "object/ObjectToXMLComposer.h"
-
 #include "object/ObjectBase.h"
 #include "object/WrapperBase.h"
 
 namespace alib {
 
+template<typename T, typename Enable = void>
+struct xmlApi {};
+
 template<typename Group>
 struct xmlApi<Group, typename std::enable_if< std::is_base_of<WrapperBase, Group>::value >::type> {
 	class ParserRegisterBase {
@@ -92,149 +89,6 @@ struct xmlApi<Type, typename std::enable_if< std::is_base_of<ObjectBase, Type>::
 
 };
 
-/* TODO for gcc-4.9 uncomment
-template<typename ... Ts>
-struct xmlApi<std::variant<Ts...>> {
-	static std::variant<Ts...> parse(std::deque<sax::Token>::iterator& input);
-	static bool first(const std::deque<sax::Token>::const_iterator& input);
-	static void compose(std::deque<sax::Token>& output, const std::variant<Ts...>& data);
-};
-
-TODO tuple
-
-*/
-
-
-template<>
-struct xmlApi<Object> {
-	static Object parse(std::deque<sax::Token>::iterator& input);
-	static bool first(const std::deque<sax::Token>::const_iterator& input);
-	static void compose(std::deque<sax::Token>& output, const Object& data);
-};
-
-
-class FromXMLParsers {
-public:
-	static const ObjectFromXMLParser objectParser;
-
-};
-
-class ToXMLComposers : public VisitableObjectBase::const_visitor_type {
-public:
-	ToXMLComposers() {}
-
-private:
-	void Visit(void*, const Void& voidObject) const;
-
-	void Visit(void*, const exception::AlibException& symbol) const;
-
-	void Visit(void*, const alphabet::LabeledSymbol& symbol) const;
-	void Visit(void*, const alphabet::BlankSymbol& symbol) const;
-	void Visit(void*, const alphabet::BottomOfTheStackSymbol& symbol) const;
-	void Visit(void*, const alphabet::EndSymbol& symbol) const;
-	void Visit(void*, const alphabet::RankedSymbol& symbol) const;
-	void Visit(void*, const alphabet::BarSymbol& symbol) const;
-	void Visit(void*, const alphabet::VariablesBarSymbol& symbol) const;
-	void Visit(void*, const alphabet::SubtreeWildcardSymbol& symbol) const;
-	void Visit(void*, const alphabet::SymbolSetSymbol& label) const;
-	void Visit(void*, const alphabet::SymbolPairSymbol& label) const;
-	void Visit(void*, const alphabet::UniqueSymbol& label) const;
-	void Visit(void*, const alphabet::StartSymbol& symbol) const;
-
-	void Visit(void*, const automaton::EpsilonNFA& automaton) const;
-	void Visit(void*, const automaton::MultiInitialStateNFA& automaton) const;
-	void Visit(void*, const automaton::NFA& automaton) const;
-	void Visit(void*, const automaton::DFA& automaton) const;
-	void Visit(void*, const automaton::ExtendedNFA& automaton) const;
-	void Visit(void*, const automaton::CompactNFA& automaton) const;
-	void Visit(void*, const automaton::DFTA& automaton) const;
-	void Visit(void*, const automaton::NFTA& automaton) const;
-	void Visit(void*, const automaton::DPDA& automaton) const;
-	void Visit(void*, const automaton::SinglePopDPDA& automaton) const;
-	void Visit(void*, const automaton::InputDrivenDPDA& automaton) const;
-	void Visit(void*, const automaton::InputDrivenNPDA& automaton) const;
-	void Visit(void*, const automaton::VisiblyPushdownDPDA& automaton) const;
-	void Visit(void*, const automaton::VisiblyPushdownNPDA& automaton) const;
-	void Visit(void*, const automaton::RealTimeHeightDeterministicDPDA& automaton) const;
-	void Visit(void*, const automaton::RealTimeHeightDeterministicNPDA& automaton) const;
-	void Visit(void*, const automaton::NPDA& automaton) const;
-	void Visit(void*, const automaton::SinglePopNPDA& automaton) const;
-	void Visit(void*, const automaton::OneTapeDTM& automaton) const;
-
-	void Visit(void*, const grammar::LeftLG& grammar) const;
-	void Visit(void*, const grammar::LeftRG& grammar) const;
-	void Visit(void*, const grammar::RightLG& grammar) const;
-	void Visit(void*, const grammar::RightRG& grammar) const;
-	void Visit(void*, const grammar::LG& grammar) const;
-	void Visit(void*, const grammar::CFG& grammar) const;
-	void Visit(void*, const grammar::EpsilonFreeCFG& grammar) const;
-	void Visit(void*, const grammar::CNF& grammar) const;
-	void Visit(void*, const grammar::GNF& grammar) const;
-	void Visit(void*, const grammar::CSG& grammar) const;
-	void Visit(void*, const grammar::NonContractingGrammar& grammar) const;
-	void Visit(void*, const grammar::ContextPreservingUnrestrictedGrammar& grammar) const;
-	void Visit(void*, const grammar::UnrestrictedGrammar& grammar) const;
-
-	void Visit(void*, const graph::DirectedGraph& graph) const;
-	void Visit(void*, const graph::UndirectedGraph& graph) const;
-
-	void Visit(void*, const label::PrimitiveLabel& label) const;
-	void Visit(void*, const label::HexavigesimalLabel& label) const;
-	void Visit(void*, const label::ObjectLabel& label) const;
-	void Visit(void*, const label::LabelSetLabel& label) const;
-	void Visit(void*, const label::LabelPairLabel& label) const;
-	void Visit(void*, const label::UniqueLabel& label) const;
-
-	void Visit(void*, const regexp::UnboundedRegExp& regexp) const;
-	void Visit(void*, const regexp::FormalRegExp& regexp) const;
-
-	void Visit(void*, const string::LinearString& string) const;
-	void Visit(void*, const string::CyclicString& string) const;
-	void Visit(void*, const string::Epsilon& string) const;
-
-	void Visit(void*, const container::ObjectsSet& set) const;
-	void Visit(void*, const container::ObjectsVector& set) const;
-	void Visit(void*, const container::ObjectsPair& set) const;
-	void Visit(void*, const container::ObjectsMap& set) const;
-
-	void Visit(void*, const primitive::String& primitive) const;
-	void Visit(void*, const primitive::Integer& primitive) const;
-	void Visit(void*, const primitive::Character& primitive) const;
-	void Visit(void*, const primitive::Unsigned& primitive) const;
-	void Visit(void*, const primitive::Bool& primitive) const;
-
-	void Visit(void*, const tree::RankedTree& tree) const;
-	void Visit(void*, const tree::RankedPattern& tree) const;
-	void Visit(void*, const tree::PrefixRankedTree& tree) const;
-	void Visit(void*, const tree::PrefixRankedBarTree& tree) const;
-	void Visit(void*, const tree::PrefixRankedPattern& tree) const;
-	void Visit(void*, const tree::PrefixRankedBarPattern& tree) const;
-	void Visit(void*, const tree::UnrankedTree& tree) const;
-	void Visit(void*, const tree::UnrankedPattern& tree) const;
-
-public:
-	static const ObjectToXMLComposer objectComposer;
-
-	static const ToXMLComposers toXMLComposers;
-};
-
-/* TODO For gcc-4.9 uncomment
-template<typename ... Ts>
-std::variant<Ts...> xmlApi<std::variant<Ts...>>::parse(std::deque<sax::Token>::iterator& input) {
-	return FromXMLParsers::containerParser.parseVariant<Ts...>(input);
-}
-
-template<typename ... Ts>
-bool xmlApi<std::variant<Ts...>>::first(const std::deque<sax::Token>::const_iterator& input) {
-	return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::CONTAINER_OBJECTS_VARIANT);
-}
-
-template<typename ... Ts>
-std::deque<sax::Token> xmlApi<std::variant<Ts...>>::compose(std::deque<sax::Token>& output, const std::variant<Ts...>& input) {
-	return ToXMLComposers::containerComposer.compose<Ts...>(input);
-}
-*/
-
 } /* namespace alib */
 
 #endif /* XML_API_HPP_ */
diff --git a/alib2data/src/XmlApiBase.h b/alib2data/src/XmlApiBase.h
index 33f478491e..3448c6a5ab 100644
--- a/alib2data/src/XmlApiBase.h
+++ b/alib2data/src/XmlApiBase.h
@@ -10,8 +10,6 @@
 
 namespace alib {
 
-template<typename T, typename Enable = void>
-struct xmlApi {};
 
 } /* namespace alib */
 
diff --git a/alib2data/src/alphabet/BarSymbol.cpp b/alib2data/src/alphabet/BarSymbol.cpp
index 6ab4048601..bf5aab78a9 100644
--- a/alib2data/src/alphabet/BarSymbol.cpp
+++ b/alib2data/src/alphabet/BarSymbol.cpp
@@ -8,6 +8,7 @@
 #include "BarSymbol.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Symbol.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -56,5 +57,6 @@ void BarSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BarSymbol> barSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BarSymbol>(alphabet::BarSymbol::XML_TAG_NAME, alphabet::BarSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::BarSymbol> barSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::BarSymbol>(alphabet::BarSymbol::XML_TAG_NAME, alphabet::BarSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/BlankSymbol.cpp b/alib2data/src/alphabet/BlankSymbol.cpp
index 900e718882..34e4e0f107 100644
--- a/alib2data/src/alphabet/BlankSymbol.cpp
+++ b/alib2data/src/alphabet/BlankSymbol.cpp
@@ -8,6 +8,7 @@
 #include "BlankSymbol.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Symbol.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -56,5 +57,6 @@ void BlankSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BlankSymbol> blankSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BlankSymbol>(alphabet::BlankSymbol::XML_TAG_NAME, alphabet::BlankSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::BlankSymbol> blankSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::BlankSymbol>(alphabet::BlankSymbol::XML_TAG_NAME, alphabet::BlankSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp b/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp
index 3cd7997069..ba80fc1b08 100644
--- a/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp
+++ b/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp
@@ -8,6 +8,7 @@
 #include "BottomOfTheStackSymbol.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Symbol.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -56,5 +57,6 @@ void BottomOfTheStackSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BottomOfTheStackSymbol> bottomOfTheStackSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BottomOfTheStackSymbol>(alphabet::BottomOfTheStackSymbol::XML_TAG_NAME, alphabet::BottomOfTheStackSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::BottomOfTheStackSymbol> bottomOfTheStackSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::BottomOfTheStackSymbol>(alphabet::BottomOfTheStackSymbol::XML_TAG_NAME, alphabet::BottomOfTheStackSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/EndSymbol.cpp b/alib2data/src/alphabet/EndSymbol.cpp
index 67fea3f671..4b3c9949f7 100644
--- a/alib2data/src/alphabet/EndSymbol.cpp
+++ b/alib2data/src/alphabet/EndSymbol.cpp
@@ -8,6 +8,7 @@
 #include "EndSymbol.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Symbol.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -56,5 +57,6 @@ void EndSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::EndSymbol> endSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::EndSymbol>(alphabet::EndSymbol::XML_TAG_NAME, alphabet::EndSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::EndSymbol> endSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::EndSymbol>(alphabet::EndSymbol::XML_TAG_NAME, alphabet::EndSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/LabeledSymbol.cpp b/alib2data/src/alphabet/LabeledSymbol.cpp
index 7711ddf092..eef5c9924c 100644
--- a/alib2data/src/alphabet/LabeledSymbol.cpp
+++ b/alib2data/src/alphabet/LabeledSymbol.cpp
@@ -8,6 +8,7 @@
 #include "LabeledSymbol.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Symbol.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -76,5 +77,6 @@ void LabeledSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::LabeledSymbol> labeledSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::LabeledSymbol>(alphabet::LabeledSymbol::XML_TAG_NAME, alphabet::LabeledSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::LabeledSymbol> labeledSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::LabeledSymbol>(alphabet::LabeledSymbol::XML_TAG_NAME, alphabet::LabeledSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/RankedSymbol.cpp b/alib2data/src/alphabet/RankedSymbol.cpp
index 32ad749296..5388b2776d 100644
--- a/alib2data/src/alphabet/RankedSymbol.cpp
+++ b/alib2data/src/alphabet/RankedSymbol.cpp
@@ -8,6 +8,7 @@
 #include "RankedSymbol.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Symbol.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -84,5 +85,6 @@ void RankedSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::RankedSymbol> rankedSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::RankedSymbol>(alphabet::RankedSymbol::XML_TAG_NAME, alphabet::RankedSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::RankedSymbol> rankedSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::RankedSymbol>(alphabet::RankedSymbol::XML_TAG_NAME, alphabet::RankedSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/StartSymbol.cpp b/alib2data/src/alphabet/StartSymbol.cpp
index 079e2f779c..12a0555bb3 100644
--- a/alib2data/src/alphabet/StartSymbol.cpp
+++ b/alib2data/src/alphabet/StartSymbol.cpp
@@ -8,6 +8,7 @@
 #include "StartSymbol.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Symbol.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -56,5 +57,6 @@ void StartSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::StartSymbol> startSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::StartSymbol>(alphabet::StartSymbol::XML_TAG_NAME, alphabet::StartSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::StartSymbol> startSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::StartSymbol>(alphabet::StartSymbol::XML_TAG_NAME, alphabet::StartSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp b/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp
index 1ab48d3938..0b39fd401d 100644
--- a/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp
+++ b/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp
@@ -8,6 +8,7 @@
 #include "SubtreeWildcardSymbol.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Symbol.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -56,5 +57,6 @@ void SubtreeWildcardSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SubtreeWildcardSymbol> subtreeWildcardSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SubtreeWildcardSymbol>(alphabet::SubtreeWildcardSymbol::XML_TAG_NAME, alphabet::SubtreeWildcardSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::SubtreeWildcardSymbol> subtreeWildcardSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::SubtreeWildcardSymbol>(alphabet::SubtreeWildcardSymbol::XML_TAG_NAME, alphabet::SubtreeWildcardSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/SymbolBase.h b/alib2data/src/alphabet/SymbolBase.h
index 90a5747c19..3847a3aef9 100644
--- a/alib2data/src/alphabet/SymbolBase.h
+++ b/alib2data/src/alphabet/SymbolBase.h
@@ -9,8 +9,6 @@
 #define SYMBOL_BASE_H_
 
 #include "../object/ObjectBase.h"
-#include <deque>
-#include "../sax/Token.h"
 
 namespace alphabet {
 
@@ -43,8 +41,6 @@ public:
 
 	virtual SymbolBase* clone() const = 0;
 	virtual SymbolBase* plunder() && = 0;
-
-	virtual void compose(std::deque<sax::Token>& out) const = 0;
 };
 
 } /* namespace alphabet */
diff --git a/alib2data/src/alphabet/SymbolPairSymbol.cpp b/alib2data/src/alphabet/SymbolPairSymbol.cpp
index a835e9090d..beee6b3120 100644
--- a/alib2data/src/alphabet/SymbolPairSymbol.cpp
+++ b/alib2data/src/alphabet/SymbolPairSymbol.cpp
@@ -9,6 +9,7 @@
 #include <sstream>
 #include "../sax/FromXMLParserHelper.h"
 #include "Symbol.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -74,5 +75,6 @@ void SymbolPairSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SymbolPairSymbol> symbolPairSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SymbolPairSymbol>(alphabet::SymbolPairSymbol::XML_TAG_NAME, alphabet::SymbolPairSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::SymbolPairSymbol> symbolPairSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::SymbolPairSymbol>(alphabet::SymbolPairSymbol::XML_TAG_NAME, alphabet::SymbolPairSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/SymbolSetSymbol.cpp b/alib2data/src/alphabet/SymbolSetSymbol.cpp
index 7b4ebee496..a3cbdb5a8d 100644
--- a/alib2data/src/alphabet/SymbolSetSymbol.cpp
+++ b/alib2data/src/alphabet/SymbolSetSymbol.cpp
@@ -8,6 +8,7 @@
 #include "SymbolSetSymbol.h"
 #include <sstream>
 #include "../sax/FromXMLParserHelper.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -78,5 +79,6 @@ void SymbolSetSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SymbolSetSymbol> symbolSetSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SymbolSetSymbol>(alphabet::SymbolSetSymbol::XML_TAG_NAME, alphabet::SymbolSetSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::SymbolSetSymbol> symbolSetSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::SymbolSetSymbol>(alphabet::SymbolSetSymbol::XML_TAG_NAME, alphabet::SymbolSetSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/UniqueSymbol.cpp b/alib2data/src/alphabet/UniqueSymbol.cpp
index 88f4a01102..3d2ab7c314 100644
--- a/alib2data/src/alphabet/UniqueSymbol.cpp
+++ b/alib2data/src/alphabet/UniqueSymbol.cpp
@@ -9,6 +9,7 @@
 #include <sstream>
 #include "../sax/FromXMLParserHelper.h"
 #include "Symbol.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -82,5 +83,6 @@ void UniqueSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::UniqueSymbol> uniqueSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::UniqueSymbol>(alphabet::UniqueSymbol::XML_TAG_NAME, alphabet::UniqueSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::UniqueSymbol> uniqueSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::UniqueSymbol>(alphabet::UniqueSymbol::XML_TAG_NAME, alphabet::UniqueSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/VariablesBarSymbol.cpp b/alib2data/src/alphabet/VariablesBarSymbol.cpp
index fde0882c16..0d36d3a2df 100644
--- a/alib2data/src/alphabet/VariablesBarSymbol.cpp
+++ b/alib2data/src/alphabet/VariablesBarSymbol.cpp
@@ -8,6 +8,7 @@
 #include "VariablesBarSymbol.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Symbol.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace alphabet {
@@ -56,5 +57,6 @@ void VariablesBarSymbol::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<alphabet::Symbol>::ParserRegister<alphabet::VariablesBarSymbol> variablesBarSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::VariablesBarSymbol>(alphabet::VariablesBarSymbol::XML_TAG_NAME, alphabet::VariablesBarSymbol::parse);
+xmlApi<alib::Object>::ParserRegister<alphabet::VariablesBarSymbol> variablesBarSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::VariablesBarSymbol>(alphabet::VariablesBarSymbol::XML_TAG_NAME, alphabet::VariablesBarSymbol::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/AutomatonBase.h b/alib2data/src/automaton/AutomatonBase.h
index 46295f4485..26cd383e85 100644
--- a/alib2data/src/automaton/AutomatonBase.h
+++ b/alib2data/src/automaton/AutomatonBase.h
@@ -42,8 +42,6 @@ public:
 
 	virtual AutomatonBase* clone() const = 0;
 	virtual AutomatonBase* plunder() && = 0;
-
-	virtual void compose(std::deque<sax::Token>& out) const = 0;
 };
 
 class VisitableConstFSMBase : public VisitableAutomatonBase::const_visitor_type {
diff --git a/alib2data/src/automaton/FSM/CompactNFA.cpp b/alib2data/src/automaton/FSM/CompactNFA.cpp
index 319fdacbf7..78834a9fcd 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.cpp
+++ b/alib2data/src/automaton/FSM/CompactNFA.cpp
@@ -19,6 +19,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -253,5 +254,6 @@ void CompactNFA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::CompactNFA> compactNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::CompactNFA>(automaton::CompactNFA::XML_TAG_NAME, automaton::CompactNFA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::CompactNFA> compactNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::CompactNFA>(automaton::CompactNFA::XML_TAG_NAME, automaton::CompactNFA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/FSM/DFA.cpp b/alib2data/src/automaton/FSM/DFA.cpp
index bd54cfde5d..0f3761beef 100644
--- a/alib2data/src/automaton/FSM/DFA.cpp
+++ b/alib2data/src/automaton/FSM/DFA.cpp
@@ -14,6 +14,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -220,5 +221,6 @@ void DFA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::DFA> DFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::DFA>(automaton::DFA::XML_TAG_NAME, automaton::DFA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::DFA> DFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::DFA>(automaton::DFA::XML_TAG_NAME, automaton::DFA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.cpp b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
index c7788f99cf..ec2845b216 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
@@ -18,6 +18,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -342,5 +343,6 @@ void EpsilonNFA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::EpsilonNFA> epsilonNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::EpsilonNFA>(automaton::EpsilonNFA::XML_TAG_NAME, automaton::EpsilonNFA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::EpsilonNFA> epsilonNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::EpsilonNFA>(automaton::EpsilonNFA::XML_TAG_NAME, automaton::EpsilonNFA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.cpp b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
index a511585dd8..356765631d 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.cpp
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
@@ -23,6 +23,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -265,5 +266,6 @@ void ExtendedNFA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::ExtendedNFA> extendedNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::ExtendedNFA>(automaton::ExtendedNFA::XML_TAG_NAME, automaton::ExtendedNFA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::ExtendedNFA> extendedNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::ExtendedNFA>(automaton::ExtendedNFA::XML_TAG_NAME, automaton::ExtendedNFA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
index 2abe3dbd0a..2fceef193c 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
@@ -16,6 +16,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -244,5 +245,6 @@ void MultiInitialStateNFA::composeTransitions(std::deque<sax::Token>& out) const
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::MultiInitialStateNFA> multiInitialStateNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::MultiInitialStateNFA>(automaton::MultiInitialStateNFA::XML_TAG_NAME, automaton::MultiInitialStateNFA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::MultiInitialStateNFA> multiInitialStateNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::MultiInitialStateNFA>(automaton::MultiInitialStateNFA::XML_TAG_NAME, automaton::MultiInitialStateNFA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/FSM/NFA.cpp b/alib2data/src/automaton/FSM/NFA.cpp
index 436112208b..d06ae07f36 100644
--- a/alib2data/src/automaton/FSM/NFA.cpp
+++ b/alib2data/src/automaton/FSM/NFA.cpp
@@ -14,6 +14,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -226,5 +227,6 @@ void NFA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::NFA> NFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::NFA>(automaton::NFA::XML_TAG_NAME, automaton::NFA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::NFA> NFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::NFA>(automaton::NFA::XML_TAG_NAME, automaton::NFA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/DPDA.cpp b/alib2data/src/automaton/PDA/DPDA.cpp
index 68d7b3684e..52f2b20d9d 100644
--- a/alib2data/src/automaton/PDA/DPDA.cpp
+++ b/alib2data/src/automaton/PDA/DPDA.cpp
@@ -14,6 +14,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -324,5 +325,6 @@ void DPDA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::DPDA> DPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::DPDA>(automaton::DPDA::XML_TAG_NAME, automaton::DPDA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::DPDA> DPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::DPDA>(automaton::DPDA::XML_TAG_NAME, automaton::DPDA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
index 1508fda561..591c417656 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
@@ -15,6 +15,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -295,5 +296,6 @@ void InputDrivenDPDA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::InputDrivenDPDA> inputDivenDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::InputDrivenDPDA>(automaton::InputDrivenDPDA::XML_TAG_NAME, automaton::InputDrivenDPDA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::InputDrivenDPDA> inputDivenDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::InputDrivenDPDA>(automaton::InputDrivenDPDA::XML_TAG_NAME, automaton::InputDrivenDPDA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
index 22751f32a1..d3bf520127 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
@@ -15,6 +15,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -288,5 +289,6 @@ void InputDrivenNPDA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::InputDrivenNPDA> inputDrivenNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::InputDrivenNPDA>(automaton::InputDrivenNPDA::XML_TAG_NAME, automaton::InputDrivenNPDA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::InputDrivenNPDA> inputDrivenNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::InputDrivenNPDA>(automaton::InputDrivenNPDA::XML_TAG_NAME, automaton::InputDrivenNPDA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/NPDA.cpp b/alib2data/src/automaton/PDA/NPDA.cpp
index cd86dcbd75..b02e2a0548 100644
--- a/alib2data/src/automaton/PDA/NPDA.cpp
+++ b/alib2data/src/automaton/PDA/NPDA.cpp
@@ -14,6 +14,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -241,5 +242,6 @@ void NPDA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::NPDA> NPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::NPDA>(automaton::NPDA::XML_TAG_NAME, automaton::NPDA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::NPDA> NPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::NPDA>(automaton::NPDA::XML_TAG_NAME, automaton::NPDA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
index 092ac8de45..5ade5615d3 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
@@ -14,6 +14,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -506,5 +507,6 @@ void RealTimeHeightDeterministicDPDA::composeTransitions(std::deque<sax::Token>&
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA> realTimeHeightDeterministicDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA>(automaton::RealTimeHeightDeterministicDPDA::XML_TAG_NAME, automaton::RealTimeHeightDeterministicDPDA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA> realTimeHeightDeterministicDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA>(automaton::RealTimeHeightDeterministicDPDA::XML_TAG_NAME, automaton::RealTimeHeightDeterministicDPDA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
index 94ea5c1dbd..167623cda3 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
@@ -14,6 +14,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -404,5 +405,6 @@ void RealTimeHeightDeterministicNPDA::composeTransitions(std::deque<sax::Token>&
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA> realTimeHeightDeterministicNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA>(automaton::RealTimeHeightDeterministicNPDA::XML_TAG_NAME, automaton::RealTimeHeightDeterministicNPDA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA> realTimeHeightDeterministicNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA>(automaton::RealTimeHeightDeterministicNPDA::XML_TAG_NAME, automaton::RealTimeHeightDeterministicNPDA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
index 3004138c88..96a19793b1 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
@@ -15,6 +15,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -270,5 +271,6 @@ void SinglePopDPDA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::SinglePopDPDA> singlePopDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::SinglePopDPDA>(automaton::SinglePopDPDA::XML_TAG_NAME, automaton::SinglePopDPDA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::SinglePopDPDA> singlePopDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::SinglePopDPDA>(automaton::SinglePopDPDA::XML_TAG_NAME, automaton::SinglePopDPDA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
index 7d8d2e7697..1dc14b6f80 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
@@ -14,6 +14,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -238,5 +239,6 @@ void SinglePopNPDA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::SinglePopNPDA> singlePopNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::SinglePopNPDA>(automaton::SinglePopNPDA::XML_TAG_NAME, automaton::SinglePopNPDA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::SinglePopNPDA> singlePopNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::SinglePopNPDA>(automaton::SinglePopNPDA::XML_TAG_NAME, automaton::SinglePopNPDA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
index 96b077f78e..7d2e48cd20 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
@@ -14,6 +14,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -412,5 +413,6 @@ void VisiblyPushdownDPDA::composeTransitions(std::deque<sax::Token>& out) const
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::VisiblyPushdownDPDA> visiblyPushdownDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::VisiblyPushdownDPDA>(automaton::VisiblyPushdownDPDA::XML_TAG_NAME, automaton::VisiblyPushdownDPDA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::VisiblyPushdownDPDA> visiblyPushdownDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::VisiblyPushdownDPDA>(automaton::VisiblyPushdownDPDA::XML_TAG_NAME, automaton::VisiblyPushdownDPDA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
index e178d22011..3d420771c1 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
@@ -14,6 +14,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -352,5 +353,6 @@ void VisiblyPushdownNPDA::composeTransitions(std::deque<sax::Token>& out) const
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::VisiblyPushdownNPDA> visiblyPushdownNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::VisiblyPushdownNPDA>(automaton::VisiblyPushdownNPDA::XML_TAG_NAME, automaton::VisiblyPushdownNPDA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::VisiblyPushdownNPDA> visiblyPushdownNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::VisiblyPushdownNPDA>(automaton::VisiblyPushdownNPDA::XML_TAG_NAME, automaton::VisiblyPushdownNPDA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/TA/DFTA.cpp b/alib2data/src/automaton/TA/DFTA.cpp
index 26282690a8..7a25eea285 100644
--- a/alib2data/src/automaton/TA/DFTA.cpp
+++ b/alib2data/src/automaton/TA/DFTA.cpp
@@ -14,6 +14,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -174,5 +175,6 @@ void DFTA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::DFTA> DFTAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::DFTA>(automaton::DFTA::XML_TAG_NAME, automaton::DFTA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::DFTA> DFTAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::DFTA>(automaton::DFTA::XML_TAG_NAME, automaton::DFTA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/TA/NFTA.cpp b/alib2data/src/automaton/TA/NFTA.cpp
index 46b60740b1..52b5c40240 100644
--- a/alib2data/src/automaton/TA/NFTA.cpp
+++ b/alib2data/src/automaton/TA/NFTA.cpp
@@ -14,6 +14,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -194,5 +195,6 @@ void NFTA::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::NFTA> NFTAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::NFTA>(automaton::NFTA::XML_TAG_NAME, automaton::NFTA::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::NFTA> NFTAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::NFTA>(automaton::NFTA::XML_TAG_NAME, automaton::NFTA::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.cpp b/alib2data/src/automaton/TM/OneTapeDTM.cpp
index cc283e4e03..eb67bea810 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.cpp
+++ b/alib2data/src/automaton/TM/OneTapeDTM.cpp
@@ -13,6 +13,7 @@
 #include "../common/AutomatonFromXMLParser.h"
 #include "../common/AutomatonToXMLComposer.h"
 #include "../Automaton.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace automaton {
@@ -218,5 +219,6 @@ void OneTapeDTM::composeTransitions(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<automaton::Automaton>::ParserRegister<automaton::OneTapeDTM> oneTapeDTMParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::OneTapeDTM>(automaton::OneTapeDTM::XML_TAG_NAME, automaton::OneTapeDTM::parse);
+xmlApi<alib::Object>::ParserRegister<automaton::OneTapeDTM> oneTapeDTMParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::OneTapeDTM>(automaton::OneTapeDTM::XML_TAG_NAME, automaton::OneTapeDTM::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/common/State.h b/alib2data/src/automaton/common/State.h
index 362e6354c4..75e62adbcc 100644
--- a/alib2data/src/automaton/common/State.h
+++ b/alib2data/src/automaton/common/State.h
@@ -12,7 +12,7 @@
 #include <ostream>
 
 #include "../../label/Label.h"
-#include "../../XmlApiBase.h"
+#include "../../XmlApi.hpp"
 
 namespace automaton {
 
diff --git a/alib2data/src/container/ContainerFromXMLParser.hpp.tmp b/alib2data/src/container/ContainerFromXMLParser.hpp.tmp
index 7e00b8717a..6e00305186 100644
--- a/alib2data/src/container/ContainerFromXMLParser.hpp.tmp
+++ b/alib2data/src/container/ContainerFromXMLParser.hpp.tmp
@@ -8,7 +8,7 @@
 #ifndef CONTAINER_FROM_XML_PARSER_H_
 #define CONTAINER_FROM_XML_PARSER_H_
 
-/* TODO for gcc-4.9 uncoment this
+/* TODO for gcc-4.9
 template<typename ... Ts>
 std::variant<Ts...> parseVariant(std::deque<sax::Token>::iterator& input) const;
 
@@ -31,3 +31,32 @@ std::variant<Ts...> ContainerFromXMLParser::parseVariant(std::deque<sax::Token>:
 
 #endif /* CONTAINER_FROM_XML_PARSER_H_ */
 
+/* TODO for gcc-4.9
+template<typename ... Ts>
+struct xmlApi<std::variant<Ts...>> {
+	static std::variant<Ts...> parse(std::deque<sax::Token>::iterator& input);
+	static bool first(const std::deque<sax::Token>::const_iterator& input);
+	static void compose(std::deque<sax::Token>& output, const std::variant<Ts...>& data);
+};
+
+/* TODO For gcc-4.9
+template<typename ... Ts>
+std::variant<Ts...> xmlApi<std::variant<Ts...>>::parse(std::deque<sax::Token>::iterator& input) {
+	return FromXMLParsers::containerParser.parseVariant<Ts...>(input);
+}
+
+template<typename ... Ts>
+bool xmlApi<std::variant<Ts...>>::first(const std::deque<sax::Token>::const_iterator& input) {
+	return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::CONTAINER_OBJECTS_VARIANT);
+}
+
+template<typename ... Ts>
+std::deque<sax::Token> xmlApi<std::variant<Ts...>>::compose(std::deque<sax::Token>& output, const std::variant<Ts...>& input) {
+	return ToXMLComposers::containerComposer.compose<Ts...>(input);
+}
+*/
+
+} /* namespace alib */
+
+*/
+
diff --git a/alib2data/src/container/ObjectsMap.cpp b/alib2data/src/container/ObjectsMap.cpp
index 80ebe118d6..bef8847e19 100644
--- a/alib2data/src/container/ObjectsMap.cpp
+++ b/alib2data/src/container/ObjectsMap.cpp
@@ -10,6 +10,7 @@
 #include <sstream>
 
 #include "Container.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace container {
@@ -60,5 +61,6 @@ void ObjectsMap::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<container::Container>::ParserRegister<container::ObjectsMap> objectsMapParserRegister = xmlApi<container::Container>::ParserRegister<container::ObjectsMap>(container::ObjectsMap::XML_TAG_NAME, container::ObjectsMap::parse);
+xmlApi<alib::Object>::ParserRegister<container::ObjectsMap> objectsMapParserRegister2 = xmlApi<alib::Object>::ParserRegister<container::ObjectsMap>(container::ObjectsMap::XML_TAG_NAME, container::ObjectsMap::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/container/ObjectsPair.cpp b/alib2data/src/container/ObjectsPair.cpp
index 2d5ce1b983..8999730193 100644
--- a/alib2data/src/container/ObjectsPair.cpp
+++ b/alib2data/src/container/ObjectsPair.cpp
@@ -10,6 +10,7 @@
 #include <sstream>
 
 #include "Container.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace container {
@@ -60,5 +61,6 @@ void ObjectsPair::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<container::Container>::ParserRegister<container::ObjectsPair> objectsPairParserRegister = xmlApi<container::Container>::ParserRegister<container::ObjectsPair>(container::ObjectsPair::XML_TAG_NAME, container::ObjectsPair::parse);
+xmlApi<alib::Object>::ParserRegister<container::ObjectsPair> objectsPairParserRegister2 = xmlApi<alib::Object>::ParserRegister<container::ObjectsPair>(container::ObjectsPair::XML_TAG_NAME, container::ObjectsPair::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/container/ObjectsSet.cpp b/alib2data/src/container/ObjectsSet.cpp
index 1cf2a14eee..2cda27a1af 100644
--- a/alib2data/src/container/ObjectsSet.cpp
+++ b/alib2data/src/container/ObjectsSet.cpp
@@ -8,6 +8,7 @@
 #include "ObjectsSet.h"
 
 #include "Container.h"
+#include "../object/Object.h"
 #include <sstream>
 
 namespace container {
@@ -58,5 +59,6 @@ void ObjectsSet::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<container::Container>::ParserRegister<container::ObjectsSet> objectsSetParserRegister = xmlApi<container::Container>::ParserRegister<container::ObjectsSet>(container::ObjectsSet::XML_TAG_NAME, container::ObjectsSet::parse);
+xmlApi<alib::Object>::ParserRegister<container::ObjectsSet> objectsSetParserRegister2 = xmlApi<alib::Object>::ParserRegister<container::ObjectsSet>(container::ObjectsSet::XML_TAG_NAME, container::ObjectsSet::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/container/ObjectsVector.cpp b/alib2data/src/container/ObjectsVector.cpp
index 93ee269c36..d99233a0f0 100644
--- a/alib2data/src/container/ObjectsVector.cpp
+++ b/alib2data/src/container/ObjectsVector.cpp
@@ -8,6 +8,7 @@
 #include "ObjectsVector.h"
 
 #include "Container.h"
+#include "../object/Object.h"
 #include <sstream>
 
 namespace container {
@@ -58,5 +59,6 @@ void ObjectsVector::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<container::Container>::ParserRegister<container::ObjectsVector> objectsVectorParserRegister = xmlApi<container::Container>::ParserRegister<container::ObjectsVector>(container::ObjectsVector::XML_TAG_NAME, container::ObjectsVector::parse);
+xmlApi<alib::Object>::ParserRegister<container::ObjectsVector> objectsVectorParserRegister2 = xmlApi<alib::Object>::ParserRegister<container::ObjectsVector>(container::ObjectsVector::XML_TAG_NAME, container::ObjectsVector::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/exception/AlibException.cpp b/alib2data/src/exception/AlibException.cpp
index d561001b21..262c8454d5 100644
--- a/alib2data/src/exception/AlibException.cpp
+++ b/alib2data/src/exception/AlibException.cpp
@@ -18,6 +18,8 @@
 #endif
 
 #include "../sax/FromXMLParserHelper.h"
+#include "../object/Object.h"
+#include "../XmlApi.hpp"
 
 namespace exception {
 
@@ -115,3 +117,9 @@ void AlibException::compose(std::deque<sax::Token>& out) const {
 }
 
 } /* namespace exception */
+
+namespace alib {
+
+xmlApi<alib::Object>::ParserRegister<exception::AlibException> alibExceptionParserRegister2 = xmlApi<alib::Object>::ParserRegister<exception::AlibException>(exception::AlibException::XML_TAG_NAME, exception::AlibException::parse);
+
+} /* namespace alib */
diff --git a/alib2data/src/grammar/ContextFree/CFG.cpp b/alib2data/src/grammar/ContextFree/CFG.cpp
index 2e593895dd..4171918174 100644
--- a/alib2data/src/grammar/ContextFree/CFG.cpp
+++ b/alib2data/src/grammar/ContextFree/CFG.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -176,5 +177,6 @@ void CFG::composeRules(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::CFG> CFGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::CFG>(grammar::CFG::XML_TAG_NAME, grammar::CFG::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::CFG> CFGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::CFG>(grammar::CFG::XML_TAG_NAME, grammar::CFG::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextFree/CNF.cpp b/alib2data/src/grammar/ContextFree/CNF.cpp
index f47dd534de..4b2d2aa46e 100644
--- a/alib2data/src/grammar/ContextFree/CNF.cpp
+++ b/alib2data/src/grammar/ContextFree/CNF.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -263,5 +264,6 @@ void CNF::composeRules(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::CNF> CNFParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::CNF>(grammar::CNF::XML_TAG_NAME, grammar::CNF::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::CNF> CNFParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::CNF>(grammar::CNF::XML_TAG_NAME, grammar::CNF::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
index a84fd6af84..f08c0b74a3 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -214,5 +215,6 @@ void EpsilonFreeCFG::composeRules(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::EpsilonFreeCFG> EpsilonFreeCFGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::EpsilonFreeCFG>(grammar::EpsilonFreeCFG::XML_TAG_NAME, grammar::EpsilonFreeCFG::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::EpsilonFreeCFG> EpsilonFreeCFGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::EpsilonFreeCFG>(grammar::EpsilonFreeCFG::XML_TAG_NAME, grammar::EpsilonFreeCFG::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextFree/GNF.cpp b/alib2data/src/grammar/ContextFree/GNF.cpp
index f003d0df92..adb9bfff4b 100644
--- a/alib2data/src/grammar/ContextFree/GNF.cpp
+++ b/alib2data/src/grammar/ContextFree/GNF.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -221,5 +222,6 @@ void GNF::composeRules(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::GNF> GNFParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::GNF>(grammar::GNF::XML_TAG_NAME, grammar::GNF::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::GNF> GNFParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::GNF>(grammar::GNF::XML_TAG_NAME, grammar::GNF::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextFree/LG.cpp b/alib2data/src/grammar/ContextFree/LG.cpp
index 9824423ce2..967bbab4ca 100644
--- a/alib2data/src/grammar/ContextFree/LG.cpp
+++ b/alib2data/src/grammar/ContextFree/LG.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -267,5 +268,6 @@ void LG::composeRules(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::LG> LGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::LG>(grammar::LG::XML_TAG_NAME, grammar::LG::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::LG> LGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::LG>(grammar::LG::XML_TAG_NAME, grammar::LG::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.cpp b/alib2data/src/grammar/ContextSensitive/CSG.cpp
index 0f79d9fc5f..0f87e639bd 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.cpp
+++ b/alib2data/src/grammar/ContextSensitive/CSG.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -214,5 +215,6 @@ void CSG::composeRules(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::CSG> CSGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::CSG>(grammar::CSG::XML_TAG_NAME, grammar::CSG::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::CSG> CSGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::CSG>(grammar::CSG::XML_TAG_NAME, grammar::CSG::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
index 4c717a730c..c1d8816f6b 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -190,6 +191,7 @@ void NonContractingGrammar::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::NonContractingGrammar> NonContractingGrammarParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::NonContractingGrammar>(grammar::NonContractingGrammar::XML_TAG_NAME, grammar::NonContractingGrammar::parse);
+xmlApi<grammar::Grammar>::ParserRegister<grammar::NonContractingGrammar> nonContractingGrammarParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::NonContractingGrammar>(grammar::NonContractingGrammar::XML_TAG_NAME, grammar::NonContractingGrammar::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::NonContractingGrammar> nonContractingGrammarParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::NonContractingGrammar>(grammar::NonContractingGrammar::XML_TAG_NAME, grammar::NonContractingGrammar::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/GrammarBase.h b/alib2data/src/grammar/GrammarBase.h
index e1ba1a3c36..ff18bb2760 100644
--- a/alib2data/src/grammar/GrammarBase.h
+++ b/alib2data/src/grammar/GrammarBase.h
@@ -42,8 +42,6 @@ public:
 
 	virtual GrammarBase* clone() const = 0;
 	virtual GrammarBase* plunder() && = 0;
-
-	virtual void compose(std::deque<sax::Token>& out) const = 0;
 };
 
 class VisitableConstRGBase : public VisitableGrammarBase::const_visitor_type {
diff --git a/alib2data/src/grammar/Regular/LeftLG.cpp b/alib2data/src/grammar/Regular/LeftLG.cpp
index 0be86983c8..69638d3005 100644
--- a/alib2data/src/grammar/Regular/LeftLG.cpp
+++ b/alib2data/src/grammar/Regular/LeftLG.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -251,5 +252,6 @@ void LeftLG::composeRules(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::LeftLG> LeftLGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::LeftLG>(grammar::LeftLG::XML_TAG_NAME, grammar::LeftLG::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::LeftLG> LeftLGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::LeftLG>(grammar::LeftLG::XML_TAG_NAME, grammar::LeftLG::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/Regular/LeftRG.cpp b/alib2data/src/grammar/Regular/LeftRG.cpp
index 5e24e2f4ee..5a226caf0f 100644
--- a/alib2data/src/grammar/Regular/LeftRG.cpp
+++ b/alib2data/src/grammar/Regular/LeftRG.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -260,5 +261,6 @@ void LeftRG::composeRules(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::LeftRG> LeftRGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::LeftRG>(grammar::LeftRG::XML_TAG_NAME, grammar::LeftRG::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::LeftRG> LeftRGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::LeftRG>(grammar::LeftRG::XML_TAG_NAME, grammar::LeftRG::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/Regular/RightLG.cpp b/alib2data/src/grammar/Regular/RightLG.cpp
index e4410d3dba..0c4a3b5a50 100644
--- a/alib2data/src/grammar/Regular/RightLG.cpp
+++ b/alib2data/src/grammar/Regular/RightLG.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -251,5 +252,6 @@ void RightLG::composeRules(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::RightLG> RightLGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::RightLG>(grammar::RightLG::XML_TAG_NAME, grammar::RightLG::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::RightLG> RightLGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::RightLG>(grammar::RightLG::XML_TAG_NAME, grammar::RightLG::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/Regular/RightRG.cpp b/alib2data/src/grammar/Regular/RightRG.cpp
index f324300b67..d2d32d11db 100644
--- a/alib2data/src/grammar/Regular/RightRG.cpp
+++ b/alib2data/src/grammar/Regular/RightRG.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -260,5 +261,6 @@ void RightRG::composeRules(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::RightRG> RightRGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::RightRG>(grammar::RightRG::XML_TAG_NAME, grammar::RightRG::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::RightRG> RightRGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::RightRG>(grammar::RightRG::XML_TAG_NAME, grammar::RightRG::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
index 9384f837c3..f250012583 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -195,5 +196,6 @@ void ContextPreservingUnrestrictedGrammar::composeRules(std::deque<sax::Token>&
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::ContextPreservingUnrestrictedGrammar> ContextPreservingUnrestrictedGrammarParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::ContextPreservingUnrestrictedGrammar>(grammar::ContextPreservingUnrestrictedGrammar::XML_TAG_NAME, grammar::ContextPreservingUnrestrictedGrammar::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::ContextPreservingUnrestrictedGrammar> ContextPreservingUnrestrictedGrammarParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::ContextPreservingUnrestrictedGrammar>(grammar::ContextPreservingUnrestrictedGrammar::XML_TAG_NAME, grammar::ContextPreservingUnrestrictedGrammar::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
index fb66eebe36..46f86d0744 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
@@ -16,6 +16,7 @@
 #include "../common/GrammarFromXMLParser.h"
 #include "../common/GrammarToXMLComposer.h"
 #include "../Grammar.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace grammar {
@@ -172,5 +173,6 @@ void UnrestrictedGrammar::composeRules(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<grammar::Grammar>::ParserRegister<grammar::UnrestrictedGrammar> UnrestrictedGrammarParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::UnrestrictedGrammar>(grammar::UnrestrictedGrammar::XML_TAG_NAME, grammar::UnrestrictedGrammar::parse);
+xmlApi<alib::Object>::ParserRegister<grammar::UnrestrictedGrammar> UnrestrictedGrammarParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::UnrestrictedGrammar>(grammar::UnrestrictedGrammar::XML_TAG_NAME, grammar::UnrestrictedGrammar::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/common/GrammarFromXMLParser.cpp b/alib2data/src/grammar/common/GrammarFromXMLParser.cpp
index 3f38f38e1e..c3a66774e8 100644
--- a/alib2data/src/grammar/common/GrammarFromXMLParser.cpp
+++ b/alib2data/src/grammar/common/GrammarFromXMLParser.cpp
@@ -7,7 +7,6 @@
 
 #include "GrammarFromXMLParser.h"
 #include "../../sax/ParserException.h"
-#include "../../XmlApi.hpp"
 #include "../../alphabet/Symbol.h"
 
 namespace grammar {
diff --git a/alib2data/src/grammar/common/GrammarFromXMLParser.h b/alib2data/src/grammar/common/GrammarFromXMLParser.h
index 936bf28e98..499d468ac4 100644
--- a/alib2data/src/grammar/common/GrammarFromXMLParser.h
+++ b/alib2data/src/grammar/common/GrammarFromXMLParser.h
@@ -13,7 +13,7 @@
 #include <variant>
 #include <vector>
 #include "../../alphabet/SymbolFeatures.h"
-#include "../../XmlApiBase.h"
+#include "../../XmlApi.hpp"
 #include "../../sax/Token.h"
 #include "../../sax/FromXMLParserHelper.h"
 
diff --git a/alib2data/src/grammar/common/GrammarToXMLComposer.h b/alib2data/src/grammar/common/GrammarToXMLComposer.h
index 9267c1ec56..4cc0d8c32f 100644
--- a/alib2data/src/grammar/common/GrammarToXMLComposer.h
+++ b/alib2data/src/grammar/common/GrammarToXMLComposer.h
@@ -15,7 +15,6 @@
 #include <variant>
 #include "../../alphabet/SymbolFeatures.h"
 #include "../../sax/Token.h"
-#include "../../XmlApiBase.h"
 
 namespace grammar {
 
diff --git a/alib2data/src/graph/GraphBase.h b/alib2data/src/graph/GraphBase.h
index 36a37a0852..c14e716ffa 100644
--- a/alib2data/src/graph/GraphBase.h
+++ b/alib2data/src/graph/GraphBase.h
@@ -10,8 +10,6 @@
 
 #include "common/Macros.h"
 #include "../object/ObjectBase.h"
-#include <deque>
-#include "../sax/Token.h"
 
 namespace graph {
 
@@ -44,8 +42,6 @@ public:
 
 	virtual GraphBase* clone() const = 0;
 	virtual GraphBase* plunder() && = 0;
-
-	virtual void compose(std::deque<sax::Token>& out) const = 0;
 };
 
 } // namespace graph
diff --git a/alib2data/src/graph/directed/DirectedGraph.cpp b/alib2data/src/graph/directed/DirectedGraph.cpp
index f7981271a0..b8e0ac3e54 100644
--- a/alib2data/src/graph/directed/DirectedGraph.cpp
+++ b/alib2data/src/graph/directed/DirectedGraph.cpp
@@ -18,6 +18,7 @@
 #include "../common/GraphFromXMLParser.h"
 #include "../common/GraphToXMLComposer.h"
 #include "../Graph.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace graph {
@@ -272,5 +273,6 @@ void DirectedGraph::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<graph::Graph>::ParserRegister<graph::DirectedGraph> directedGraphParserRegister = xmlApi<graph::Graph>::ParserRegister<graph::DirectedGraph>(graph::DirectedGraph::XML_TAG_NAME, graph::DirectedGraph::parse);
+xmlApi<alib::Object>::ParserRegister<graph::DirectedGraph> directedGraphParserRegister2 = xmlApi<alib::Object>::ParserRegister<graph::DirectedGraph>(graph::DirectedGraph::XML_TAG_NAME, graph::DirectedGraph::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/graph/undirected/UndirectedGraph.cpp b/alib2data/src/graph/undirected/UndirectedGraph.cpp
index f13ae37311..596ad5fca6 100644
--- a/alib2data/src/graph/undirected/UndirectedGraph.cpp
+++ b/alib2data/src/graph/undirected/UndirectedGraph.cpp
@@ -18,6 +18,7 @@
 #include "../common/GraphFromXMLParser.h"
 #include "../common/GraphToXMLComposer.h"
 #include "../Graph.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace graph {
@@ -272,5 +273,6 @@ void UndirectedGraph::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<graph::Graph>::ParserRegister<graph::UndirectedGraph> undirectedGraphParserRegister = xmlApi<graph::Graph>::ParserRegister<graph::UndirectedGraph>(graph::UndirectedGraph::XML_TAG_NAME, graph::UndirectedGraph::parse);
+xmlApi<alib::Object>::ParserRegister<graph::UndirectedGraph> undirectedGraphParserRegister2 = xmlApi<alib::Object>::ParserRegister<graph::UndirectedGraph>(graph::UndirectedGraph::XML_TAG_NAME, graph::UndirectedGraph::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/label/HexavigesimalLabel.cpp b/alib2data/src/label/HexavigesimalLabel.cpp
index d39aada1d8..c5f6c00e89 100644
--- a/alib2data/src/label/HexavigesimalLabel.cpp
+++ b/alib2data/src/label/HexavigesimalLabel.cpp
@@ -8,6 +8,7 @@
 #include "HexavigesimalLabel.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Label.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace label {
@@ -64,5 +65,6 @@ void HexavigesimalLabel::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<label::Label>::ParserRegister<label::HexavigesimalLabel> hexavigesimalLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::HexavigesimalLabel>(label::HexavigesimalLabel::XML_TAG_NAME, label::HexavigesimalLabel::parse);
+xmlApi<alib::Object>::ParserRegister<label::HexavigesimalLabel> hexavigesimalLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::HexavigesimalLabel>(label::HexavigesimalLabel::XML_TAG_NAME, label::HexavigesimalLabel::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/label/LabelBase.h b/alib2data/src/label/LabelBase.h
index 70119409fa..c5030f0fa5 100644
--- a/alib2data/src/label/LabelBase.h
+++ b/alib2data/src/label/LabelBase.h
@@ -9,8 +9,6 @@
 #define LABEL_BASE_H_
 
 #include "../object/ObjectBase.h"
-#include <deque>
-#include "../sax/Token.h"
 
 namespace label {
 
@@ -43,8 +41,6 @@ public:
 
 	virtual LabelBase* clone() const = 0;
 	virtual LabelBase* plunder() && = 0;
-
-	virtual void compose(std::deque<sax::Token>& out) const = 0;
 };
 
 } /* namespace label */
diff --git a/alib2data/src/label/LabelPairLabel.cpp b/alib2data/src/label/LabelPairLabel.cpp
index afc5d99e96..ef71bb9a58 100644
--- a/alib2data/src/label/LabelPairLabel.cpp
+++ b/alib2data/src/label/LabelPairLabel.cpp
@@ -9,6 +9,7 @@
 #include <sstream>
 #include "../sax/FromXMLParserHelper.h"
 #include "Label.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace label {
@@ -74,5 +75,6 @@ void LabelPairLabel::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<label::Label>::ParserRegister<label::LabelPairLabel> labelPairLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::LabelPairLabel>(label::LabelPairLabel::XML_TAG_NAME, label::LabelPairLabel::parse);
+xmlApi<alib::Object>::ParserRegister<label::LabelPairLabel> labelPairLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::LabelPairLabel>(label::LabelPairLabel::XML_TAG_NAME, label::LabelPairLabel::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/label/LabelSetLabel.cpp b/alib2data/src/label/LabelSetLabel.cpp
index c7751e9f81..3964755e62 100644
--- a/alib2data/src/label/LabelSetLabel.cpp
+++ b/alib2data/src/label/LabelSetLabel.cpp
@@ -9,6 +9,7 @@
 #include <sstream>
 #include "../sax/FromXMLParserHelper.h"
 #include "Label.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace label {
@@ -78,6 +79,7 @@ void LabelSetLabel::compose(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<label::Label>::ParserRegister<label::LabelSetLabel> hebelSetLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::LabelSetLabel>(label::LabelSetLabel::XML_TAG_NAME, label::LabelSetLabel::parse);
+xmlApi<label::Label>::ParserRegister<label::LabelSetLabel> labelSetLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::LabelSetLabel>(label::LabelSetLabel::XML_TAG_NAME, label::LabelSetLabel::parse);
+xmlApi<alib::Object>::ParserRegister<label::LabelSetLabel> labelSetLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::LabelSetLabel>(label::LabelSetLabel::XML_TAG_NAME, label::LabelSetLabel::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/label/ObjectLabel.cpp b/alib2data/src/label/ObjectLabel.cpp
index a3bb137272..5419423141 100644
--- a/alib2data/src/label/ObjectLabel.cpp
+++ b/alib2data/src/label/ObjectLabel.cpp
@@ -8,6 +8,7 @@
 #include "ObjectLabel.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Label.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace label {
@@ -60,5 +61,6 @@ void ObjectLabel::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<label::Label>::ParserRegister<label::ObjectLabel> objectLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::ObjectLabel>(label::ObjectLabel::XML_TAG_NAME, label::ObjectLabel::parse);
+xmlApi<alib::Object>::ParserRegister<label::ObjectLabel> objectLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::ObjectLabel>(label::ObjectLabel::XML_TAG_NAME, label::ObjectLabel::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/label/PrimitiveLabel.cpp b/alib2data/src/label/PrimitiveLabel.cpp
index 64714773a4..1133ea0b79 100644
--- a/alib2data/src/label/PrimitiveLabel.cpp
+++ b/alib2data/src/label/PrimitiveLabel.cpp
@@ -8,6 +8,7 @@
 #include "PrimitiveLabel.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Label.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace label {
@@ -64,5 +65,6 @@ void PrimitiveLabel::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<label::Label>::ParserRegister<label::PrimitiveLabel> primitiveLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::PrimitiveLabel>(label::PrimitiveLabel::XML_TAG_NAME, label::PrimitiveLabel::parse);
+xmlApi<alib::Object>::ParserRegister<label::PrimitiveLabel> primitiveLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::PrimitiveLabel>(label::PrimitiveLabel::XML_TAG_NAME, label::PrimitiveLabel::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/label/UniqueLabel.cpp b/alib2data/src/label/UniqueLabel.cpp
index 5bb27dff44..39130c8b17 100644
--- a/alib2data/src/label/UniqueLabel.cpp
+++ b/alib2data/src/label/UniqueLabel.cpp
@@ -9,6 +9,7 @@
 #include <sstream>
 #include "../sax/FromXMLParserHelper.h"
 #include "Label.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace label {
@@ -82,5 +83,6 @@ void UniqueLabel::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<label::Label>::ParserRegister<label::UniqueLabel> uniqueLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::UniqueLabel>(label::UniqueLabel::XML_TAG_NAME, label::UniqueLabel::parse);
+xmlApi<alib::Object>::ParserRegister<label::UniqueLabel> uniqueLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::UniqueLabel>(label::UniqueLabel::XML_TAG_NAME, label::UniqueLabel::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/object/ObjectBase.h b/alib2data/src/object/ObjectBase.h
index 92868c7c52..5a8f68ec75 100644
--- a/alib2data/src/object/ObjectBase.h
+++ b/alib2data/src/object/ObjectBase.h
@@ -11,8 +11,9 @@
 #include "../common/visitor.hpp"
 #include <compare>
 #include <memory>
+#include <deque>
 #include "../common/base.hpp"
-
+#include "../sax/Token.h"
 
 
 #include "ObjectFeatures.h"
@@ -102,6 +103,8 @@ typedef acceptor_base_helper< Types > VisitableObjectBase;
 // ----------------------------------------------------------------------------------------------------------------------
 
 class ObjectBase : public alib::base<ObjectBase>, public VisitableObjectBase, public std::cow_shared_ptr_base {
+public:
+	virtual void compose(std::deque<sax::Token>& out) const = 0;
 };
 
 // ----------------------------------------------------------------------------------------------------------------------
diff --git a/alib2data/src/object/ObjectFromXMLParser.cpp b/alib2data/src/object/ObjectFromXMLParser.cpp
deleted file mode 100644
index 3cc06bb2ee..0000000000
--- a/alib2data/src/object/ObjectFromXMLParser.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * ObjectFromXMLParser.cpp
- *
- *  Created on: Nov 23, 2013
- *      Author: Jan Travnicek
- */
-
-#include "ObjectFromXMLParser.h"
-#include "../sax/ParserException.h"
-#include "../XmlApi.hpp"
-
-#include "Object.h"
-#include "ObjectClasses.h"
-
-#include "../alphabet/Symbol.h"
-#include "../automaton/Automaton.h"
-#include "../container/Container.h"
-#include "../grammar/Grammar.h"
-#include "../label/Label.h"
-#include "../primitive/Primitive.h"
-#include "../regexp/RegExp.h"
-#include "../string/String.h"
-#include "../tree/Tree.h"
-
-namespace alib {
-
-Object ObjectFromXMLParser::parseObject(std::deque<sax::Token>::iterator& input) const {
-	if(alib::xmlApi<alphabet::Symbol>::first(input)) {
-		alphabet::Symbol symbol = alib::xmlApi<alphabet::Symbol>::parse(input);
-		Object res(std::move(symbol.getData()));
-		return res;
-	} else if(alib::xmlApi<exception::AlibException>::first(input)) {
-		exception::AlibException exception = alib::xmlApi<exception::AlibException>::parse(input);
-		Object res(std::move(exception));
-		return res;
-	} else if(alib::xmlApi<label::Label>::first(input)) {
-		label::Label label = alib::xmlApi<label::Label>::parse(input);
-		Object res(std::move(label.getData()));
-		return res;
-	} else if(alib::xmlApi<regexp::RegExp>::first(input)) {
-		regexp::RegExp regexp = alib::xmlApi<regexp::RegExp>::parse(input);
-		Object res(std::move(regexp.getData()));
-		return res;
-	} else if(alib::xmlApi<string::String>::first(input)) {
-		string::String string = alib::xmlApi<string::String>::parse(input);
-		Object res(std::move(string.getData()));
-		return res;
-	} else if(alib::xmlApi<automaton::Automaton>::first(input)) {
-		automaton::Automaton automaton = alib::xmlApi<automaton::Automaton>::parse(input);
-		Object res(std::move(automaton.getData()));
-		return res;
-	} else if(alib::xmlApi<grammar::Grammar>::first(input)) {
-		grammar::Grammar grammar = alib::xmlApi<grammar::Grammar>::parse(input);
-		Object res(std::move(grammar.getData()));
-		return res;
-	} else if(alib::xmlApi<container::Container>::first(input)) {
-		container::Container container = alib::xmlApi<container::Container>::parse(input);
-		Object res(std::move(container.getData()));
-		return res;
-	} else if(alib::xmlApi<primitive::Primitive>::first(input)) {
-		primitive::Primitive primitive = alib::xmlApi<primitive::Primitive>::parse(input);
-		Object res(std::move(primitive.getData()));
-		return res;
-	} else if(alib::xmlApi<tree::Tree>::first(input)) {
-		tree::Tree tree = alib::xmlApi<tree::Tree>::parse(input);
-		Object res(std::move(tree.getData()));
-		return res;
-	} else if(alib::xmlApi<Void>::first(input)) {
-		Object res(alib::xmlApi<Void>::parse(input));
-		return res;
-	} else {
-		throw exception::AlibException("Unknown element in xml");
-	}
-}
-
-bool ObjectFromXMLParser::first(const std::deque<sax::Token>::const_iterator& input) const {
-	return alib::xmlApi<alphabet::Symbol>::first(input) || alib::xmlApi<exception::AlibException>::first(input) || alib::xmlApi<label::Label>::first(input) || alib::xmlApi<regexp::RegExp>::first(input) || alib::xmlApi<string::String>::first(input) || alib::xmlApi<automaton::Automaton>::first(input) || alib::xmlApi<grammar::Grammar>::first(input) || alib::xmlApi<container::Container>::first(input) || alib::xmlApi<Void>::first(input);
-}
-
-} /* namespace alib */
diff --git a/alib2data/src/object/ObjectFromXMLParser.h b/alib2data/src/object/ObjectFromXMLParser.h
deleted file mode 100644
index f61dc8eb54..0000000000
--- a/alib2data/src/object/ObjectFromXMLParser.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * ObjectFromXMLParser.h
- *
- *  Created on: Nov 23, 2013
- *      Author: Jan Travnicek
- */
-
-#ifndef OBJECT_FROM_XML_PARSER_H_
-#define OBJECT_FROM_XML_PARSER_H_
-
-#include "../sax/FromXMLParserHelper.h"
-#include <set>
-#include "ObjectFeatures.h"
-#include "../XmlApiBase.h"
-
-namespace alib {
-
-/**
- * Parser used to get String from XML parsed into list of tokens.
- */
-class ObjectFromXMLParser : public sax::FromXMLParserHelper {
-public:
-	ObjectFromXMLParser() {}
-
-private:
-	Object parseObject(std::deque<sax::Token>::iterator& input) const;
-
-	template<typename T, typename Enable> friend struct alib::xmlApi;
-public:
-	bool first(const std::deque<sax::Token>::const_iterator& input) const;
-};
-
-} /* namespace alib */
-
-#endif /* OBJECT_FROM_XML_PARSER_H_ */
diff --git a/alib2data/src/object/ObjectToXMLComposer.cpp b/alib2data/src/object/ObjectToXMLComposer.cpp
deleted file mode 100644
index 10c575cc4d..0000000000
--- a/alib2data/src/object/ObjectToXMLComposer.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * ObjectToXMLComposer.cpp
- *
- *  Created on: Nov 23, 2013
- *      Author: Jan Travnicek
- */
-
-#include "ObjectToXMLComposer.h"
-
-#include "../XmlApi.hpp"
-
-#include "Object.h"
-#include "ObjectClasses.h"
-
-namespace alib {
-
-void ObjectToXMLComposer::compose(std::deque<sax::Token>& out, const Object& object) const {
-	object.getData().Accept((void*) &out, alib::ToXMLComposers::toXMLComposers);
-}
-
-void ObjectToXMLComposer::compose(std::deque<sax::Token>& out, const ObjectBase& object) const {
-	object.Accept((void*) &out, alib::ToXMLComposers::toXMLComposers);
-}
-
-} /* namespace alib */
diff --git a/alib2data/src/object/ObjectToXMLComposer.h b/alib2data/src/object/ObjectToXMLComposer.h
deleted file mode 100644
index 8b8dc05b5c..0000000000
--- a/alib2data/src/object/ObjectToXMLComposer.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * ObjectToXMLComposer.h
- *
- *  Created on: Nov 23, 2013
- *      Author: Jan Travnciek
- */
-
-#ifndef OBJECT_TO_XML_COMPOSER_H_
-#define OBJECT_TO_XML_COMPOSER_H_
-
-#include <deque>
-#include "ObjectFeatures.h"
-#include "../sax/Token.h"
-#include "../XmlApiBase.h"
-
-namespace alib {
-
-/**
- * This class contains methods to print XML representation of string to the output stream.
- */
-class ObjectToXMLComposer {
-public:
-	ObjectToXMLComposer() {}
-
-private:
-	/**
-	 * Prints XML representation of UnknownAutomaton to the output stream.
-	 * @param automaton automaton to print
-	 * @return list of xml tokens representing the automaton
-	 */
-	void compose(std::deque<sax::Token>& out, const ObjectBase& object) const;
-
-	/**
-	 * Prints XML representation of String to the output stream.
-	 * @param string String to print
-	 * @param out output stream to which print the String
-	 */
-	void compose(std::deque<sax::Token>& out, const Object& object) const;
-
-	template<typename T, typename Enable> friend struct alib::xmlApi;
-};
-
-} /* namespace alib */
-
-#endif /* OBJECT_TO_XML_COMPOSER_H_ */
diff --git a/alib2data/src/object/Void.cpp b/alib2data/src/object/Void.cpp
index e3cb807b77..f1c32c559b 100644
--- a/alib2data/src/object/Void.cpp
+++ b/alib2data/src/object/Void.cpp
@@ -7,6 +7,7 @@
 
 #include "Void.h"
 #include "../sax/FromXMLParserHelper.h"
+#include "Object.h"
 #include "../XmlApi.hpp"
 
 namespace alib {
@@ -52,3 +53,9 @@ void Void::compose(std::deque<sax::Token>& out) const {
 
 } /* namespace alib */
 
+namespace alib {
+
+xmlApi<alib::Object>::ParserRegister<alib::Void> voidParserRegister2 = xmlApi<alib::Object>::ParserRegister<alib::Void>(alib::Void::XML_TAG_NAME, alib::Void::parse);
+
+} /* namespace alib */
+
diff --git a/alib2data/src/primitive/Bool.cpp b/alib2data/src/primitive/Bool.cpp
index 8ba64492de..41ad58db23 100644
--- a/alib2data/src/primitive/Bool.cpp
+++ b/alib2data/src/primitive/Bool.cpp
@@ -9,7 +9,7 @@
 #include "../sax/FromXMLParserHelper.h"
 #include "../exception/AlibException.h"
 #include "Primitive.h"
-#include "../XmlApi.hpp"
+#include "../object/Object.h"
 
 namespace primitive {
 
@@ -95,5 +95,6 @@ void xmlApi<bool>::compose(std::deque<sax::Token>& output, bool data) {
 }
 
 xmlApi<primitive::Primitive>::ParserRegister<primitive::Bool> boolParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Bool>(primitive::Bool::XML_TAG_NAME, primitive::Bool::parse);
+xmlApi<alib::Object>::ParserRegister<primitive::Bool> boolParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Bool>(primitive::Bool::XML_TAG_NAME, primitive::Bool::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/primitive/Bool.h b/alib2data/src/primitive/Bool.h
index 61fbbbe48b..e238bfc365 100644
--- a/alib2data/src/primitive/Bool.h
+++ b/alib2data/src/primitive/Bool.h
@@ -9,7 +9,7 @@
 #define PRIMITIVE_BOOL_H_
 
 #include "PrimitiveBase.h"
-#include "../XmlApiBase.h"
+#include "../XmlApi.hpp"
 
 namespace primitive {
 
diff --git a/alib2data/src/primitive/Character.cpp b/alib2data/src/primitive/Character.cpp
index 7f2d0b812f..5fb1a158b5 100644
--- a/alib2data/src/primitive/Character.cpp
+++ b/alib2data/src/primitive/Character.cpp
@@ -8,7 +8,7 @@
 #include "Character.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Primitive.h"
-#include "../XmlApi.hpp"
+#include "../object/Object.h"
 
 namespace primitive {
 
@@ -84,6 +84,7 @@ void xmlApi<char>::compose(std::deque<sax::Token>& output, char data) {
 }
 
 xmlApi<primitive::Primitive>::ParserRegister<primitive::Character> characterParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Character>(primitive::Character::XML_TAG_NAME, primitive::Character::parse);
+xmlApi<alib::Object>::ParserRegister<primitive::Character> characterParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Character>(primitive::Character::XML_TAG_NAME, primitive::Character::parse);
 
 } /* namespace alib */
 
diff --git a/alib2data/src/primitive/Character.h b/alib2data/src/primitive/Character.h
index f7f576d24c..7910ea0b3d 100644
--- a/alib2data/src/primitive/Character.h
+++ b/alib2data/src/primitive/Character.h
@@ -9,7 +9,7 @@
 #define PRIMITIVE_CHARACTER_H_
 
 #include "PrimitiveBase.h"
-#include "../XmlApiBase.h"
+#include "../XmlApi.hpp"
 
 namespace primitive {
 
diff --git a/alib2data/src/primitive/Integer.cpp b/alib2data/src/primitive/Integer.cpp
index be13073fd7..35e199eec9 100644
--- a/alib2data/src/primitive/Integer.cpp
+++ b/alib2data/src/primitive/Integer.cpp
@@ -8,7 +8,7 @@
 #include "Integer.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Primitive.h"
-#include "../XmlApi.hpp"
+#include "../object/Object.h"
 
 namespace primitive {
 
@@ -84,6 +84,7 @@ void xmlApi<int>::compose(std::deque<sax::Token>& output, int data) {
 }
 
 xmlApi<primitive::Primitive>::ParserRegister<primitive::Integer> integerParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Integer>(primitive::Integer::XML_TAG_NAME, primitive::Integer::parse);
+xmlApi<alib::Object>::ParserRegister<primitive::Integer> integerParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Integer>(primitive::Integer::XML_TAG_NAME, primitive::Integer::parse);
 
 } /* namespace alib */
 
diff --git a/alib2data/src/primitive/Integer.h b/alib2data/src/primitive/Integer.h
index 27d4f91c83..3723054d15 100644
--- a/alib2data/src/primitive/Integer.h
+++ b/alib2data/src/primitive/Integer.h
@@ -9,7 +9,7 @@
 #define PRIMITIVE_INTEGER_H_
 
 #include "PrimitiveBase.h"
-#include "../XmlApiBase.h"
+#include "../XmlApi.hpp"
 
 namespace primitive {
 
diff --git a/alib2data/src/primitive/PrimitiveBase.h b/alib2data/src/primitive/PrimitiveBase.h
index d660d5ebf4..4965985c2b 100644
--- a/alib2data/src/primitive/PrimitiveBase.h
+++ b/alib2data/src/primitive/PrimitiveBase.h
@@ -43,8 +43,6 @@ public:
 
 	virtual PrimitiveBase* clone() const = 0;
 	virtual PrimitiveBase* plunder() && = 0;
-
-	virtual void compose(std::deque<sax::Token>& out) const = 0;
 };
 
 } /* namespace primitive */
diff --git a/alib2data/src/primitive/String.cpp b/alib2data/src/primitive/String.cpp
index 480d002acc..e89e47bbd5 100644
--- a/alib2data/src/primitive/String.cpp
+++ b/alib2data/src/primitive/String.cpp
@@ -8,7 +8,7 @@
 #include "String.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Primitive.h"
-#include "../XmlApi.hpp"
+#include "../object/Object.h"
 
 namespace primitive {
 
@@ -91,6 +91,7 @@ void xmlApi<std::string>::compose(std::deque<sax::Token>& output, std::string da
 }
 
 xmlApi<primitive::Primitive>::ParserRegister<primitive::String> stringParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::String>(primitive::String::XML_TAG_NAME, primitive::String::parse);
+xmlApi<alib::Object>::ParserRegister<primitive::String> stringParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::String>(primitive::String::XML_TAG_NAME, primitive::String::parse);
 
 } /* namespace alib */
 
diff --git a/alib2data/src/primitive/String.h b/alib2data/src/primitive/String.h
index 61f2958678..719e99954c 100644
--- a/alib2data/src/primitive/String.h
+++ b/alib2data/src/primitive/String.h
@@ -10,7 +10,7 @@
 
 #include <string>
 #include "PrimitiveBase.h"
-#include "../XmlApiBase.h"
+#include "../XmlApi.hpp"
 
 namespace primitive {
 
diff --git a/alib2data/src/primitive/Unsigned.cpp b/alib2data/src/primitive/Unsigned.cpp
index 4666e581fc..4d0cb326b2 100644
--- a/alib2data/src/primitive/Unsigned.cpp
+++ b/alib2data/src/primitive/Unsigned.cpp
@@ -8,7 +8,7 @@
 #include "Unsigned.h"
 #include "../sax/FromXMLParserHelper.h"
 #include "Primitive.h"
-#include "../XmlApi.hpp"
+#include "../object/Object.h"
 
 namespace primitive {
 
@@ -84,6 +84,7 @@ void xmlApi<unsigned>::compose(std::deque<sax::Token>& output, unsigned data) {
 }
 
 xmlApi<primitive::Primitive>::ParserRegister<primitive::Unsigned> unsignedParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Unsigned>(primitive::Unsigned::XML_TAG_NAME, primitive::Unsigned::parse);
+xmlApi<alib::Object>::ParserRegister<primitive::Unsigned> unsignedParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Unsigned>(primitive::Unsigned::XML_TAG_NAME, primitive::Unsigned::parse);
 
 } /* namespace alib */
 
diff --git a/alib2data/src/primitive/Unsigned.h b/alib2data/src/primitive/Unsigned.h
index 022b92f01b..6e42779b6d 100644
--- a/alib2data/src/primitive/Unsigned.h
+++ b/alib2data/src/primitive/Unsigned.h
@@ -9,7 +9,7 @@
 #define PRIMITIVE_UNSIGNED_H_
 
 #include "PrimitiveBase.h"
-#include "../XmlApiBase.h"
+#include "../XmlApi.hpp"
 
 namespace primitive {
 
diff --git a/alib2data/src/regexp/RegExpBase.h b/alib2data/src/regexp/RegExpBase.h
index f567dcc6b1..993e7e7f1f 100644
--- a/alib2data/src/regexp/RegExpBase.h
+++ b/alib2data/src/regexp/RegExpBase.h
@@ -9,8 +9,6 @@
 #define REG_EXP_BASE_H_
 
 #include "../object/ObjectBase.h"
-#include <deque>
-#include "../sax/Token.h"
 
 namespace regexp {
 
@@ -43,8 +41,6 @@ public:
 
 	virtual RegExpBase* clone() const = 0;
 	virtual RegExpBase* plunder() && = 0;
-
-	virtual void compose(std::deque<sax::Token>& out) const = 0;
 };
 
 } /* namespace regexp */
diff --git a/alib2data/src/regexp/common/RegExpFromXMLParser.cpp b/alib2data/src/regexp/common/RegExpFromXMLParser.cpp
index c654a0223a..1087f105f7 100644
--- a/alib2data/src/regexp/common/RegExpFromXMLParser.cpp
+++ b/alib2data/src/regexp/common/RegExpFromXMLParser.cpp
@@ -7,13 +7,13 @@
 
 #include "RegExpFromXMLParser.h"
 #include "../../sax/ParserException.h"
-#include "../../XmlApi.hpp"
 
 #include "../RegExp.h"
 #include "../RegExpClasses.h"
 
 #include "../unbounded/UnboundedRegExpElements.h"
 #include "../formal/FormalRegExpElements.h"
+#include "../../XmlApi.hpp"
 
 namespace regexp {
 
diff --git a/alib2data/src/regexp/common/RegExpFromXMLParser.h b/alib2data/src/regexp/common/RegExpFromXMLParser.h
index c951a5a88e..209e98e4e1 100644
--- a/alib2data/src/regexp/common/RegExpFromXMLParser.h
+++ b/alib2data/src/regexp/common/RegExpFromXMLParser.h
@@ -12,7 +12,6 @@
 #include <set>
 #include "../RegExpFeatures.h"
 #include "../../alphabet/SymbolFeatures.h"
-#include "../../XmlApiBase.h"
 
 namespace regexp {
 
diff --git a/alib2data/src/regexp/common/RegExpToXMLComposer.cpp b/alib2data/src/regexp/common/RegExpToXMLComposer.cpp
index 9b2feed276..6454ef7a52 100644
--- a/alib2data/src/regexp/common/RegExpToXMLComposer.cpp
+++ b/alib2data/src/regexp/common/RegExpToXMLComposer.cpp
@@ -6,13 +6,13 @@
  */
 
 #include "RegExpToXMLComposer.h"
-#include "../../XmlApi.hpp"
 
 #include "../RegExp.h"
 #include "../RegExpClasses.h"
 
 #include "../unbounded/UnboundedRegExpElements.h"
 #include "../formal/FormalRegExpElements.h"
+#include "../../XmlApi.hpp"
 
 namespace regexp {
 
diff --git a/alib2data/src/regexp/common/RegExpToXMLComposer.h b/alib2data/src/regexp/common/RegExpToXMLComposer.h
index 159e8e5927..d573c10071 100644
--- a/alib2data/src/regexp/common/RegExpToXMLComposer.h
+++ b/alib2data/src/regexp/common/RegExpToXMLComposer.h
@@ -13,7 +13,6 @@
 #include "../unbounded/UnboundedRegExpElement.h"
 #include "../formal/FormalRegExpElement.h"
 #include "../../sax/Token.h"
-#include "../../XmlApiBase.h"
 
 namespace regexp {
 
diff --git a/alib2data/src/regexp/formal/FormalRegExp.cpp b/alib2data/src/regexp/formal/FormalRegExp.cpp
index 023486e3b1..7174184068 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.cpp
+++ b/alib2data/src/regexp/formal/FormalRegExp.cpp
@@ -20,6 +20,7 @@
 #include "../common/RegExpFromXMLParser.h"
 #include "../common/RegExpToXMLComposer.h"
 #include "../RegExp.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace regexp {
@@ -175,5 +176,6 @@ void FormalRegExp::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<regexp::RegExp>::ParserRegister<regexp::FormalRegExp> formalRegExpParserRegister = xmlApi<regexp::RegExp>::ParserRegister<regexp::FormalRegExp>(regexp::FormalRegExp::XML_TAG_NAME, regexp::FormalRegExp::parse);
+xmlApi<alib::Object>::ParserRegister<regexp::FormalRegExp> formalRegExpParserRegister2 = xmlApi<alib::Object>::ParserRegister<regexp::FormalRegExp>(regexp::FormalRegExp::XML_TAG_NAME, regexp::FormalRegExp::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp b/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
index 9eba62189b..155f477524 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
@@ -20,6 +20,7 @@
 #include "../common/RegExpFromXMLParser.h"
 #include "../common/RegExpToXMLComposer.h"
 #include "../RegExp.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace regexp {
@@ -176,5 +177,6 @@ void UnboundedRegExp::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<regexp::RegExp>::ParserRegister<regexp::UnboundedRegExp> unboundedRegExpParserRegister = xmlApi<regexp::RegExp>::ParserRegister<regexp::UnboundedRegExp>(regexp::UnboundedRegExp::XML_TAG_NAME, regexp::UnboundedRegExp::parse);
+xmlApi<alib::Object>::ParserRegister<regexp::UnboundedRegExp> unboundedRegExpParserRegister2 = xmlApi<alib::Object>::ParserRegister<regexp::UnboundedRegExp>(regexp::UnboundedRegExp::XML_TAG_NAME, regexp::UnboundedRegExp::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/string/CyclicString.cpp b/alib2data/src/string/CyclicString.cpp
index 62c7314378..d20d73af76 100644
--- a/alib2data/src/string/CyclicString.cpp
+++ b/alib2data/src/string/CyclicString.cpp
@@ -16,6 +16,7 @@
 #include "common/StringFromXMLParser.h"
 #include "common/StringToXMLComposer.h"
 #include "String.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace string {
@@ -129,5 +130,6 @@ void CyclicString::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<string::String>::ParserRegister<string::CyclicString> cyclicStringParserRegister = xmlApi<string::String>::ParserRegister<string::CyclicString>(string::CyclicString::XML_TAG_NAME, string::CyclicString::parse);
+xmlApi<alib::Object>::ParserRegister<string::CyclicString> cyclicStringParserRegister2 = xmlApi<alib::Object>::ParserRegister<string::CyclicString>(string::CyclicString::XML_TAG_NAME, string::CyclicString::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/string/Epsilon.cpp b/alib2data/src/string/Epsilon.cpp
index 27b17f247a..e06acde4ce 100644
--- a/alib2data/src/string/Epsilon.cpp
+++ b/alib2data/src/string/Epsilon.cpp
@@ -11,6 +11,7 @@
 #include "common/StringFromXMLParser.h"
 #include "common/StringToXMLComposer.h"
 #include "String.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace string {
@@ -76,5 +77,6 @@ void Epsilon::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<string::String>::ParserRegister<string::Epsilon> epsilonParserRegister = xmlApi<string::String>::ParserRegister<string::Epsilon>(string::Epsilon::XML_TAG_NAME, string::Epsilon::parse);
+xmlApi<alib::Object>::ParserRegister<string::Epsilon> epsilonParserRegister2 = xmlApi<alib::Object>::ParserRegister<string::Epsilon>(string::Epsilon::XML_TAG_NAME, string::Epsilon::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/string/LinearString.cpp b/alib2data/src/string/LinearString.cpp
index 269bc34c03..351dbbb8d2 100644
--- a/alib2data/src/string/LinearString.cpp
+++ b/alib2data/src/string/LinearString.cpp
@@ -16,6 +16,7 @@
 #include "common/StringFromXMLParser.h"
 #include "common/StringToXMLComposer.h"
 #include "String.h"
+#include "../object/Object.h"
 #include "../XmlApi.hpp"
 
 namespace string {
@@ -143,5 +144,6 @@ void LinearString::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<string::String>::ParserRegister<string::LinearString> linearStringParserRegister = xmlApi<string::String>::ParserRegister<string::LinearString>(string::LinearString::XML_TAG_NAME, string::LinearString::parse);
+xmlApi<alib::Object>::ParserRegister<string::LinearString> linearStringParserRegister2 = xmlApi<alib::Object>::ParserRegister<string::LinearString>(string::LinearString::XML_TAG_NAME, string::LinearString::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/string/StringBase.h b/alib2data/src/string/StringBase.h
index f89b378298..34591a8296 100644
--- a/alib2data/src/string/StringBase.h
+++ b/alib2data/src/string/StringBase.h
@@ -9,8 +9,6 @@
 #define STRING_BASE_H_
 
 #include "../object/ObjectBase.h"
-#include <deque>
-#include "../sax/Token.h"
 
 namespace string {
 
@@ -43,8 +41,6 @@ public:
 
 	virtual StringBase* clone() const = 0;
 	virtual StringBase* plunder() && = 0;
-
-	virtual void compose(std::deque<sax::Token>& out) const = 0;
 };
 
 } /* namespace string */
diff --git a/alib2data/src/tree/TreeBase.h b/alib2data/src/tree/TreeBase.h
index 9d716d4a69..0dc1cd5222 100644
--- a/alib2data/src/tree/TreeBase.h
+++ b/alib2data/src/tree/TreeBase.h
@@ -9,8 +9,6 @@
 #define TREE_BASE_H_
 
 #include "../object/ObjectBase.h"
-#include <deque>
-#include "../sax/Token.h"
 
 namespace tree {
 
@@ -43,8 +41,6 @@ public:
 
 	virtual TreeBase* clone() const = 0;
 	virtual TreeBase* plunder() && = 0;
-
-	virtual void compose(std::deque<sax::Token>& out) const = 0;
 };
 
 } /* namespace tree */
diff --git a/alib2data/src/tree/TreeToRawComposer.cpp b/alib2data/src/tree/TreeToRawComposer.cpp
index 038d89faf5..38d024f439 100644
--- a/alib2data/src/tree/TreeToRawComposer.cpp
+++ b/alib2data/src/tree/TreeToRawComposer.cpp
@@ -7,7 +7,6 @@
 
 #include "TreeToRawComposer.h"
 #include "TreeException.h"
-#include "../XmlApi.hpp"
 #include "TreeClasses.h"
 
 namespace tree {
diff --git a/alib2data/src/tree/TreeToRawComposer.h b/alib2data/src/tree/TreeToRawComposer.h
index f2b5262295..2ea38fbb9e 100644
--- a/alib2data/src/tree/TreeToRawComposer.h
+++ b/alib2data/src/tree/TreeToRawComposer.h
@@ -12,7 +12,6 @@
 #include "Tree.h"
 #include "../sax/Token.h"
 #include <vector>
-#include "../XmlApiBase.h"
 
 namespace tree {
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
index 11e0c3d4c1..982c8e68f0 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace tree {
@@ -181,5 +182,6 @@ void PrefixRankedBarPattern::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<tree::Tree>::ParserRegister<tree::PrefixRankedBarPattern> prefixRankedBarPatternParserRegister = xmlApi<tree::Tree>::ParserRegister<tree::PrefixRankedBarPattern>(tree::PrefixRankedBarPattern::XML_TAG_NAME, tree::PrefixRankedBarPattern::parse);
+xmlApi<alib::Object>::ParserRegister<tree::PrefixRankedBarPattern> prefixRankedBarPatternParserRegister2 = xmlApi<alib::Object>::ParserRegister<tree::PrefixRankedBarPattern>(tree::PrefixRankedBarPattern::XML_TAG_NAME, tree::PrefixRankedBarPattern::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
index d7560ec570..24c222286b 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace tree {
@@ -161,5 +162,6 @@ void PrefixRankedBarTree::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<tree::Tree>::ParserRegister<tree::PrefixRankedBarTree> prefixRankedBarTreeParserRegister = xmlApi<tree::Tree>::ParserRegister<tree::PrefixRankedBarTree>(tree::PrefixRankedBarTree::XML_TAG_NAME, tree::PrefixRankedBarTree::parse);
+xmlApi<alib::Object>::ParserRegister<tree::PrefixRankedBarTree> prefixRankedBarTreeParserRegister2 = xmlApi<alib::Object>::ParserRegister<tree::PrefixRankedBarTree>(tree::PrefixRankedBarTree::XML_TAG_NAME, tree::PrefixRankedBarTree::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
index 36d7941905..f16508dfa6 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace tree {
@@ -153,5 +154,6 @@ void PrefixRankedPattern::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<tree::Tree>::ParserRegister<tree::PrefixRankedPattern> prefixRankedPatternParserRegister = xmlApi<tree::Tree>::ParserRegister<tree::PrefixRankedPattern>(tree::PrefixRankedPattern::XML_TAG_NAME, tree::PrefixRankedPattern::parse);
+xmlApi<alib::Object>::ParserRegister<tree::PrefixRankedPattern> prefixRankedPatternParserRegister2 = xmlApi<alib::Object>::ParserRegister<tree::PrefixRankedPattern>(tree::PrefixRankedPattern::XML_TAG_NAME, tree::PrefixRankedPattern::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.cpp b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
index ebddab3aa8..fcc2554163 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace tree {
@@ -148,5 +149,6 @@ void PrefixRankedTree::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<tree::Tree>::ParserRegister<tree::PrefixRankedTree> prefixRankedTreeParserRegister = xmlApi<tree::Tree>::ParserRegister<tree::PrefixRankedTree>(tree::PrefixRankedTree::XML_TAG_NAME, tree::PrefixRankedTree::parse);
+xmlApi<alib::Object>::ParserRegister<tree::PrefixRankedTree> prefixRankedTreeParserRegister2 = xmlApi<alib::Object>::ParserRegister<tree::PrefixRankedTree>(tree::PrefixRankedTree::XML_TAG_NAME, tree::PrefixRankedTree::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/tree/ranked/RankedPattern.cpp b/alib2data/src/tree/ranked/RankedPattern.cpp
index 4c8bce329e..db3598ea54 100644
--- a/alib2data/src/tree/ranked/RankedPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedPattern.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace tree {
@@ -160,5 +161,6 @@ void RankedPattern::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<tree::Tree>::ParserRegister<tree::RankedPattern> rankedPatternParserRegister = xmlApi<tree::Tree>::ParserRegister<tree::RankedPattern>(tree::RankedPattern::XML_TAG_NAME, tree::RankedPattern::parse);
+xmlApi<alib::Object>::ParserRegister<tree::RankedPattern> rankedPatternParserRegister2 = xmlApi<alib::Object>::ParserRegister<tree::RankedPattern>(tree::RankedPattern::XML_TAG_NAME, tree::RankedPattern::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/tree/ranked/RankedTree.cpp b/alib2data/src/tree/ranked/RankedTree.cpp
index bbe1975d7a..04382365b4 100644
--- a/alib2data/src/tree/ranked/RankedTree.cpp
+++ b/alib2data/src/tree/ranked/RankedTree.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace tree {
@@ -152,5 +153,6 @@ void RankedTree::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<tree::Tree>::ParserRegister<tree::RankedTree> rankedTreeParserRegister = xmlApi<tree::Tree>::ParserRegister<tree::RankedTree>(tree::RankedTree::XML_TAG_NAME, tree::RankedTree::parse);
+xmlApi<alib::Object>::ParserRegister<tree::RankedTree> rankedTreeParserRegister2 = xmlApi<alib::Object>::ParserRegister<tree::RankedTree>(tree::RankedTree::XML_TAG_NAME, tree::RankedTree::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.cpp b/alib2data/src/tree/unranked/UnrankedPattern.cpp
index 80a4ade2ba..5de35f4f9c 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedPattern.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace tree {
@@ -160,5 +161,6 @@ void UnrankedPattern::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<tree::Tree>::ParserRegister<tree::UnrankedPattern> unrankedPatternParserRegister = xmlApi<tree::Tree>::ParserRegister<tree::UnrankedPattern>(tree::UnrankedPattern::XML_TAG_NAME, tree::UnrankedPattern::parse);
+xmlApi<alib::Object>::ParserRegister<tree::UnrankedPattern> unrankedPatternParserRegister2 = xmlApi<alib::Object>::ParserRegister<tree::UnrankedPattern>(tree::UnrankedPattern::XML_TAG_NAME, tree::UnrankedPattern::parse);
 
 } /* namespace alib */
diff --git a/alib2data/src/tree/unranked/UnrankedTree.cpp b/alib2data/src/tree/unranked/UnrankedTree.cpp
index d5aa2e7a71..30371fd14f 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.cpp
+++ b/alib2data/src/tree/unranked/UnrankedTree.cpp
@@ -18,6 +18,7 @@
 #include "../common/TreeFromXMLParser.h"
 #include "../common/TreeToXMLComposer.h"
 #include "../Tree.h"
+#include "../../object/Object.h"
 #include "../../XmlApi.hpp"
 
 namespace tree {
@@ -152,5 +153,6 @@ void UnrankedTree::compose(std::deque<sax::Token>& out) const {
 namespace alib {
 
 xmlApi<tree::Tree>::ParserRegister<tree::UnrankedTree> unrankedTreeParserRegister = xmlApi<tree::Tree>::ParserRegister<tree::UnrankedTree>(tree::UnrankedTree::XML_TAG_NAME, tree::UnrankedTree::parse);
+xmlApi<alib::Object>::ParserRegister<tree::UnrankedTree> unrankedTreeParserRegister2 = xmlApi<alib::Object>::ParserRegister<tree::UnrankedTree>(tree::UnrankedTree::XML_TAG_NAME, tree::UnrankedTree::parse);
 
 } /* namespace alib */
-- 
GitLab