diff --git a/alib2common/src/container/ObjectsDeque.h b/alib2common/src/container/ObjectsDeque.h
index 049e82180544616ecd43e9d5b0b9270b3b40cb8f..21282ec7d95d85b216611085196fa5c125251d10 100644
--- a/alib2common/src/container/ObjectsDeque.h
+++ b/alib2common/src/container/ObjectsDeque.h
@@ -16,6 +16,7 @@
 #include "ContainerFeatures.h"
 
 #include <core/xmlApi.hpp>
+#include "../object/UniqueObject.h"
 
 namespace container {
 
@@ -56,6 +57,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	static void compose ( std::deque < sax::Token > & out, const std::deque < ElementType > & input );
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class ElementType >
@@ -128,6 +131,11 @@ void ObjectsDeque < ElementType >::compose ( std::deque < sax::Token > & out, co
 	out.emplace_back ( ObjectsDeque < >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class ElementType >
+alib::ObjectBase* ObjectsDeque < ElementType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace container */
 
 namespace alib {
diff --git a/alib2common/src/container/ObjectsList.h b/alib2common/src/container/ObjectsList.h
index 6c8510714ba67639b863bc5345457d3356c3d937..2cc8d3f47e5ec177dce161075c0429b4ee810e66 100644
--- a/alib2common/src/container/ObjectsList.h
+++ b/alib2common/src/container/ObjectsList.h
@@ -16,6 +16,7 @@
 #include "ContainerFeatures.h"
 
 #include <core/xmlApi.hpp>
+#include "../object/UniqueObject.h"
 
 namespace container {
 
@@ -56,6 +57,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	static void compose ( std::deque < sax::Token > & out, const std::list < ElementType > & input );
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class ElementType >
@@ -128,6 +131,11 @@ void ObjectsList < ElementType >::compose ( std::deque < sax::Token > & out, con
 	out.emplace_back ( ObjectsList < >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class ElementType >
+alib::ObjectBase* ObjectsList < ElementType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace container */
 
 namespace alib {
diff --git a/alib2common/src/container/ObjectsMap.h b/alib2common/src/container/ObjectsMap.h
index aafec1d1399f1a2b15e960712eb777c961ae142b..c65ae1c4c09443708b1fba64d01d8bb4f443968f 100644
--- a/alib2common/src/container/ObjectsMap.h
+++ b/alib2common/src/container/ObjectsMap.h
@@ -16,6 +16,7 @@
 #include "ContainerFeatures.h"
 
 #include <core/xmlApi.hpp>
+#include "../object/UniqueObject.h"
 
 #include "ObjectsPair.h"
 
@@ -58,6 +59,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	static void compose ( std::deque < sax::Token > & out, const std::map < KeyType, ValueType > & input );
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class KeyType, class ValueType >
@@ -131,6 +134,11 @@ void ObjectsMap < KeyType, ValueType >::compose ( std::deque < sax::Token > & ou
 	out.emplace_back ( ObjectsMap < >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class KeyType, class ValueType >
+alib::ObjectBase* ObjectsMap < KeyType, ValueType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace container */
 
 namespace alib {
diff --git a/alib2common/src/container/ObjectsPair.h b/alib2common/src/container/ObjectsPair.h
index d0f8503793b62bcb89f1cecd8efefbd7202de881..13cb8a5e20e77b6546497309022892a36c706845 100644
--- a/alib2common/src/container/ObjectsPair.h
+++ b/alib2common/src/container/ObjectsPair.h
@@ -16,6 +16,7 @@
 #include "ContainerFeatures.h"
 
 #include <core/xmlApi.hpp>
+#include "../object/UniqueObject.h"
 
 namespace container {
 
@@ -56,6 +57,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	static void compose ( std::deque < sax::Token > & out, const std::pair < KeyType, ValueType > & input );
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class KeyType, class ValueType >
@@ -128,6 +131,11 @@ void ObjectsPair < KeyType, ValueType >::compose ( std::deque < sax::Token > & o
 	out.emplace_back ( ObjectsPair::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class KeyType, class ValueType >
+alib::ObjectBase* ObjectsPair < KeyType, ValueType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace container */
 
 namespace alib {
diff --git a/alib2common/src/container/ObjectsSet.h b/alib2common/src/container/ObjectsSet.h
index 1195aca583c7bac2b539aa15ce3fd182a132b6de..8a91eb6cefb96bad74acf33b6a5f32cf93db278a 100644
--- a/alib2common/src/container/ObjectsSet.h
+++ b/alib2common/src/container/ObjectsSet.h
@@ -16,6 +16,7 @@
 #include "ContainerFeatures.h"
 
 #include <core/xmlApi.hpp>
+#include "../object/UniqueObject.h"
 
 namespace container {
 
@@ -56,6 +57,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	static void compose ( std::deque < sax::Token > & out, const std::set < ElementType > & input );
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class ElementType >
@@ -129,6 +132,11 @@ void ObjectsSet < ElementType >::compose ( std::deque < sax::Token > & out, cons
 	out.emplace_back ( ObjectsSet < >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class ElementType >
+alib::ObjectBase* ObjectsSet < ElementType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace container */
 
 namespace alib {
diff --git a/alib2common/src/container/ObjectsTree.h b/alib2common/src/container/ObjectsTree.h
index d4856161b67b93a112052da098da7feebf95eff2..a520ec9090746fd7cd0c4c502df531aecf4410e3 100644
--- a/alib2common/src/container/ObjectsTree.h
+++ b/alib2common/src/container/ObjectsTree.h
@@ -16,6 +16,7 @@
 #include "ContainerFeatures.h"
 
 #include <core/xmlApi.hpp>
+#include "../object/UniqueObject.h"
 
 namespace container {
 
@@ -55,6 +56,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	static void compose ( std::deque < sax::Token > & out, const std::tree < ElementType > & input );
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class ElementType >
@@ -162,6 +165,11 @@ void ObjectsTree < ElementType >::compose ( std::deque < sax::Token > & out, con
 	out.emplace_back ( ObjectsTree < >::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class ElementType >
+alib::ObjectBase* ObjectsTree < ElementType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace container */
 
 namespace alib {
diff --git a/alib2common/src/container/ObjectsVector.h b/alib2common/src/container/ObjectsVector.h
index d191758a1fdc8e722b6e9c041e2e296aabd73d42..514343d0102208e22acbfd7990f7f7979ba77117 100644
--- a/alib2common/src/container/ObjectsVector.h
+++ b/alib2common/src/container/ObjectsVector.h
@@ -16,6 +16,7 @@
 #include "ContainerFeatures.h"
 
 #include <core/xmlApi.hpp>
+#include "../object/UniqueObject.h"
 
 namespace container {
 
@@ -56,6 +57,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	static void compose ( std::deque < sax::Token > & out, const std::vector < ElementType > & input );
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class ElementType >
@@ -128,6 +131,11 @@ void ObjectsVector < ElementType >::compose ( std::deque < sax::Token > & out, c
 	out.emplace_back ( ObjectsVector < >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class ElementType >
+alib::ObjectBase* ObjectsVector < ElementType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace container */
 
 namespace alib {
diff --git a/alib2common/src/exception/CommonException.cpp b/alib2common/src/exception/CommonException.cpp
index b4053278c6f21b4823595c7f50b4b2be29677fd2..42227afaec3b0d5c3063b731e665a6195f466fef 100644
--- a/alib2common/src/exception/CommonException.cpp
+++ b/alib2common/src/exception/CommonException.cpp
@@ -10,6 +10,7 @@
 #include "../sax/FromXMLParserHelper.h"
 #include "../object/Object.h"
 #include "../core/xmlApi.hpp"
+#include "../object/UniqueObject.h"
 #include "../global/GlobalData.h"
 
 #ifdef DEBUG
@@ -115,6 +116,10 @@ void CommonException::compose(std::deque<sax::Token>& out) const {
 	out.emplace_back(CommonException::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
 }
 
+alib::ObjectBase* CommonException::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace exception */
 
 namespace alib {
diff --git a/alib2common/src/exception/CommonException.h b/alib2common/src/exception/CommonException.h
index 9676d5c71672b25dd1e82b3bbfc4fa4b4d03adc6..5205c4fcc4ff9635a48571f452c33320636f20b1 100644
--- a/alib2common/src/exception/CommonException.h
+++ b/alib2common/src/exception/CommonException.h
@@ -79,6 +79,8 @@ public:
 	static CommonException parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace exception */
diff --git a/alib2common/src/object/Object.cpp b/alib2common/src/object/Object.cpp
index aa46af4152cd9b22b878aaca24798578495b388d..54121572ffcb29f70fde7963cb6f3cdafec12490 100644
--- a/alib2common/src/object/Object.cpp
+++ b/alib2common/src/object/Object.cpp
@@ -10,6 +10,10 @@
 
 namespace alib {
 
+void Object::inc ( ) {
+	this->operator ++ ( );
+}
+
 auto ObjectDeleter = xmlApi < alib::Object >::InputContextDeleter ( );
 
 }
diff --git a/alib2common/src/object/Object.h b/alib2common/src/object/Object.h
index cc0930c2c0cd26d9c4445be8f5e12fcdcd698b72..285743dd603db8f9f85604114ab42d8e99b662cf 100644
--- a/alib2common/src/object/Object.h
+++ b/alib2common/src/object/Object.h
@@ -20,6 +20,8 @@ class Object : public alib::WrapperBase < ObjectBase > {
 	using alib::WrapperBase < ObjectBase >::WrapperBase;
 
 public:
+	void inc ( );
+
 	static const std::string & getXmlTagRefName() {
 		static std::string xmlTagName = "ObjectRef";
 
diff --git a/alib2common/src/object/ObjectBase.h b/alib2common/src/object/ObjectBase.h
index 498fdff68a509ac932f33141f39d0e77e7755d35..0c75fc9f5290e51b96eed238c7a86f535dc1c837 100644
--- a/alib2common/src/object/ObjectBase.h
+++ b/alib2common/src/object/ObjectBase.h
@@ -24,6 +24,8 @@ public:
 
 	virtual ObjectBase* clone() const = 0;
 	virtual ObjectBase* plunder() && = 0;
+
+	virtual ObjectBase* inc() && = 0;
 };
 
 } /* namespace alib */
diff --git a/alib2common/src/object/Void.cpp b/alib2common/src/object/Void.cpp
index 9246d93ed8ff012583b0d724bda268fa3ba9059c..bfbb682744438a208c4a698f60b8cad107db71cb 100644
--- a/alib2common/src/object/Void.cpp
+++ b/alib2common/src/object/Void.cpp
@@ -9,6 +9,7 @@
 #include "../sax/FromXMLParserHelper.h"
 #include "Object.h"
 #include "../core/xmlApi.hpp"
+#include "UniqueObject.h"
 
 namespace alib {
 
@@ -49,6 +50,10 @@ void Void::compose(std::deque<sax::Token>& out) const {
 	out.emplace_back(Void::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
 }
 
+ObjectBase* Void::inc() && {
+	return new UniqueObject(Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace alib */
 
 namespace alib {
diff --git a/alib2common/src/object/Void.h b/alib2common/src/object/Void.h
index e8fcc8fae7b9175b542203c7de1726530d9b9517..d46bd7671a7cd8e2e7f2ce12104a5c99b79b4a40 100644
--- a/alib2common/src/object/Void.h
+++ b/alib2common/src/object/Void.h
@@ -51,6 +51,8 @@ public:
 	static Void parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual ObjectBase * inc ( ) &&;
 };
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/FSM/CompactNFA.h b/alib2data/src/automaton/FSM/CompactNFA.h
index 0de2fc7652ea287cbd77c7ad8e2534011738fe00..ad082df6c58d08f1198126a7484cf93dabde9b35 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.h
+++ b/alib2data/src/automaton/FSM/CompactNFA.h
@@ -16,6 +16,7 @@
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
 #include <common/createUnique.hpp>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -167,6 +168,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace automaton */
@@ -386,6 +389,11 @@ void CompactNFA < SymbolType, StateType >::composeTransitions ( std::deque < sax
 	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class StateType >
+alib::ObjectBase* CompactNFA < SymbolType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/FSM/DFA.h b/alib2data/src/automaton/FSM/DFA.h
index e43fcdfa4629bcbb29743a9f083a1fdcfc5456d6..84fd9a902220a05956853a6f88d3471e043fa126 100644
--- a/alib2data/src/automaton/FSM/DFA.h
+++ b/alib2data/src/automaton/FSM/DFA.h
@@ -14,6 +14,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -168,6 +169,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template<class SymbolType, class StateType >
@@ -354,6 +357,11 @@ void DFA<SymbolType, StateType>::composeTransitions ( std::deque < sax::Token >
 	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class StateType >
+alib::ObjectBase* DFA < SymbolType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.h b/alib2data/src/automaton/FSM/EpsilonNFA.h
index 5ca3f7b7cfb42bd64c81aef6b5b493af9c9550ef..e700e941814c7f17acdb6797e4ec719e84bcfcbb 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.h
@@ -16,6 +16,7 @@
 #include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
 #include <common/createUnique.hpp>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonException.h"
 #include "../AutomatonBase.h"
@@ -244,6 +245,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace automaton */
@@ -574,6 +577,11 @@ void EpsilonNFA < SymbolType, EpsilonType, StateType >::composeTransitions ( std
 	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class EpsilonType, class StateType >
+alib::ObjectBase* EpsilonNFA < SymbolType, EpsilonType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.h b/alib2data/src/automaton/FSM/ExtendedNFA.h
index 4e08dcf8ac9ba89ac6979714e79866cab18c296f..c9685960c1e7ce8bb801f1f3e662e0cc06de5c46 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.h
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.h
@@ -16,6 +16,7 @@
 #include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
 #include <common/createUnique.hpp>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonException.h"
 #include "../AutomatonBase.h"
@@ -171,6 +172,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace automaton */
@@ -404,6 +407,11 @@ void ExtendedNFA < SymbolType, StateType >::composeTransitions ( std::deque < sa
 	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class StateType >
+alib::ObjectBase* ExtendedNFA < SymbolType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
index 857424a4312ccd8fa09174c16d39437e425cba3d..2fcdccfb890243171da5fe3799beb558b22dd8c6 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
@@ -14,6 +14,7 @@
 
 #include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonException.h"
 #include "../AutomatonBase.h"
@@ -186,6 +187,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace automaton */
@@ -397,6 +400,11 @@ void MultiInitialStateNFA < SymbolType, StateType >::composeTransitions ( std::d
 	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class StateType >
+alib::ObjectBase* MultiInitialStateNFA < SymbolType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/FSM/NFA.h b/alib2data/src/automaton/FSM/NFA.h
index db2fe2b6b5a24b322a444704cbea405eef08c12e..c1c7d72c279ec9723c9ad57af332aac509443e3a 100644
--- a/alib2data/src/automaton/FSM/NFA.h
+++ b/alib2data/src/automaton/FSM/NFA.h
@@ -12,6 +12,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonException.h"
 #include "../AutomatonBase.h"
@@ -178,6 +179,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace automaton */
@@ -381,6 +384,11 @@ void NFA < SymbolType, StateType >::composeTransitions ( std::deque < sax::Token
 	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class StateType >
+alib::ObjectBase* NFA < SymbolType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/PDA/DPDA.h b/alib2data/src/automaton/PDA/DPDA.h
index 84fc6af378ab6b1615b123a5d9301256a975c1f0..bf078ecc9f2faa1b2105f2cc0ccacc0fcfa027bc 100644
--- a/alib2data/src/automaton/PDA/DPDA.h
+++ b/alib2data/src/automaton/PDA/DPDA.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -202,6 +203,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType, class EpsilonType, class StateType >
@@ -480,6 +483,11 @@ void DPDA < SymbolType, EpsilonType, StateType >::composeTransitions(std::deque<
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class EpsilonType, class StateType >
+alib::ObjectBase* DPDA < SymbolType, EpsilonType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
index fda88351246a434ccaa3ccc45fc12be03614b9fc..978cee8943b3d6423cc56547b99c7d1bc23a233e 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -206,6 +207,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class  SymbolType, class StateType >
@@ -455,6 +458,11 @@ void InputDrivenDPDA < SymbolType, StateType >::composeTransitions(std::deque<sa
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class StateType >
+alib::ObjectBase* InputDrivenDPDA < SymbolType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
index 463434c3350403a3661faa54b0c28a894b24b7bf..f30875aa83215b38257c0702afd5e1c03987abfe 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -206,6 +207,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType, class StateType >
@@ -453,6 +456,11 @@ void InputDrivenNPDA < SymbolType, StateType >::composeTransitions(std::deque<sa
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class StateType >
+alib::ObjectBase* InputDrivenNPDA < SymbolType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/PDA/NPDA.h b/alib2data/src/automaton/PDA/NPDA.h
index f109014f5dc371bd49d2d145d63c962ba5e7bc42..d62a041fdc14b1346f33a0f28736439ecfb7c154 100644
--- a/alib2data/src/automaton/PDA/NPDA.h
+++ b/alib2data/src/automaton/PDA/NPDA.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -188,6 +189,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType, class EpsilonType, class StateType >
@@ -370,6 +373,11 @@ void NPDA < SymbolType, EpsilonType, StateType >::composeTransitions(std::deque<
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class EpsilonType, class StateType >
+alib::ObjectBase* NPDA < SymbolType, EpsilonType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/PDA/NPDTA.h b/alib2data/src/automaton/PDA/NPDTA.h
index 528ef056c4b0df41f036f5dcb58734d00a84abbd..1b1f9fdc7a70c1c12c8ccbaf5bce11b701831a00 100644
--- a/alib2data/src/automaton/PDA/NPDTA.h
+++ b/alib2data/src/automaton/PDA/NPDTA.h
@@ -15,8 +15,9 @@
 #include <algorithm>
 #include <sstream>
 
-#include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
+#include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -212,6 +213,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType, class EpsilonType, class StateType >
@@ -430,6 +433,11 @@ void NPDTA < SymbolType, EpsilonType, StateType >::composeTransitions(std::deque
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class EpsilonType, class StateType >
+alib::ObjectBase* NPDTA < SymbolType, EpsilonType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
index 3a38007e8fcc4491305b1c30beb40fd333931c7b..0933f2e3b1e88c750c09cf69fbf1ff821b8cba0e 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -228,6 +229,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template<class SymbolType, class EpsilonType, class StateType >
@@ -672,6 +675,11 @@ void RealTimeHeightDeterministicDPDA < SymbolType, EpsilonType, StateType >::com
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class EpsilonType, class StateType >
+alib::ObjectBase* RealTimeHeightDeterministicDPDA < SymbolType, EpsilonType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
index 3dd3fd179a4857490b81b3aa9407ebbb92cc616b..d3a318adebdc22a9de4b2c70a4b846f05872b9f2 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -236,6 +237,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType, class EpsilonType, class StateType >
@@ -573,6 +576,11 @@ void RealTimeHeightDeterministicNPDA < SymbolType, EpsilonType, StateType >::com
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class EpsilonType, class StateType >
+alib::ObjectBase* RealTimeHeightDeterministicNPDA < SymbolType, EpsilonType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.h b/alib2data/src/automaton/PDA/SinglePopDPDA.h
index a2240ee11ea121c29f67913cb2016e9a0a2056c7..e8742ac799edca3facbb3b286c7ffe7f521c1485 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.h
@@ -18,6 +18,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -193,6 +194,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType, class EpsilonType, class StateType >
@@ -411,6 +414,11 @@ void SinglePopDPDA < SymbolType, EpsilonType, StateType >::composeTransitions(st
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class EpsilonType, class StateType >
+alib::ObjectBase* SinglePopDPDA < SymbolType, EpsilonType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.h b/alib2data/src/automaton/PDA/SinglePopNPDA.h
index 8f93b94a7383effdb6251ad7f651c507a063693a..25adf8656bdcb51c5d3b4cc7861c56c69cd3d42b 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -188,6 +189,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType, class EpsilonType, class StateType >
@@ -375,6 +378,11 @@ void SinglePopNPDA < SymbolType, EpsilonType, StateType >::composeTransitions(st
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class EpsilonType, class StateType >
+alib::ObjectBase* SinglePopNPDA < SymbolType, EpsilonType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
index 3f6eedd7189a43c6952174af94fd1476cb74faee..b4b8de42ae901ac34dd4fd3c603271da607b2abb 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -261,6 +262,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType, class StateType >
@@ -596,6 +599,11 @@ void VisiblyPushdownDPDA < SymbolType, StateType >::composeTransitions(std::dequ
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class StateType >
+alib::ObjectBase* VisiblyPushdownDPDA < SymbolType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
index 4bc114b05badc22430bd3f7b7f7a266c8e91f704..4b0b1af7e865ca13ad97f40a3eb67ab386e14a8b 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -269,6 +270,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType, class StateType >
@@ -542,6 +545,11 @@ void VisiblyPushdownNPDA < SymbolType, StateType >::composeTransitions(std::dequ
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class StateType >
+alib::ObjectBase* VisiblyPushdownNPDA < SymbolType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/TA/DFTA.h b/alib2data/src/automaton/TA/DFTA.h
index 35cb5d5af07a281dfeb94306fd3571e8ca7819b6..bed1454b8282c057fb5dc9833e57e2cefe26b09e 100644
--- a/alib2data/src/automaton/TA/DFTA.h
+++ b/alib2data/src/automaton/TA/DFTA.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "alphabet/ranked_symbol.hpp"
 
 #include "../AutomatonFeatures.h"
@@ -144,6 +145,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace automaton */
@@ -294,6 +297,11 @@ void DFTA < SymbolType, RankType, StateType >::composeTransitions(std::deque<sax
 	out.emplace_back(sax::Token("transitions", sax::Token::TokenType::END_ELEMENT));
 }
 
+template < class SymbolType, class RankType, class StateType >
+alib::ObjectBase* DFTA < SymbolType, RankType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/TA/NFTA.h b/alib2data/src/automaton/TA/NFTA.h
index d7ec2fe37ffaefcc8aa8765d641f948038e22031..b979838cb21664fdac0fc5da9878c72323e4ead1 100644
--- a/alib2data/src/automaton/TA/NFTA.h
+++ b/alib2data/src/automaton/TA/NFTA.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
@@ -153,6 +154,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace automaton */
@@ -317,6 +320,11 @@ void NFTA < SymbolType, RankType, StateType >::composeTransitions(std::deque<sax
 	out.emplace_back(sax::Token("transitions", sax::Token::TokenType::END_ELEMENT));
 }
 
+template < class SymbolType, class RankType, class StateType >
+alib::ObjectBase* NFTA < SymbolType, RankType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.h b/alib2data/src/automaton/TM/OneTapeDTM.h
index fe2f2e447a6dc4db53b439f41e161bff43afd154..3c140bbd3cf0059827e7328986e3be7c46306f73 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.h
+++ b/alib2data/src/automaton/TM/OneTapeDTM.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../AutomatonException.h"
 #include "../AutomatonBase.h"
@@ -181,6 +182,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeTransitions ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template<class SymbolType, class StateType >
@@ -354,6 +357,11 @@ void OneTapeDTM<SymbolType, StateType>::composeTransitions(std::deque<sax::Token
 	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType, class StateType >
+alib::ObjectBase* OneTapeDTM < SymbolType, StateType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace automaton */
 
 namespace std {
diff --git a/alib2data/src/grammar/ContextFree/CFG.h b/alib2data/src/grammar/ContextFree/CFG.h
index 0fe11fe6842fee25a7fdcdc81d9f8f15132c5875..f19a34859731af867cdf7f211cadbffb145e5450 100644
--- a/alib2data/src/grammar/ContextFree/CFG.h
+++ b/alib2data/src/grammar/ContextFree/CFG.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -113,6 +114,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace grammar */
@@ -269,6 +272,11 @@ void CFG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) const
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* CFG < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/ContextFree/CNF.h b/alib2data/src/grammar/ContextFree/CNF.h
index 61cd02ed3a27299e53ded5f3589ec4426cdda766..6e3612ded7a5b7b0f1057b84df012eee712c9f0c 100644
--- a/alib2data/src/grammar/ContextFree/CNF.h
+++ b/alib2data/src/grammar/ContextFree/CNF.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -120,6 +121,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -358,6 +361,11 @@ void CNF < SymbolType >::composeRules ( std::deque < sax::Token > & out ) const
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* CNF < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
index eeaf1d8ec151f292ea8c625a68bf6ad35dde3852..c3e4bff62538d4a7bfdef6995a9c4f6037728307 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -115,6 +116,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -296,6 +299,11 @@ void EpsilonFreeCFG < SymbolType >::composeRules ( std::deque < sax::Token > & o
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* EpsilonFreeCFG < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/ContextFree/GNF.h b/alib2data/src/grammar/ContextFree/GNF.h
index 11f3ef8905d24b76b0bc7ef18913f8744c4171ca..3c98dfc4dde88cdaa26926856f2afbba129fe270 100644
--- a/alib2data/src/grammar/ContextFree/GNF.h
+++ b/alib2data/src/grammar/ContextFree/GNF.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -116,6 +117,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -305,6 +308,11 @@ void GNF < SymbolType >::composeRules ( std::deque < sax::Token > & out ) const
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* GNF < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/ContextFree/LG.h b/alib2data/src/grammar/ContextFree/LG.h
index 585af5398fc53b7d3f88c836b3881ff3357cade5..80e172649cd9f516fd79181080ec76c1c810ea6f 100644
--- a/alib2data/src/grammar/ContextFree/LG.h
+++ b/alib2data/src/grammar/ContextFree/LG.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -117,6 +118,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -335,6 +338,11 @@ void LG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) const {
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* LG < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.h b/alib2data/src/grammar/ContextSensitive/CSG.h
index 15fd69b8efa5effd48fc2161203259ab11f18f13..eb75e88bf3a08b618bff61d991cfc8d776d076e7 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.h
+++ b/alib2data/src/grammar/ContextSensitive/CSG.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -109,6 +110,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -267,6 +270,11 @@ void CSG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) const
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* CSG < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
index 5fda40f728fe67cd47ea3a53e9d9d7fe93761055..1e8c1496330e95ef584560e657c2ce14a6a2752a 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -109,6 +110,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -261,6 +264,11 @@ void NonContractingGrammar < SymbolType >::composeRules ( std::deque < sax::Toke
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* NonContractingGrammar < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/Regular/LeftLG.h b/alib2data/src/grammar/Regular/LeftLG.h
index 8b47b25384d94df84146e542759b094b4f5f9b36..54c0282bd7d3940c89839cd020ac018af6faadc8 100644
--- a/alib2data/src/grammar/Regular/LeftLG.h
+++ b/alib2data/src/grammar/Regular/LeftLG.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -116,6 +117,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -321,6 +324,11 @@ void LeftLG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) con
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* LeftLG < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/Regular/LeftRG.h b/alib2data/src/grammar/Regular/LeftRG.h
index 6e6238f0aa4b00c1e15787279e1065ccc856233a..72b4d1ec8f688142d3800d87712a0e0c1e5014e9 100644
--- a/alib2data/src/grammar/Regular/LeftRG.h
+++ b/alib2data/src/grammar/Regular/LeftRG.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -194,6 +195,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -428,6 +431,11 @@ void LeftRG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) con
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* LeftRG < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/Regular/RightLG.h b/alib2data/src/grammar/Regular/RightLG.h
index ae0f911e3174d130435e70a95ccb75323e9e5082..c3a96ea097a745983048a80ce70992ee54e15b24 100644
--- a/alib2data/src/grammar/Regular/RightLG.h
+++ b/alib2data/src/grammar/Regular/RightLG.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -116,6 +117,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -321,6 +324,11 @@ void RightLG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) co
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* RightLG < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/Regular/RightRG.h b/alib2data/src/grammar/Regular/RightRG.h
index 2748cba19fc8d91fe5aced3a8e7297a978d43c1a..c507c7eff3bd00f5f822440d2d652d1bcd7c9a13 100644
--- a/alib2data/src/grammar/Regular/RightRG.h
+++ b/alib2data/src/grammar/Regular/RightRG.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -137,6 +138,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -369,6 +372,11 @@ void RightRG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) co
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* RightRG < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
index 71c563ef054418d7e02554facbd4c78dcf73809e..cbb9e1379933e9c790a13b5c0d0bf277ede2bce0 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -105,6 +106,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -242,6 +245,11 @@ void ContextPreservingUnrestrictedGrammar < SymbolType >::composeRules ( std::de
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* ContextPreservingUnrestrictedGrammar < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
index a907f91d0ce78654a48f5c00ea3c27747a253baf..ce6bda2ea02e6085f0c57b70be98dfb23678754d 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../GrammarBase.h"
 #include "../GrammarFeatures.h"
@@ -105,6 +106,8 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 	void composeRules ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -236,6 +239,11 @@ void UnrestrictedGrammar < SymbolType >::composeRules ( std::deque < sax::Token
 	out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* UnrestrictedGrammar < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace grammar */
 
 namespace std {
diff --git a/alib2data/src/regexp/formal/FormalRegExp.h b/alib2data/src/regexp/formal/FormalRegExp.h
index 516e1242fc6b8d297c28a846bffea8c915059a3d..7ab95c272e26d6019d2d29f7881bfb7994e699fc 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.h
+++ b/alib2data/src/regexp/formal/FormalRegExp.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include <exception/CommonException.h>
 
 #include "../RegExpBase.h"
@@ -101,6 +102,8 @@ public:
 	static FormalRegExp parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace regexp */
@@ -199,6 +202,11 @@ void FormalRegExp < SymbolType >::compose ( std::deque < sax::Token > & out ) co
 	out.emplace_back ( FormalRegExp::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* FormalRegExp < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace regexp */
 
 namespace std {
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.h b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
index dc701f5c2bf7aaca2bb5febb47c9dc86b4dd1ec4..579e655f88f83bf16e1c86ce23cb5d45167e08d9 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include <exception/CommonException.h>
 
 #include "../RegExpBase.h"
@@ -101,6 +102,8 @@ public:
 	static UnboundedRegExp parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace regexp */
@@ -199,6 +202,11 @@ void UnboundedRegExp < SymbolType >::compose ( std::deque < sax::Token > & out )
 	out.emplace_back ( UnboundedRegExp::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* UnboundedRegExp < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace regexp */
 
 namespace std {
diff --git a/alib2data/src/rte/formal/FormalRTE.h b/alib2data/src/rte/formal/FormalRTE.h
index 332e36e3533702a12b42844afe18e59e5ad50c2f..a8f3770455657e91343cbb47caad498bf77fec5d 100644
--- a/alib2data/src/rte/formal/FormalRTE.h
+++ b/alib2data/src/rte/formal/FormalRTE.h
@@ -16,6 +16,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include <exception/CommonException.h>
 
 #include "../RTEBase.h"
@@ -138,6 +139,8 @@ public:
 	static FormalRTE parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType, class RankType >
@@ -228,6 +231,11 @@ void FormalRTE < SymbolType, RankType >::compose ( std::deque < sax::Token > & o
 	out.emplace_back ( FormalRTE::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class RankType >
+alib::ObjectBase* FormalRTE < SymbolType, RankType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace rte */
 
 namespace std {
diff --git a/alib2data/src/string/CyclicString.h b/alib2data/src/string/CyclicString.h
index 39b067ae2068608bc6a35af59733cf1e249c941e..24453302eeab995d48da681a8b62f6cdb702a836 100644
--- a/alib2data/src/string/CyclicString.h
+++ b/alib2data/src/string/CyclicString.h
@@ -15,6 +15,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "StringBase.h"
 #include "StringFeatures.h"
@@ -87,6 +88,8 @@ public:
 	static CyclicString parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace string */
@@ -197,6 +200,11 @@ void CyclicString < SymbolType >::compose(std::deque<sax::Token>& out) const {
 	out.emplace_back(CyclicString::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType >
+alib::ObjectBase* CyclicString < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace string */
 
 namespace std {
diff --git a/alib2data/src/string/Epsilon.h b/alib2data/src/string/Epsilon.h
index bd340eb1de7b97ecacc0ca37957bafb1f230ba5d..799499c4b0b3231c86af23e87e82cce0256102ab 100644
--- a/alib2data/src/string/Epsilon.h
+++ b/alib2data/src/string/Epsilon.h
@@ -13,6 +13,7 @@
 
 #include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
+#include <object/UniqueObject.h>
 
 #include "StringBase.h"
 #include "StringFeatures.h"
@@ -29,6 +30,8 @@ class GeneralAlphabet;
  */
 template < class SymbolType >
 class Epsilon : public StringBase, public std::Components < Epsilon < SymbolType >, SymbolType, std::tuple < GeneralAlphabet >, std::tuple < > > {
+	static const std::vector < SymbolType > content;
+
 public:
 	Epsilon ( );
 
@@ -79,7 +82,7 @@ public:
 
 	void compose ( std::deque < sax::Token > & out ) const;
 
-	static std::vector < SymbolType > content;
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 template < class SymbolType >
@@ -130,7 +133,7 @@ template < class SymbolType >
 Epsilon < SymbolType > Epsilon < SymbolType >::EPSILON = Epsilon < SymbolType >();
 
 template < class SymbolType >
-std::vector<SymbolType> Epsilon < SymbolType >::content;
+const std::vector<SymbolType> Epsilon < SymbolType >::content;
 
 template < class SymbolType >
 Epsilon < SymbolType > Epsilon < SymbolType >::parse(std::deque<sax::Token>::iterator& input) {
@@ -147,6 +150,11 @@ void Epsilon < SymbolType >::compose(std::deque<sax::Token>& out) const {
 	out.emplace_back(Epsilon::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
 }
 
+template < class SymbolType >
+alib::ObjectBase* Epsilon < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace string */
 
 namespace std {
diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h
index 65ef6c4459a6d58918909c0cdb350bf007899ad7..c76babddb4f3571bb6e40d2944e86065346c0e51 100644
--- a/alib2data/src/string/LinearString.h
+++ b/alib2data/src/string/LinearString.h
@@ -15,6 +15,7 @@
 
 #include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
+#include <object/UniqueObject.h>
 
 #include "StringBase.h"
 #include "StringFeatures.h"
@@ -101,6 +102,8 @@ public:
 	static LinearString parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace string */
@@ -260,6 +263,11 @@ void LinearString < SymbolType >::compose ( std::deque < sax::Token > & out ) co
 	out.emplace_back ( LinearString::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* LinearString < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace string */
 
 namespace std {
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
index 1a5cd708d36cabe060f852aa2e122dd04b834a7b..4393edae43a79b7a6f324a07e8ba4da160396602 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -17,6 +17,7 @@
 
 #include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
+#include <object/UniqueObject.h>
 #include "alphabet/ranked_symbol.hpp"
 
 #include "../TreeFeatures.h"
@@ -123,6 +124,8 @@ public:
 	static PrefixRankedBarNonlinearPattern parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -310,6 +313,11 @@ void PrefixRankedBarNonlinearPattern < SymbolType, RankType >::compose ( std::de
 	out.emplace_back ( PrefixRankedBarNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class RankType >
+alib::ObjectBase* PrefixRankedBarNonlinearPattern < SymbolType, RankType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
index 8ba7b4a3130fa53fca9e6e3fcfb6cc4e8416f1f3..4004e445e4f38a7e3195bfb43e5dff3441ffdb53 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "alphabet/ranked_symbol.hpp"
 
 #include "../TreeFeatures.h"
@@ -112,6 +113,8 @@ public:
 	static PrefixRankedBarPattern parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -274,6 +277,11 @@ void PrefixRankedBarPattern < SymbolType, RankType >::compose ( std::deque < sax
 	out.emplace_back ( PrefixRankedBarPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class RankType >
+alib::ObjectBase* PrefixRankedBarPattern < SymbolType, RankType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
index 4106f31398cac5e2ce17ef845eb9e28cf250a6e6..0153851eba53ffcd4ca4ad730a651a96b3d1b1c3 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "alphabet/ranked_symbol.hpp"
 
 #include "../TreeFeatures.h"
@@ -99,6 +100,8 @@ public:
 	static PrefixRankedBarTree parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -244,6 +247,11 @@ void PrefixRankedBarTree < SymbolType, RankType >::compose ( std::deque < sax::T
 	out.emplace_back ( PrefixRankedBarTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class RankType >
+alib::ObjectBase* PrefixRankedBarTree < SymbolType, RankType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
index e843e58a22c8eebf30370bc6c811213de0454492..8a97f9b9492da6a8ee7adc3f424b3f4cf7014d82 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "alphabet/ranked_symbol.hpp"
 
 #include "../TreeFeatures.h"
@@ -107,6 +108,8 @@ public:
 	static PrefixRankedNonlinearPattern parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -262,6 +265,11 @@ void PrefixRankedNonlinearPattern < SymbolType, RankType >::compose ( std::deque
 	out.emplace_back ( PrefixRankedNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class RankType >
+alib::ObjectBase* PrefixRankedNonlinearPattern < SymbolType, RankType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h
index 0b9808990272236f3acccbbc777f8a4872d7dbcb..2393243c85de63219b279f6f3c3fe00b7c7ddd92 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "alphabet/ranked_symbol.hpp"
 
 #include "../TreeFeatures.h"
@@ -98,6 +99,8 @@ public:
 	static PrefixRankedPattern parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -232,6 +235,11 @@ void PrefixRankedPattern < SymbolType, RankType >::compose ( std::deque < sax::T
 	out.emplace_back ( PrefixRankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class RankType >
+alib::ObjectBase* PrefixRankedPattern < SymbolType, RankType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h
index e4842315de69dc100ccf8049d5459c54be925eca..a55c98f346df5659dc9de6eb52fa69b9efebf82f 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "alphabet/ranked_symbol.hpp"
 
 #include "../TreeFeatures.h"
@@ -90,6 +91,8 @@ public:
 	static PrefixRankedTree parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -217,6 +220,11 @@ void PrefixRankedTree < SymbolType, RankType >::compose ( std::deque < sax::Toke
 	out.emplace_back ( PrefixRankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class RankType >
+alib::ObjectBase* PrefixRankedTree < SymbolType, RankType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
index a63abeee1e5330a1af21106a604f125ccba32010..762bb8ecb381e8332531a32704c079586ea30f0f 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "alphabet/ranked_symbol.hpp"
 
 #include "../TreeFeatures.h"
@@ -115,6 +116,8 @@ public:
 	static RankedNonlinearPattern parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -233,6 +236,11 @@ void RankedNonlinearPattern < SymbolType, RankType >::compose ( std::deque < sax
 	out.emplace_back ( RankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class RankType >
+alib::ObjectBase* RankedNonlinearPattern < SymbolType, RankType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index a5408874a318533870e77c62cc13b0d7f9a4f878..a38f2c6b3de9864a86677f8f950b5161a54c23ac 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "alphabet/ranked_symbol.hpp"
 
 #include "../TreeFeatures.h"
@@ -109,6 +110,8 @@ public:
 	static RankedPattern parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -221,6 +224,11 @@ void RankedPattern < SymbolType, RankType >::compose ( std::deque < sax::Token >
 	out.emplace_back ( RankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class RankType >
+alib::ObjectBase* RankedPattern < SymbolType, RankType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h
index 58de295acfb4052b7e98a02b216d4d1af93fc9d9..402277c3cd8bdc2339ad17f130f8d1673a0c666a 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "alphabet/ranked_symbol.hpp"
 
 #include "../TreeFeatures.h"
@@ -104,6 +105,8 @@ public:
 	static RankedTree parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -214,6 +217,11 @@ void RankedTree < SymbolType, RankType >::compose ( std::deque < sax::Token > &
 	out.emplace_back ( RankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType, class RankType >
+alib::ObjectBase* RankedTree < SymbolType, RankType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h
index 874093c6f7c3bb4fa5c9a12349245cb6072efc53..fdefd3e2f59f1e97d0a92ee2d64e59af1d1c1826 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -17,6 +17,7 @@
 
 #include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
+#include <object/UniqueObject.h>
 
 #include "../TreeFeatures.h"
 #include "../UnrankedTreeBase.h"
@@ -96,6 +97,8 @@ public:
 	static PrefixBarTree parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -234,6 +237,11 @@ void PrefixBarTree < SymbolType >::compose ( std::deque < sax::Token > & out ) c
 	out.emplace_back ( PrefixBarTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* PrefixBarTree < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
index b72b1a23e82eb6421a7293c143cfc21f02ea8ca3..65b72f21ba7963bd21322e35d22bc3558f2864f9 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
@@ -118,6 +119,8 @@ public:
 	static UnrankedNonlinearPattern parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -225,6 +228,11 @@ void UnrankedNonlinearPattern < SymbolType >::compose ( std::deque < sax::Token
 	out.emplace_back ( UnrankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* UnrankedNonlinearPattern < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h
index c130f8d8227acd5faa37df389554fcee83542edd..3ee6af57e962fd7798f415be5102c05e3a4a979b 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -17,6 +17,7 @@
 
 #include <core/components.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 
 #include "../TreeFeatures.h"
 #include "../TreeException.h"
@@ -106,6 +107,8 @@ public:
 	static UnrankedPattern parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -207,6 +210,11 @@ void UnrankedPattern < SymbolType >::compose ( std::deque < sax::Token > & out )
 	out.emplace_back ( UnrankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* UnrankedPattern < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h
index 567994e7806554ae4010af6c1a16c1eab13a4159..59dc654975a41b3b3ca807205322aff414512a99 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -17,6 +17,7 @@
 
 #include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
+#include <object/UniqueObject.h>
 
 #include "../TreeFeatures.h"
 #include "../UnrankedTreeBase.h"
@@ -101,6 +102,8 @@ public:
 	static UnrankedTree parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
@@ -200,6 +203,11 @@ void UnrankedTree < SymbolType >::compose ( std::deque < sax::Token > & out ) co
 	out.emplace_back ( UnrankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+template < class SymbolType >
+alib::ObjectBase* UnrankedTree < SymbolType >::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace tree */
 
 namespace std {
diff --git a/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.cpp b/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.cpp
index a917755adb332304a68883f20cd65cf7047387cd..34e481dcfc1abb829bc0c596b4342f214c1d1f8e 100644
--- a/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.cpp
+++ b/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.cpp
@@ -13,6 +13,7 @@
 #include <object/Object.h>
 #include <core/xmlApi.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "../common/GraphFromXMLParser.h"
 #include "../common/GraphToXMLComposer.h"
 #include "../Graph.h"
@@ -315,6 +316,9 @@ void AdjacencyListDirectedGraph::compose( std::deque<sax::Token> & out ) const
 	out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
 }
 
+alib::ObjectBase* AdjacencyListDirectedGraph::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
 
 } // namespace graph
 
diff --git a/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h b/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h
index a114f38a025148c5071b7f8eaa7a940cdc9928ef..aa75f9d2497138ad7bdf3beae9eb9d737aba3868 100644
--- a/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h
+++ b/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h
@@ -88,6 +88,8 @@ public:
 
 		return xmlTagName;
 	}
+
+	alib::ObjectBase * inc ( ) && override;
 };
 
 } // namespace graph
diff --git a/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp b/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp
index ab04d54bfe2942f4342069137c268c768f4252e4..4edc62476566a48a29505f4651c52e1d5974f135 100644
--- a/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp
+++ b/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp
@@ -13,6 +13,7 @@
 #include <object/Object.h>
 #include <core/xmlApi.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "../common/GraphFromXMLParser.h"
 #include "../common/GraphToXMLComposer.h"
 #include "../Graph.h"
@@ -316,6 +317,9 @@ void AdjacencyMatrixDirectedGraph::compose( std::deque<sax::Token> & out ) const
 	out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
 }
 
+alib::ObjectBase* AdjacencyMatrixDirectedGraph::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
 
 } // namespace graph
 
diff --git a/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h b/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h
index bbc7a48e146a4df67157e58ce2a74f980abcfabb..6151b63412f15edc552269e21e76e7d9ef32cc9e 100644
--- a/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h
+++ b/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h
@@ -91,6 +91,8 @@ public:
 
 		return xmlTagName;
 	}
+
+	alib::ObjectBase * inc ( ) && override;
 };
 
 } // namespace graph
diff --git a/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.cpp b/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.cpp
index 9f1f3fa04065eb4341fcc059fbd93eadea508348..47544fdbe3ade07e91335eeb7ffeba44211ccba3 100644
--- a/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.cpp
+++ b/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.cpp
@@ -13,6 +13,7 @@
 #include <object/Object.h>
 #include <core/xmlApi.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "../common/GraphFromXMLParser.h"
 #include "../common/GraphToXMLComposer.h"
 #include "../Graph.h"
@@ -244,6 +245,9 @@ void AdjacencyListUndirectedGraph::compose( std::deque<sax::Token> & out ) const
 	out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
 }
 
+alib::ObjectBase* AdjacencyListUndirectedGraph::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
 
 } // namespace graph
 
diff --git a/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h b/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h
index 71c09bb97483de4a2aad4cea5aab2da6d3dd8ae2..6fc8eba66f4568f416d869795845a3f19f5a7b3a 100644
--- a/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h
+++ b/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h
@@ -85,6 +85,8 @@ public:
 
 		return xmlTagName;
 	}
+
+	alib::ObjectBase * inc ( ) && override;
 };
 
 } // namespace graph
diff --git a/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp b/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp
index bcb81135113382c590ff15e8bac3e5c928242d79..859b0d7c2ee79158024cdc5b2296728506250450 100644
--- a/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp
+++ b/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp
@@ -13,6 +13,7 @@
 #include <object/Object.h>
 #include <core/xmlApi.hpp>
 #include <sax/FromXMLParserHelper.h>
+#include <object/UniqueObject.h>
 #include "../common/GraphFromXMLParser.h"
 #include "../common/GraphToXMLComposer.h"
 #include "../Graph.h"
@@ -258,6 +259,9 @@ void AdjacencyMatrixUndirectedGraph::compose( std::deque<sax::Token> & out ) con
 	out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
 }
 
+alib::ObjectBase* AdjacencyMatrixUndirectedGraph::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
 
 } // namespace graph
 
diff --git a/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h b/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h
index aa449eb63e3b1edea06651618fb0b64a510a91aa..338cf3d7da6be0a203c7f4d5259d2581fb1fc3bf 100644
--- a/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h
+++ b/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h
@@ -88,6 +88,8 @@ public:
 
 		return xmlTagName;
 	}
+
+	alib::ObjectBase * inc ( ) && override;
 };
 
 } // namespace graph
diff --git a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp
index 66865965c5871d04568e2d070a615abfde89691f..482cb51c10842f4a6e3f43f5babbbc16ea4ad51c 100644
--- a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp
+++ b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp
@@ -18,6 +18,7 @@
 #include "../common/IndexToXMLComposer.h"
 #include <object/Object.h>
 #include <core/xmlApi.hpp>
+#include <object/UniqueObject.h>
 
 namespace indexes {
 
@@ -133,6 +134,10 @@ void SuffixTrieFinalMark::compose ( std::deque < sax::Token > & out ) const {
 	out.emplace_back ( SuffixTrieFinalMark::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+alib::ObjectBase* SuffixTrieFinalMark::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace indexes */
 
 namespace alib {
diff --git a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.h b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.h
index 390b80644469609b4d881670e79f209600a59fc1..461ed8d8946daa4a29830b8193566aec605fa9f2 100644
--- a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.h
+++ b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.h
@@ -110,6 +110,8 @@ public:
 	static SuffixTrieFinalMark parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
diff --git a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp
index 6da2e7d97b8021fc811babb966e90acfa518e23e..89be56fb8682c4c9dfc22e6df057a743f3d10513 100644
--- a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp
+++ b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp
@@ -17,6 +17,7 @@
 #include "../common/IndexToXMLComposer.h"
 #include <object/Object.h>
 #include <core/xmlApi.hpp>
+#include <object/UniqueObject.h>
 
 namespace indexes {
 
@@ -130,6 +131,10 @@ void SuffixTrieTerminatingSymbol::compose ( std::deque < sax::Token > & out ) co
 	out.emplace_back ( SuffixTrieTerminatingSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+alib::ObjectBase* SuffixTrieTerminatingSymbol::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace indexes */
 
 namespace alib {
diff --git a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h
index 75bea8fbba946da8f20be003f6885ba22a90c833..c875decfa0e9680ccf923c3ff15eed58a304f326 100644
--- a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h
+++ b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h
@@ -106,6 +106,8 @@ public:
 	static SuffixTrieTerminatingSymbol parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace tree */
diff --git a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp
index 54efb988501a05a6eb28d9c2eff61aacc78b58e3..9e78fe3e515181d1608b48c135436970e711abc0 100644
--- a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp
+++ b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp
@@ -19,6 +19,7 @@
 #include <object/Object.h>
 #include <core/xmlApi.hpp>
 #include <core/castApi.hpp>
+#include <object/UniqueObject.h>
 
 namespace string {
 
@@ -116,6 +117,10 @@ void LinearStringTerminatingSymbol::compose ( std::deque < sax::Token > & out )
 	out.emplace_back ( LinearStringTerminatingSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
 }
 
+alib::ObjectBase* LinearStringTerminatingSymbol::inc() && {
+	return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0));
+}
+
 } /* namespace string */
 
 namespace alib {
diff --git a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
index 0d7da3741e1e450f03a5fe823444237d0d1f62ec..e0dc3b7874f1853864ca8b5a04d6838ee3c1a0d9 100644
--- a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
+++ b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
@@ -89,6 +89,8 @@ public:
 	static LinearStringTerminatingSymbol parse ( std::deque < sax::Token >::iterator & input );
 
 	void compose ( std::deque < sax::Token > & out ) const;
+
+	virtual alib::ObjectBase * inc ( ) &&;
 };
 
 } /* namespace string */