From ac9ea46b607dd6d46449f00bec71c2f91126fa7b Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Fri, 7 Jul 2017 15:39:14 +0200
Subject: [PATCH] expose normalized type in some classes

---
 alib2common/src/container/ObjectsDeque.h                        | 2 ++
 alib2common/src/container/ObjectsList.h                         | 2 ++
 alib2common/src/container/ObjectsMap.h                          | 2 ++
 alib2common/src/container/ObjectsPair.h                         | 2 ++
 alib2common/src/container/ObjectsSet.h                          | 2 ++
 alib2common/src/container/ObjectsTree.h                         | 2 ++
 alib2common/src/container/ObjectsTrie.h                         | 2 ++
 alib2common/src/container/ObjectsVector.h                       | 2 ++
 alib2common/src/exception/CommonException.h                     | 2 ++
 alib2common/src/primitive/Bool.h                                | 2 ++
 alib2common/src/primitive/Character.h                           | 2 ++
 alib2common/src/primitive/Double.h                              | 2 ++
 alib2common/src/primitive/Integer.h                             | 2 ++
 alib2common/src/primitive/String.h                              | 2 ++
 alib2common/src/primitive/Unsigned.h                            | 2 ++
 alib2common/src/primitive/UnsignedLong.h                        | 2 ++
 alib2data/src/alphabet/BarSymbol.h                              | 2 ++
 alib2data/src/alphabet/BlankSymbol.h                            | 2 ++
 alib2data/src/alphabet/BottomOfTheStackSymbol.h                 | 2 ++
 alib2data/src/alphabet/EndSymbol.h                              | 2 ++
 alib2data/src/alphabet/InitialSymbol.h                          | 2 ++
 alib2data/src/alphabet/LabeledSymbol.h                          | 2 ++
 alib2data/src/alphabet/NonlinearVariableSymbol.h                | 2 ++
 alib2data/src/alphabet/RankedSymbol.h                           | 2 ++
 alib2data/src/alphabet/StartSymbol.h                            | 2 ++
 alib2data/src/alphabet/SubtreeWildcardSymbol.h                  | 2 ++
 alib2data/src/alphabet/UniqueSymbol.h                           | 2 ++
 alib2data/src/alphabet/VariablesBarSymbol.h                     | 2 ++
 alib2data/src/automaton/FSM/CompactNFA.h                        | 2 ++
 alib2data/src/automaton/FSM/DFA.h                               | 2 ++
 alib2data/src/automaton/FSM/EpsilonNFA.h                        | 2 ++
 alib2data/src/automaton/FSM/ExtendedNFA.h                       | 2 ++
 alib2data/src/automaton/FSM/MultiInitialStateNFA.h              | 2 ++
 alib2data/src/automaton/PDA/DPDA.h                              | 2 ++
 alib2data/src/automaton/PDA/InputDrivenDPDA.h                   | 2 ++
 alib2data/src/automaton/PDA/InputDrivenNPDA.h                   | 2 ++
 alib2data/src/automaton/PDA/NPDA.h                              | 2 ++
 alib2data/src/automaton/PDA/NPDTA.h                             | 2 ++
 alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h   | 2 ++
 alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h   | 2 ++
 alib2data/src/automaton/PDA/SinglePopDPDA.h                     | 2 ++
 alib2data/src/automaton/PDA/SinglePopNPDA.h                     | 2 ++
 alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h               | 2 ++
 alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h               | 2 ++
 alib2data/src/automaton/TA/DFTA.h                               | 2 ++
 alib2data/src/automaton/TA/NFTA.h                               | 2 ++
 alib2data/src/automaton/TM/OneTapeDTM.h                         | 2 ++
 alib2data/src/grammar/ContextFree/CFG.h                         | 2 ++
 alib2data/src/grammar/ContextFree/CNF.h                         | 2 ++
 alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h              | 2 ++
 alib2data/src/grammar/ContextFree/GNF.h                         | 2 ++
 alib2data/src/grammar/ContextFree/LG.h                          | 2 ++
 alib2data/src/grammar/ContextSensitive/CSG.h                    | 2 ++
 alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h  | 2 ++
 alib2data/src/grammar/Regular/LeftLG.h                          | 2 ++
 alib2data/src/grammar/Regular/LeftRG.h                          | 2 ++
 alib2data/src/grammar/Regular/RightLG.h                         | 2 ++
 alib2data/src/grammar/Regular/RightRG.h                         | 2 ++
 .../grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h | 2 ++
 alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h        | 2 ++
 alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h | 2 ++
 alib2data/src/indexes/arbology/FullAndLinearIndex.h             | 2 ++
 alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h    | 2 ++
 alib2data/src/indexes/stringology/BNDMMatcher.h                 | 2 ++
 alib2data/src/indexes/stringology/BitParallelIndex.h            | 2 ++
 alib2data/src/indexes/stringology/CompressedBitParallelIndex.h  | 2 ++
 alib2data/src/indexes/stringology/PositionHeap.h                | 2 ++
 alib2data/src/indexes/stringology/SuffixArray.h                 | 2 ++
 alib2data/src/indexes/stringology/SuffixTrie.h                  | 2 ++
 alib2data/src/label/FailStateLabel.h                            | 2 ++
 alib2data/src/label/FinalStateLabel.h                           | 2 ++
 alib2data/src/label/HexavigesimalLabel.h                        | 2 ++
 alib2data/src/label/InitialStateLabel.h                         | 2 ++
 alib2data/src/label/ObjectLabel.h                               | 2 ++
 alib2data/src/label/PrimitiveLabel.h                            | 2 ++
 alib2data/src/label/UniqueLabel.h                               | 2 ++
 alib2data/src/regexp/formal/FormalRegExp.h                      | 2 ++
 alib2data/src/regexp/unbounded/UnboundedRegExp.h                | 2 ++
 alib2data/src/rte/formal/FormalRTE.h                            | 2 ++
 alib2data/src/string/CyclicString.h                             | 2 ++
 alib2data/src/string/Epsilon.h                                  | 2 ++
 alib2data/src/string/LinearString.h                             | 2 ++
 alib2data/src/tree/ranked/PostfixRankedTree.h                   | 2 ++
 alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h     | 2 ++
 alib2data/src/tree/ranked/PrefixRankedBarPattern.h              | 2 ++
 alib2data/src/tree/ranked/PrefixRankedBarTree.h                 | 2 ++
 alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h        | 2 ++
 alib2data/src/tree/ranked/PrefixRankedPattern.h                 | 2 ++
 alib2data/src/tree/ranked/PrefixRankedTree.h                    | 2 ++
 alib2data/src/tree/ranked/RankedNonlinearPattern.h              | 2 ++
 alib2data/src/tree/ranked/RankedPattern.h                       | 2 ++
 alib2data/src/tree/ranked/RankedTree.h                          | 2 ++
 alib2data/src/tree/unranked/PrefixBarTree.h                     | 2 ++
 alib2data/src/tree/unranked/UnrankedNonlinearPattern.h          | 2 ++
 alib2data/src/tree/unranked/UnrankedPattern.h                   | 2 ++
 alib2data/src/tree/unranked/UnrankedTree.h                      | 2 ++
 .../src/graph/directed/AdjacencyListDirectedGraph.h             | 2 ++
 .../src/graph/directed/AdjacencyMatrixDirectedGraph.h           | 2 ++
 .../src/graph/undirected/AdjacencyListUndirectedGraph.h         | 2 ++
 .../src/graph/undirected/AdjacencyMatrixUndirectedGraph.h       | 2 ++
 .../src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h        | 2 ++
 alib2data_experimental/src/label/LR0ItemsLabel.h                | 2 ++
 .../src/string/LinearStringTerminatingSymbol.h                  | 2 ++
 103 files changed, 206 insertions(+)

diff --git a/alib2common/src/container/ObjectsDeque.h b/alib2common/src/container/ObjectsDeque.h
index a0b9e9b0cb..aa975d2624 100644
--- a/alib2common/src/container/ObjectsDeque.h
+++ b/alib2common/src/container/ObjectsDeque.h
@@ -69,6 +69,8 @@ public:
 		return res;
 	}
 
+	typedef ObjectsDeque < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return new ObjectsDeque < alib::Object > ( normalizeRaw ( std::move ( * this ) ) );
 	}
diff --git a/alib2common/src/container/ObjectsList.h b/alib2common/src/container/ObjectsList.h
index 23ae170fa7..ea9cdfa679 100644
--- a/alib2common/src/container/ObjectsList.h
+++ b/alib2common/src/container/ObjectsList.h
@@ -69,6 +69,8 @@ public:
 		return res;
 	}
 
+	typedef ObjectsList < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return new ObjectsList < alib::Object > ( normalizeRaw ( std::move ( * this ) ) );
 	}
diff --git a/alib2common/src/container/ObjectsMap.h b/alib2common/src/container/ObjectsMap.h
index 2cc501c85f..996cba92cb 100644
--- a/alib2common/src/container/ObjectsMap.h
+++ b/alib2common/src/container/ObjectsMap.h
@@ -71,6 +71,8 @@ public:
 		return res;
 	}
 
+	typedef ObjectsMap < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return new ObjectsMap < alib::Object, alib::Object > ( normalizeRaw ( std::move ( * this ) ) );
 	}
diff --git a/alib2common/src/container/ObjectsPair.h b/alib2common/src/container/ObjectsPair.h
index 60ff385ae3..5d9c032402 100644
--- a/alib2common/src/container/ObjectsPair.h
+++ b/alib2common/src/container/ObjectsPair.h
@@ -65,6 +65,8 @@ public:
 		return std::make_pair ( alib::Object ( alib::AnyObject < FirstType > ( std::move ( source.first ) ) ), alib::Object ( alib::AnyObject < SecondType > ( std::move ( source.second ) ) ) );
 	}
 
+	typedef ObjectsPair < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return new ObjectsPair < alib::Object, alib::Object > ( normalizeRaw ( std::move ( * this ) ) );
 	}
diff --git a/alib2common/src/container/ObjectsSet.h b/alib2common/src/container/ObjectsSet.h
index f2d7399670..e39e4d15ff 100644
--- a/alib2common/src/container/ObjectsSet.h
+++ b/alib2common/src/container/ObjectsSet.h
@@ -69,6 +69,8 @@ public:
 		return res;
 	}
 
+	typedef ObjectsSet < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return new ObjectsSet < alib::Object > ( normalizeRaw ( std::move ( * this ) ) );
 	}
diff --git a/alib2common/src/container/ObjectsTree.h b/alib2common/src/container/ObjectsTree.h
index 114258239e..010f5a7583 100644
--- a/alib2common/src/container/ObjectsTree.h
+++ b/alib2common/src/container/ObjectsTree.h
@@ -70,6 +70,8 @@ public:
 		return std::tree < alib::Object > ( alib::Object ( alib::AnyObject < ElementType > ( std::move ( node.getData ( ) ) ) ), std::move ( children ) );
 	}
 
+	typedef ObjectsTree < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return new ObjectsTree < alib::Object > ( normalizeRaw ( std::move ( * this ) ) );
 	}
diff --git a/alib2common/src/container/ObjectsTrie.h b/alib2common/src/container/ObjectsTrie.h
index aee90811ac..76cd54c441 100644
--- a/alib2common/src/container/ObjectsTrie.h
+++ b/alib2common/src/container/ObjectsTrie.h
@@ -72,6 +72,8 @@ public:
 		return std::trie < alib::Object, alib::Object > ( alib::Object ( alib::AnyObject < ValueType > ( std::move ( node.getData ( ) ) ) ), std::move ( children ) );
 	}
 
+	typedef ObjectsTrie < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return new ObjectsTrie < alib::Object > ( normalizeRaw ( std::move ( * this ) ) );
 	}
diff --git a/alib2common/src/container/ObjectsVector.h b/alib2common/src/container/ObjectsVector.h
index 5ee06a051c..1d0ac34ad7 100644
--- a/alib2common/src/container/ObjectsVector.h
+++ b/alib2common/src/container/ObjectsVector.h
@@ -69,6 +69,8 @@ public:
 		return res;
 	}
 
+	typedef ObjectsVector < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return new ObjectsVector < alib::Object > ( normalizeRaw ( std::move ( * this ) ) );
 	}
diff --git a/alib2common/src/exception/CommonException.h b/alib2common/src/exception/CommonException.h
index 9fac25144f..c5129f0267 100644
--- a/alib2common/src/exception/CommonException.h
+++ b/alib2common/src/exception/CommonException.h
@@ -82,6 +82,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef CommonException normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2common/src/primitive/Bool.h b/alib2common/src/primitive/Bool.h
index 68c3d0857c..cf37e57a54 100644
--- a/alib2common/src/primitive/Bool.h
+++ b/alib2common/src/primitive/Bool.h
@@ -69,6 +69,8 @@ public:
 
 	virtual PrimitiveBase * inc ( ) &&;
 
+	typedef Bool normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2common/src/primitive/Character.h b/alib2common/src/primitive/Character.h
index 8d44ae1814..360e00f154 100644
--- a/alib2common/src/primitive/Character.h
+++ b/alib2common/src/primitive/Character.h
@@ -69,6 +69,8 @@ public:
 
 	virtual PrimitiveBase * inc ( ) &&;
 
+	typedef Character normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2common/src/primitive/Double.h b/alib2common/src/primitive/Double.h
index abff90e059..5ac0277a7e 100644
--- a/alib2common/src/primitive/Double.h
+++ b/alib2common/src/primitive/Double.h
@@ -69,6 +69,8 @@ public:
 
 	virtual PrimitiveBase * inc ( ) &&;
 
+	typedef Double normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2common/src/primitive/Integer.h b/alib2common/src/primitive/Integer.h
index bdecb3ce5a..84e129b0d0 100644
--- a/alib2common/src/primitive/Integer.h
+++ b/alib2common/src/primitive/Integer.h
@@ -69,6 +69,8 @@ public:
 
 	virtual PrimitiveBase * inc ( ) &&;
 
+	typedef Integer normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2common/src/primitive/String.h b/alib2common/src/primitive/String.h
index a3624f3d93..72105acc6e 100644
--- a/alib2common/src/primitive/String.h
+++ b/alib2common/src/primitive/String.h
@@ -70,6 +70,8 @@ public:
 
 	virtual PrimitiveBase * inc ( ) &&;
 
+	typedef String normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2common/src/primitive/Unsigned.h b/alib2common/src/primitive/Unsigned.h
index 3dfe67dd7f..e43b860f14 100644
--- a/alib2common/src/primitive/Unsigned.h
+++ b/alib2common/src/primitive/Unsigned.h
@@ -71,6 +71,8 @@ public:
 
 	virtual PrimitiveBase * inc ( ) &&;
 
+	typedef Unsigned normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2common/src/primitive/UnsignedLong.h b/alib2common/src/primitive/UnsignedLong.h
index 6ca67cc428..d1898b2670 100644
--- a/alib2common/src/primitive/UnsignedLong.h
+++ b/alib2common/src/primitive/UnsignedLong.h
@@ -69,6 +69,8 @@ public:
 
 	virtual PrimitiveBase * inc ( ) &&;
 
+	typedef UnsignedLong normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/alphabet/BarSymbol.h b/alib2data/src/alphabet/BarSymbol.h
index cc8dd94291..ede71a4c7d 100644
--- a/alib2data/src/alphabet/BarSymbol.h
+++ b/alib2data/src/alphabet/BarSymbol.h
@@ -57,6 +57,8 @@ public:
 
 	virtual SymbolBase * inc ( ) &&;
 
+	typedef BarSymbol normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/alphabet/BlankSymbol.h b/alib2data/src/alphabet/BlankSymbol.h
index 5da1f16cef..a33ac7bbad 100644
--- a/alib2data/src/alphabet/BlankSymbol.h
+++ b/alib2data/src/alphabet/BlankSymbol.h
@@ -57,6 +57,8 @@ public:
 
 	virtual SymbolBase * inc ( ) &&;
 
+	typedef BlankSymbol normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/alphabet/BottomOfTheStackSymbol.h b/alib2data/src/alphabet/BottomOfTheStackSymbol.h
index 2846eb61ce..b5a29cfcfd 100644
--- a/alib2data/src/alphabet/BottomOfTheStackSymbol.h
+++ b/alib2data/src/alphabet/BottomOfTheStackSymbol.h
@@ -57,6 +57,8 @@ public:
 
 	virtual SymbolBase * inc ( ) &&;
 
+	typedef BottomOfTheStackSymbol normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/alphabet/EndSymbol.h b/alib2data/src/alphabet/EndSymbol.h
index b2d4968ab0..df6dd24bcd 100644
--- a/alib2data/src/alphabet/EndSymbol.h
+++ b/alib2data/src/alphabet/EndSymbol.h
@@ -57,6 +57,8 @@ public:
 
 	virtual SymbolBase * inc ( ) &&;
 
+	typedef EndSymbol normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/alphabet/InitialSymbol.h b/alib2data/src/alphabet/InitialSymbol.h
index 937d4be94f..ecaadf82b9 100644
--- a/alib2data/src/alphabet/InitialSymbol.h
+++ b/alib2data/src/alphabet/InitialSymbol.h
@@ -58,6 +58,8 @@ public:
 
 	virtual SymbolBase * inc ( ) &&;
 
+	typedef InitialSymbol normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/alphabet/LabeledSymbol.h b/alib2data/src/alphabet/LabeledSymbol.h
index 11dbad4b03..8b42c47f4d 100644
--- a/alib2data/src/alphabet/LabeledSymbol.h
+++ b/alib2data/src/alphabet/LabeledSymbol.h
@@ -65,6 +65,8 @@ public:
 
 	virtual SymbolBase * inc ( ) &&;
 
+	typedef LabeledSymbol normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/alphabet/NonlinearVariableSymbol.h b/alib2data/src/alphabet/NonlinearVariableSymbol.h
index 1014187840..2f1b4862e7 100644
--- a/alib2data/src/alphabet/NonlinearVariableSymbol.h
+++ b/alib2data/src/alphabet/NonlinearVariableSymbol.h
@@ -74,6 +74,8 @@ public:
 
 	virtual SymbolBase * inc ( ) &&;
 
+	typedef NonlinearVariableSymbol < > normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		if ( typeid ( NonlinearVariableSymbol < > ) == typeid ( NonlinearVariableSymbol < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/alphabet/RankedSymbol.h b/alib2data/src/alphabet/RankedSymbol.h
index 8adaf52eb3..13d705792a 100644
--- a/alib2data/src/alphabet/RankedSymbol.h
+++ b/alib2data/src/alphabet/RankedSymbol.h
@@ -70,6 +70,8 @@ public:
 		return std::ranked_symbol < DefaultSymbolType, DefaultRankType > ( SymbolNormalize::normalizeSymbol ( std::move ( source.getSymbol ( ) ) ), DefaultRankType ( std::move ( source.getRank ( ) ) ) );
 	}
 
+	typedef RankedSymbol < > normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		if ( typeid ( RankedSymbol < > ) == typeid ( RankedSymbol < SymbolType, RankType > ) )
 			return this;
diff --git a/alib2data/src/alphabet/StartSymbol.h b/alib2data/src/alphabet/StartSymbol.h
index 44a830518e..2f3a58d9b7 100644
--- a/alib2data/src/alphabet/StartSymbol.h
+++ b/alib2data/src/alphabet/StartSymbol.h
@@ -57,6 +57,8 @@ public:
 
 	virtual SymbolBase * inc ( ) &&;
 
+	typedef StartSymbol normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/alphabet/SubtreeWildcardSymbol.h b/alib2data/src/alphabet/SubtreeWildcardSymbol.h
index b7067cbeec..6028ba7858 100644
--- a/alib2data/src/alphabet/SubtreeWildcardSymbol.h
+++ b/alib2data/src/alphabet/SubtreeWildcardSymbol.h
@@ -58,6 +58,8 @@ public:
 
 	virtual SymbolBase * inc ( ) &&;
 
+	typedef SubtreeWildcardSymbol normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/alphabet/UniqueSymbol.h b/alib2data/src/alphabet/UniqueSymbol.h
index 7570222bfe..2f05e774e6 100644
--- a/alib2data/src/alphabet/UniqueSymbol.h
+++ b/alib2data/src/alphabet/UniqueSymbol.h
@@ -65,6 +65,8 @@ public:
 
 	virtual SymbolBase * inc ( ) &&;
 
+	typedef UniqueSymbol normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/alphabet/VariablesBarSymbol.h b/alib2data/src/alphabet/VariablesBarSymbol.h
index a2f530cd84..fdeab2fc24 100644
--- a/alib2data/src/alphabet/VariablesBarSymbol.h
+++ b/alib2data/src/alphabet/VariablesBarSymbol.h
@@ -58,6 +58,8 @@ public:
 
 	virtual SymbolBase * inc ( ) &&;
 
+	typedef VariablesBarSymbol normalized_type;
+
 	virtual SymbolBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/automaton/FSM/CompactNFA.h b/alib2data/src/automaton/FSM/CompactNFA.h
index 96a07c0b4f..be78533633 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.h
+++ b/alib2data/src/automaton/FSM/CompactNFA.h
@@ -183,6 +183,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef CompactNFA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( CompactNFA < > ) == typeid ( CompactNFA < SymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/FSM/DFA.h b/alib2data/src/automaton/FSM/DFA.h
index 56deefbe42..30d98ba0f7 100644
--- a/alib2data/src/automaton/FSM/DFA.h
+++ b/alib2data/src/automaton/FSM/DFA.h
@@ -175,6 +175,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef DFA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( DFA < > ) == typeid ( DFA < SymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.h b/alib2data/src/automaton/FSM/EpsilonNFA.h
index 7d4f210ab7..175870473d 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.h
@@ -276,6 +276,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef EpsilonNFA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( EpsilonNFA < > ) == typeid ( EpsilonNFA < SymbolType, EpsilonType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.h b/alib2data/src/automaton/FSM/ExtendedNFA.h
index ad51588e94..817913247b 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.h
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.h
@@ -187,6 +187,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef ExtendedNFA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( ExtendedNFA < > ) == typeid ( ExtendedNFA < SymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
index ba75d0c412..84e592b900 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
@@ -201,6 +201,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef MultiInitialStateNFA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( MultiInitialStateNFA < > ) == typeid ( MultiInitialStateNFA < SymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/PDA/DPDA.h b/alib2data/src/automaton/PDA/DPDA.h
index ab99f5dab6..e3b00fe957 100644
--- a/alib2data/src/automaton/PDA/DPDA.h
+++ b/alib2data/src/automaton/PDA/DPDA.h
@@ -208,6 +208,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef DPDA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( DPDA < > ) == typeid ( DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
index 979e7ad6f3..967fd87b17 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
@@ -212,6 +212,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef InputDrivenDPDA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( InputDrivenDPDA < > ) == typeid ( InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
index f916b2c964..0dfad13878 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
@@ -221,6 +221,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef InputDrivenNPDA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( InputDrivenNPDA < > ) == typeid ( InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/PDA/NPDA.h b/alib2data/src/automaton/PDA/NPDA.h
index 9a6dad36d6..ce4e2b56da 100644
--- a/alib2data/src/automaton/PDA/NPDA.h
+++ b/alib2data/src/automaton/PDA/NPDA.h
@@ -206,6 +206,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef NPDA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( NPDA < > ) == typeid ( NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/PDA/NPDTA.h b/alib2data/src/automaton/PDA/NPDTA.h
index e84338d434..cebb961b30 100644
--- a/alib2data/src/automaton/PDA/NPDTA.h
+++ b/alib2data/src/automaton/PDA/NPDTA.h
@@ -230,6 +230,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef NPDTA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( NPDTA < > ) == typeid ( NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
index b7e521310a..2d74ff778f 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
@@ -234,6 +234,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef RealTimeHeightDeterministicDPDA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( RealTimeHeightDeterministicDPDA < > ) == typeid ( RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
index 0718f3ea9a..e9387a8fe4 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
@@ -275,6 +275,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef RealTimeHeightDeterministicNPDA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( RealTimeHeightDeterministicNPDA < > ) == typeid ( RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.h b/alib2data/src/automaton/PDA/SinglePopDPDA.h
index 0a6d722ae1..50712c81f1 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.h
@@ -199,6 +199,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef SinglePopDPDA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( SinglePopDPDA < > ) == typeid ( SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.h b/alib2data/src/automaton/PDA/SinglePopNPDA.h
index f134968944..542e1d1fac 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.h
@@ -206,6 +206,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef SinglePopNPDA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( SinglePopNPDA < > ) == typeid ( SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
index be2305b4cb..fd4419f506 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
@@ -267,6 +267,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef VisiblyPushdownDPDA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( VisiblyPushdownDPDA < > ) == typeid ( VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
index 6cb1e71de4..a1e20129cc 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
@@ -302,6 +302,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef VisiblyPushdownNPDA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( VisiblyPushdownNPDA < > ) == typeid ( VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/TA/DFTA.h b/alib2data/src/automaton/TA/DFTA.h
index 6efe2375b9..e12e185285 100644
--- a/alib2data/src/automaton/TA/DFTA.h
+++ b/alib2data/src/automaton/TA/DFTA.h
@@ -150,6 +150,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef DFTA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( DFTA < > ) == typeid ( DFTA < SymbolType, RankType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/TA/NFTA.h b/alib2data/src/automaton/TA/NFTA.h
index 53129b5804..140c906ebd 100644
--- a/alib2data/src/automaton/TA/NFTA.h
+++ b/alib2data/src/automaton/TA/NFTA.h
@@ -168,6 +168,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef NFTA < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( NFTA < > ) == typeid ( NFTA < SymbolType, RankType, StateType > ) )
 			return this;
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.h b/alib2data/src/automaton/TM/OneTapeDTM.h
index dbd2d5b774..6ae52378c3 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.h
+++ b/alib2data/src/automaton/TM/OneTapeDTM.h
@@ -187,6 +187,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef OneTapeDTM < > normalized_type;
+
 	virtual AutomatonBase * normalize ( ) && {
 		if ( typeid ( OneTapeDTM < > ) == typeid ( OneTapeDTM < SymbolType, StateType > ) )
 			return this;
diff --git a/alib2data/src/grammar/ContextFree/CFG.h b/alib2data/src/grammar/ContextFree/CFG.h
index 319df67569..a88a332884 100644
--- a/alib2data/src/grammar/ContextFree/CFG.h
+++ b/alib2data/src/grammar/ContextFree/CFG.h
@@ -121,6 +121,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef CFG < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( CFG < > ) == typeid ( CFG < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/ContextFree/CNF.h b/alib2data/src/grammar/ContextFree/CNF.h
index 99dec2db97..49a41faf96 100644
--- a/alib2data/src/grammar/ContextFree/CNF.h
+++ b/alib2data/src/grammar/ContextFree/CNF.h
@@ -128,6 +128,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef CNF < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( CNF < > ) == typeid ( CNF < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
index 7f48583bf1..b2a84a3b5a 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
@@ -123,6 +123,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef EpsilonFreeCFG < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( EpsilonFreeCFG < > ) == typeid ( EpsilonFreeCFG < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/ContextFree/GNF.h b/alib2data/src/grammar/ContextFree/GNF.h
index a7d85cc85c..600c49838b 100644
--- a/alib2data/src/grammar/ContextFree/GNF.h
+++ b/alib2data/src/grammar/ContextFree/GNF.h
@@ -124,6 +124,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef GNF < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( GNF < > ) == typeid ( GNF < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/ContextFree/LG.h b/alib2data/src/grammar/ContextFree/LG.h
index b45d22cc70..fd1276193f 100644
--- a/alib2data/src/grammar/ContextFree/LG.h
+++ b/alib2data/src/grammar/ContextFree/LG.h
@@ -125,6 +125,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef LG < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( LG < > ) == typeid ( LG < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.h b/alib2data/src/grammar/ContextSensitive/CSG.h
index 60798f44cb..32da801afe 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.h
+++ b/alib2data/src/grammar/ContextSensitive/CSG.h
@@ -117,6 +117,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef CSG < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( CSG < > ) == typeid ( CSG < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
index c46365433f..8d427d27b0 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
@@ -117,6 +117,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef NonContractingGrammar < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( NonContractingGrammar < > ) == typeid ( NonContractingGrammar < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/Regular/LeftLG.h b/alib2data/src/grammar/Regular/LeftLG.h
index accb91d52b..9c172ab9f5 100644
--- a/alib2data/src/grammar/Regular/LeftLG.h
+++ b/alib2data/src/grammar/Regular/LeftLG.h
@@ -124,6 +124,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef LeftLG < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( LeftLG < > ) == typeid ( LeftLG < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/Regular/LeftRG.h b/alib2data/src/grammar/Regular/LeftRG.h
index 9808617bf7..703748a43f 100644
--- a/alib2data/src/grammar/Regular/LeftRG.h
+++ b/alib2data/src/grammar/Regular/LeftRG.h
@@ -205,6 +205,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef LeftRG < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( LeftRG < > ) == typeid ( LeftRG < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/Regular/RightLG.h b/alib2data/src/grammar/Regular/RightLG.h
index 0daa2873f5..3abb6f1422 100644
--- a/alib2data/src/grammar/Regular/RightLG.h
+++ b/alib2data/src/grammar/Regular/RightLG.h
@@ -124,6 +124,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef RightLG < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( RightLG < > ) == typeid ( RightLG < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/Regular/RightRG.h b/alib2data/src/grammar/Regular/RightRG.h
index c7fbce6e9f..dd4b38b24d 100644
--- a/alib2data/src/grammar/Regular/RightRG.h
+++ b/alib2data/src/grammar/Regular/RightRG.h
@@ -145,6 +145,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef RightRG < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( RightRG < > ) == typeid ( RightRG < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
index deccf917d8..e40e908410 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
@@ -113,6 +113,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef ContextPreservingUnrestrictedGrammar < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( ContextPreservingUnrestrictedGrammar < > ) == typeid ( ContextPreservingUnrestrictedGrammar < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
index 8ec51e336f..663a633261 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
@@ -113,6 +113,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef UnrestrictedGrammar < > normalized_type;
+
 	virtual GrammarBase * normalize ( ) && {
 		if ( typeid ( UnrestrictedGrammar < > ) == typeid ( UnrestrictedGrammar < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h b/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h
index 2ada29763e..efa53cb6b3 100644
--- a/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h
+++ b/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h
@@ -119,6 +119,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef CompressedBitParallelTreeIndex < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		if ( typeid ( CompressedBitParallelTreeIndex < > ) == typeid ( CompressedBitParallelTreeIndex < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/indexes/arbology/FullAndLinearIndex.h b/alib2data/src/indexes/arbology/FullAndLinearIndex.h
index ffb7fdd283..80bae62846 100644
--- a/alib2data/src/indexes/arbology/FullAndLinearIndex.h
+++ b/alib2data/src/indexes/arbology/FullAndLinearIndex.h
@@ -114,6 +114,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef FullAndLinearIndex < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		if ( typeid ( FullAndLinearIndex < > ) == typeid ( FullAndLinearIndex < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h b/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h
index 9629fe3d4f..5d7c602203 100644
--- a/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h
+++ b/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h
@@ -120,6 +120,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef NonlinearFullAndLinearIndex < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		if ( typeid ( NonlinearFullAndLinearIndex < > ) == typeid ( NonlinearFullAndLinearIndex < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/indexes/stringology/BNDMMatcher.h b/alib2data/src/indexes/stringology/BNDMMatcher.h
index ea82fa48a5..e52f141b3e 100644
--- a/alib2data/src/indexes/stringology/BNDMMatcher.h
+++ b/alib2data/src/indexes/stringology/BNDMMatcher.h
@@ -115,6 +115,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef BNDMMatcher < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		if ( typeid ( BNDMMatcher < > ) == typeid ( BNDMMatcher < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/indexes/stringology/BitParallelIndex.h b/alib2data/src/indexes/stringology/BitParallelIndex.h
index bb6e507456..8c685e7429 100644
--- a/alib2data/src/indexes/stringology/BitParallelIndex.h
+++ b/alib2data/src/indexes/stringology/BitParallelIndex.h
@@ -112,6 +112,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef BitParallelIndex < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		if ( typeid ( BitParallelIndex < > ) == typeid ( BitParallelIndex < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/indexes/stringology/CompressedBitParallelIndex.h b/alib2data/src/indexes/stringology/CompressedBitParallelIndex.h
index 53bd95dd13..8cb1558c9c 100644
--- a/alib2data/src/indexes/stringology/CompressedBitParallelIndex.h
+++ b/alib2data/src/indexes/stringology/CompressedBitParallelIndex.h
@@ -112,6 +112,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef CompressedBitParallelIndex < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		if ( typeid ( CompressedBitParallelIndex < > ) == typeid ( CompressedBitParallelIndex < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/indexes/stringology/PositionHeap.h b/alib2data/src/indexes/stringology/PositionHeap.h
index 5e76e2b017..8ed2b108cc 100644
--- a/alib2data/src/indexes/stringology/PositionHeap.h
+++ b/alib2data/src/indexes/stringology/PositionHeap.h
@@ -122,6 +122,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef PositionHeap < > normalized_type;
+
 	PositionHeap < > normalizeRaw ( ) && {
 		std::set < DefaultSymbolType > alphabet = alphabet::SymbolNormalize::normalizeAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::trie < DefaultSymbolType, unsigned > trie = IndexesNormalize::normalizeTrie ( std::move ( m_trie ) );
diff --git a/alib2data/src/indexes/stringology/SuffixArray.h b/alib2data/src/indexes/stringology/SuffixArray.h
index 1ba1070828..a92835b31f 100644
--- a/alib2data/src/indexes/stringology/SuffixArray.h
+++ b/alib2data/src/indexes/stringology/SuffixArray.h
@@ -116,6 +116,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef SuffixArray < > normalized_type;
+
 	virtual ObjectBase * normalize ( ) && {
 		if ( typeid ( SuffixArray < > ) == typeid ( SuffixArray < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/indexes/stringology/SuffixTrie.h b/alib2data/src/indexes/stringology/SuffixTrie.h
index cbca5fb2d9..2b90c908c5 100644
--- a/alib2data/src/indexes/stringology/SuffixTrie.h
+++ b/alib2data/src/indexes/stringology/SuffixTrie.h
@@ -122,6 +122,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef SuffixTrie < > normalized_type;
+
 	virtual alib::ObjectBase * normalize ( ) && {
 		if ( typeid ( SuffixTrie < > ) == typeid ( SuffixTrie < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/label/FailStateLabel.h b/alib2data/src/label/FailStateLabel.h
index 373acf2558..c63a967786 100644
--- a/alib2data/src/label/FailStateLabel.h
+++ b/alib2data/src/label/FailStateLabel.h
@@ -58,6 +58,8 @@ public:
 
 	virtual LabelBase * inc ( ) &&;
 
+	typedef FailStateLabel normalized_type;
+
 	virtual LabelBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/label/FinalStateLabel.h b/alib2data/src/label/FinalStateLabel.h
index cbb28884dc..f24ccb0dc1 100644
--- a/alib2data/src/label/FinalStateLabel.h
+++ b/alib2data/src/label/FinalStateLabel.h
@@ -58,6 +58,8 @@ public:
 
 	virtual LabelBase * inc ( ) &&;
 
+	typedef FinalStateLabel normalized_type;
+
 	virtual LabelBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/label/HexavigesimalLabel.h b/alib2data/src/label/HexavigesimalLabel.h
index 6769d33d84..e1e6cea357 100644
--- a/alib2data/src/label/HexavigesimalLabel.h
+++ b/alib2data/src/label/HexavigesimalLabel.h
@@ -63,6 +63,8 @@ public:
 
 	virtual LabelBase * inc ( ) &&;
 
+	typedef HexavigesimalLabel normalized_type;
+
 	virtual LabelBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/label/InitialStateLabel.h b/alib2data/src/label/InitialStateLabel.h
index 7fdee2b762..7f1d1a53ea 100644
--- a/alib2data/src/label/InitialStateLabel.h
+++ b/alib2data/src/label/InitialStateLabel.h
@@ -58,6 +58,8 @@ public:
 
 	virtual LabelBase * inc ( ) &&;
 
+	typedef InitialStateLabel normalized_type;
+
 	virtual LabelBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/label/ObjectLabel.h b/alib2data/src/label/ObjectLabel.h
index 1d05c31597..a066dda2a3 100644
--- a/alib2data/src/label/ObjectLabel.h
+++ b/alib2data/src/label/ObjectLabel.h
@@ -61,6 +61,8 @@ public:
 
 	virtual LabelBase * inc ( ) &&;
 
+	typedef ObjectLabel normalized_type;
+
 	virtual LabelBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/label/PrimitiveLabel.h b/alib2data/src/label/PrimitiveLabel.h
index 7661b8a8fa..e37b6adce0 100644
--- a/alib2data/src/label/PrimitiveLabel.h
+++ b/alib2data/src/label/PrimitiveLabel.h
@@ -63,6 +63,8 @@ public:
 
 	virtual LabelBase * inc ( ) &&;
 
+	typedef PrimitiveLabel normalized_type;
+
 	virtual LabelBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/label/UniqueLabel.h b/alib2data/src/label/UniqueLabel.h
index eb719ee38d..f9ca252391 100644
--- a/alib2data/src/label/UniqueLabel.h
+++ b/alib2data/src/label/UniqueLabel.h
@@ -65,6 +65,8 @@ public:
 
 	virtual LabelBase * inc ( ) &&;
 
+	typedef UniqueLabel normalized_type;
+
 	virtual LabelBase * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data/src/regexp/formal/FormalRegExp.h b/alib2data/src/regexp/formal/FormalRegExp.h
index 22652937fe..819ff33e71 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.h
+++ b/alib2data/src/regexp/formal/FormalRegExp.h
@@ -105,6 +105,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef FormalRegExp < > normalized_type;
+
 	virtual RegExpBase * normalize ( ) && {
 		if ( typeid ( FormalRegExp < > ) == typeid ( FormalRegExp < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.h b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
index 9b7d006652..413fd5056f 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
@@ -105,6 +105,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef UnboundedRegExp < > normalized_type;
+
 	virtual RegExpBase * normalize ( ) && {
 		if ( typeid ( UnboundedRegExp < > ) == typeid ( UnboundedRegExp < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/rte/formal/FormalRTE.h b/alib2data/src/rte/formal/FormalRTE.h
index 6425a592cf..2740770e35 100644
--- a/alib2data/src/rte/formal/FormalRTE.h
+++ b/alib2data/src/rte/formal/FormalRTE.h
@@ -142,6 +142,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef FormalRTE < > normalized_type;
+
 	virtual RTEBase * normalize ( ) && {
 		if ( typeid ( FormalRTE < > ) == typeid ( FormalRTE < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/string/CyclicString.h b/alib2data/src/string/CyclicString.h
index 22dbd83350..ec2ac04cb5 100644
--- a/alib2data/src/string/CyclicString.h
+++ b/alib2data/src/string/CyclicString.h
@@ -91,6 +91,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef CyclicString < > normalized_type;
+
 	virtual StringBase * normalize ( ) && {
 		if ( typeid ( CyclicString < > ) == typeid ( CyclicString < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/string/Epsilon.h b/alib2data/src/string/Epsilon.h
index 77cfeef8d7..3a99330be8 100644
--- a/alib2data/src/string/Epsilon.h
+++ b/alib2data/src/string/Epsilon.h
@@ -85,6 +85,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef Epsilon < > normalized_type;
+
 	virtual StringBase * normalize ( ) && {
 		if ( typeid ( Epsilon < > ) == typeid ( Epsilon < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h
index 6941131e9e..79e77d2ad3 100644
--- a/alib2data/src/string/LinearString.h
+++ b/alib2data/src/string/LinearString.h
@@ -111,6 +111,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef LinearString < > normalized_type;
+
 	virtual StringBase * normalize ( ) && {
 		if ( typeid ( LinearString < > ) == typeid ( LinearString < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.h b/alib2data/src/tree/ranked/PostfixRankedTree.h
index 0ba7867d4c..65fc606194 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.h
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.h
@@ -95,6 +95,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef PostfixRankedTree < > normalized_type;
+
 	virtual RankedTreeBase * normalize ( ) && {
 		if ( typeid ( PostfixRankedTree < > ) == typeid ( PostfixRankedTree < SymbolType, RankType > ) )
 			return this;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
index 63cc98e7a1..0abdfa9d58 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -128,6 +128,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef PrefixRankedBarNonlinearPattern < > normalized_type;
+
 	virtual RankedTreeBase * normalize ( ) && {
 		if ( typeid ( PrefixRankedBarNonlinearPattern < > ) == typeid ( PrefixRankedBarNonlinearPattern < SymbolType, RankType > ) )
 			return this;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
index ef9cdf1fb3..7355ca9eec 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -117,6 +117,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef PrefixRankedBarPattern < > normalized_type;
+
 	virtual RankedTreeBase * normalize ( ) && {
 		if ( typeid ( PrefixRankedBarPattern < > ) == typeid ( PrefixRankedBarPattern < SymbolType, RankType > ) )
 			return this;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
index a85b7bccb9..fe77219140 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -104,6 +104,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef PrefixRankedBarTree < > normalized_type;
+
 	virtual RankedTreeBase * normalize ( ) && {
 		if ( typeid ( PrefixRankedBarTree < > ) == typeid ( PrefixRankedBarTree < SymbolType, RankType > ) )
 			return this;
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
index d6a08ae232..22776aee4f 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -112,6 +112,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef PrefixRankedNonlinearPattern < > normalized_type;
+
 	virtual RankedTreeBase * normalize ( ) && {
 		if ( typeid ( PrefixRankedNonlinearPattern < > ) == typeid ( PrefixRankedNonlinearPattern < SymbolType, RankType > ) )
 			return this;
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h
index 57d3f06fb4..1833974c4c 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -103,6 +103,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef PrefixRankedPattern < > normalized_type;
+
 	virtual RankedTreeBase * normalize ( ) && {
 		if ( typeid ( PrefixRankedPattern < > ) == typeid ( PrefixRankedPattern < SymbolType, RankType > ) )
 			return this;
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h
index fb766abb05..17bc696ead 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -95,6 +95,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef PrefixRankedTree < > normalized_type;
+
 	virtual RankedTreeBase * normalize ( ) && {
 		if ( typeid ( PrefixRankedTree < > ) == typeid ( PrefixRankedTree < SymbolType, RankType > ) )
 			return this;
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
index 6204c48989..bc8879c749 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -120,6 +120,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef RankedNonlinearPattern < > normalized_type;
+
 	virtual RankedTreeBase * normalize ( ) && {
 		if ( typeid ( RankedNonlinearPattern < > ) == typeid ( RankedNonlinearPattern < SymbolType, RankType > ) )
 			return this;
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index f2191f1e0e..afb2c4dc51 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -114,6 +114,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef RankedPattern < > normalized_type;
+
 	virtual RankedTreeBase * normalize ( ) && {
 		if ( typeid ( RankedPattern < > ) == typeid ( RankedPattern < SymbolType, RankType > ) )
 			return this;
diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h
index df92d6a985..608f6fbcff 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -111,6 +111,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef RankedTree < > normalized_type;
+
 	virtual RankedTreeBase * normalize ( ) && {
 		if ( typeid ( RankedTree < > ) == typeid ( RankedTree < SymbolType, RankType > ) )
 			return this;
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h
index bb465edfd4..f1e117ffbd 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -101,6 +101,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef PrefixBarTree < > normalized_type;
+
 	virtual UnrankedTreeBase * normalize ( ) && {
 		if ( typeid ( PrefixBarTree < > ) == typeid ( PrefixBarTree < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
index 7cbb4d6a73..4fbae19c36 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -124,6 +124,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef UnrankedNonlinearPattern < > normalized_type;
+
 	virtual UnrankedTreeBase * normalize ( ) && {
 		if ( typeid ( UnrankedNonlinearPattern < > ) == typeid ( UnrankedNonlinearPattern < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h
index 712d8ed194..ceb97d5194 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -112,6 +112,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef UnrankedPattern < > normalized_type;
+
 	virtual UnrankedTreeBase * normalize ( ) && {
 		if ( typeid ( UnrankedPattern < > ) == typeid ( UnrankedPattern < SymbolType > ) )
 			return this;
diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h
index ef7a640e4a..680809ce20 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -107,6 +107,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef UnrankedTree < > normalized_type;
+
 	virtual UnrankedTreeBase * normalize ( ) && {
 		if ( typeid ( UnrankedTree < > ) == typeid ( UnrankedTree < SymbolType > ) )
 			return this;
diff --git a/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h b/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h
index 5b67f45fc5..a3798cb92b 100644
--- a/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h
+++ b/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h
@@ -91,6 +91,8 @@ public:
 
 	alib::ObjectBase * inc ( ) && override;
 
+	typedef AdjacencyListDirectedGraph normalized_type;
+
 	virtual AdjacencyListDirectedGraph * normalize ( ) && override {
 		return this;
 	}
diff --git a/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h b/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h
index 9bb8b67051..994adf0f68 100644
--- a/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h
+++ b/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h
@@ -94,6 +94,8 @@ public:
 
 	alib::ObjectBase * inc ( ) && override;
 
+	typedef AdjacencyMatrixDirectedGraph normalized_type;
+
 	virtual AdjacencyMatrixDirectedGraph * normalize ( ) && override {
 		return this;
 	}
diff --git a/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h b/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h
index 52e931c513..43796654b4 100644
--- a/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h
+++ b/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h
@@ -88,6 +88,8 @@ public:
 
 	alib::ObjectBase * inc ( ) && override;
 
+	typedef AdjacencyListUndirectedGraph normalized_type;
+
 	virtual AdjacencyListUndirectedGraph * normalize ( ) && override {
 		return this;
 	}
diff --git a/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h b/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h
index 62b32d1064..5245f7794b 100644
--- a/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h
+++ b/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h
@@ -91,6 +91,8 @@ public:
 
 	alib::ObjectBase * inc ( ) && override;
 
+	typedef AdjacencyMatrixUndirectedGraph normalized_type;
+
 	virtual AdjacencyMatrixUndirectedGraph * normalize ( ) && override {
 		return this;
 	}
diff --git a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h
index b384d6cfd6..45ce08bbee 100644
--- a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h
+++ b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h
@@ -109,6 +109,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef SuffixTrieTerminatingSymbol normalized_type;
+
 	virtual SuffixTrieTerminatingSymbol * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data_experimental/src/label/LR0ItemsLabel.h b/alib2data_experimental/src/label/LR0ItemsLabel.h
index 8e19c6b8fe..fd3d1b0d28 100644
--- a/alib2data_experimental/src/label/LR0ItemsLabel.h
+++ b/alib2data_experimental/src/label/LR0ItemsLabel.h
@@ -78,6 +78,8 @@ public:
 
 	virtual LabelBase * inc ( ) &&;
 
+	typedef LR0ItemsLabel normalized_type;
+
 	virtual LR0ItemsLabel * normalize ( ) && {
 		return this;
 	}
diff --git a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
index ec33758c1a..829635e6e8 100644
--- a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
+++ b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
@@ -92,6 +92,8 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
+	typedef LinearStringTerminatingSymbol normalized_type;
+
 	virtual LinearStringTerminatingSymbol * normalize ( ) && {
 		return this;
 	}
-- 
GitLab