From 06541608a7c501ea3fa4a8d5ee0a60d14b60c1e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Tr=C3=A1vn=C3=AD=C4=8Dek?= <jan.travnicek@fit.cvut.cz>
Date: Tue, 15 Feb 2022 19:01:24 +0100
Subject: [PATCH] data: extern value holder

---
 .../src/abstraction/ValueHolder.hpp           | 63 +++++++++++--------
 alib2data/src/automaton/FSM/CompactDFA.cpp    |  1 +
 alib2data/src/automaton/FSM/CompactDFA.h      |  1 +
 alib2data/src/automaton/FSM/CompactNFA.cpp    |  1 +
 alib2data/src/automaton/FSM/CompactNFA.h      |  1 +
 alib2data/src/automaton/FSM/DFA.cpp           |  1 +
 alib2data/src/automaton/FSM/DFA.h             |  1 +
 alib2data/src/automaton/FSM/EpsilonNFA.cpp    |  1 +
 alib2data/src/automaton/FSM/EpsilonNFA.h      |  1 +
 alib2data/src/automaton/FSM/ExtendedNFA.cpp   |  1 +
 alib2data/src/automaton/FSM/ExtendedNFA.h     |  1 +
 .../FSM/MultiInitialStateEpsilonNFA.cpp       |  1 +
 .../FSM/MultiInitialStateEpsilonNFA.h         |  1 +
 .../automaton/FSM/MultiInitialStateNFA.cpp    |  1 +
 .../src/automaton/FSM/MultiInitialStateNFA.h  |  1 +
 alib2data/src/automaton/FSM/NFA.cpp           |  1 +
 alib2data/src/automaton/FSM/NFA.h             |  1 +
 alib2data/src/automaton/PDA/DPDA.cpp          |  1 +
 alib2data/src/automaton/PDA/DPDA.h            |  1 +
 .../src/automaton/PDA/InputDrivenDPDA.cpp     |  1 +
 alib2data/src/automaton/PDA/InputDrivenDPDA.h |  1 +
 .../src/automaton/PDA/InputDrivenNPDA.cpp     |  1 +
 alib2data/src/automaton/PDA/InputDrivenNPDA.h |  1 +
 alib2data/src/automaton/PDA/NPDA.cpp          |  1 +
 alib2data/src/automaton/PDA/NPDA.h            |  1 +
 alib2data/src/automaton/PDA/NPDTA.cpp         |  1 +
 alib2data/src/automaton/PDA/NPDTA.h           |  1 +
 .../PDA/RealTimeHeightDeterministicDPDA.cpp   |  1 +
 .../PDA/RealTimeHeightDeterministicDPDA.h     |  1 +
 .../PDA/RealTimeHeightDeterministicNPDA.cpp   |  1 +
 .../PDA/RealTimeHeightDeterministicNPDA.h     |  1 +
 alib2data/src/automaton/PDA/SinglePopDPDA.cpp |  1 +
 alib2data/src/automaton/PDA/SinglePopDPDA.h   |  1 +
 alib2data/src/automaton/PDA/SinglePopNPDA.cpp |  1 +
 alib2data/src/automaton/PDA/SinglePopNPDA.h   |  1 +
 .../src/automaton/PDA/VisiblyPushdownDPDA.cpp |  1 +
 .../src/automaton/PDA/VisiblyPushdownDPDA.h   |  1 +
 .../src/automaton/PDA/VisiblyPushdownNPDA.cpp |  1 +
 .../src/automaton/PDA/VisiblyPushdownNPDA.h   |  1 +
 .../TA/ArcFactoredDeterministicZAutomaton.cpp |  1 +
 .../TA/ArcFactoredDeterministicZAutomaton.h   |  1 +
 .../ArcFactoredNondeterministicZAutomaton.cpp |  1 +
 .../ArcFactoredNondeterministicZAutomaton.h   |  1 +
 alib2data/src/automaton/TA/DFTA.cpp           |  1 +
 alib2data/src/automaton/TA/DFTA.h             |  1 +
 alib2data/src/automaton/TA/EpsilonNFTA.cpp    |  1 +
 alib2data/src/automaton/TA/EpsilonNFTA.h      |  1 +
 alib2data/src/automaton/TA/ExtendedNFTA.cpp   |  1 +
 alib2data/src/automaton/TA/ExtendedNFTA.h     |  1 +
 alib2data/src/automaton/TA/NFTA.cpp           |  1 +
 alib2data/src/automaton/TA/NFTA.h             |  1 +
 .../TA/NondeterministicZAutomaton.cpp         |  1 +
 .../automaton/TA/NondeterministicZAutomaton.h |  1 +
 alib2data/src/automaton/TA/UnorderedDFTA.cpp  |  1 +
 alib2data/src/automaton/TA/UnorderedDFTA.h    |  1 +
 alib2data/src/automaton/TA/UnorderedNFTA.cpp  |  1 +
 alib2data/src/automaton/TA/UnorderedNFTA.h    |  1 +
 alib2data/src/automaton/TM/OneTapeDTM.cpp     |  1 +
 alib2data/src/automaton/TM/OneTapeDTM.h       |  1 +
 alib2data/src/grammar/ContextFree/CFG.cpp     |  1 +
 alib2data/src/grammar/ContextFree/CFG.h       |  1 +
 alib2data/src/grammar/ContextFree/CNF.cpp     |  1 +
 alib2data/src/grammar/ContextFree/CNF.h       |  1 +
 .../grammar/ContextFree/EpsilonFreeCFG.cpp    |  1 +
 .../src/grammar/ContextFree/EpsilonFreeCFG.h  |  1 +
 alib2data/src/grammar/ContextFree/GNF.cpp     |  1 +
 alib2data/src/grammar/ContextFree/GNF.h       |  1 +
 alib2data/src/grammar/ContextFree/LG.cpp      |  1 +
 alib2data/src/grammar/ContextFree/LG.h        |  1 +
 .../src/grammar/ContextSensitive/CSG.cpp      |  1 +
 alib2data/src/grammar/ContextSensitive/CSG.h  |  1 +
 .../NonContractingGrammar.cpp                 |  1 +
 .../ContextSensitive/NonContractingGrammar.h  |  1 +
 alib2data/src/grammar/Regular/LeftLG.cpp      |  1 +
 alib2data/src/grammar/Regular/LeftLG.h        |  1 +
 alib2data/src/grammar/Regular/LeftRG.cpp      |  1 +
 alib2data/src/grammar/Regular/LeftRG.h        |  1 +
 alib2data/src/grammar/Regular/RightLG.cpp     |  1 +
 alib2data/src/grammar/Regular/RightLG.h       |  1 +
 alib2data/src/grammar/Regular/RightRG.cpp     |  1 +
 alib2data/src/grammar/Regular/RightRG.h       |  1 +
 .../ContextPreservingUnrestrictedGrammar.cpp  |  1 +
 .../ContextPreservingUnrestrictedGrammar.h    |  1 +
 .../Unrestricted/UnrestrictedGrammar.cpp      |  1 +
 .../Unrestricted/UnrestrictedGrammar.h        |  1 +
 alib2data/src/regexp/formal/FormalRegExp.cpp  |  1 +
 alib2data/src/regexp/formal/FormalRegExp.h    |  1 +
 .../src/regexp/unbounded/UnboundedRegExp.cpp  |  1 +
 .../src/regexp/unbounded/UnboundedRegExp.h    |  1 +
 alib2data/src/rte/formal/FormalRTE.cpp        |  1 +
 alib2data/src/rte/formal/FormalRTE.h          |  1 +
 alib2data/src/string/CyclicString.cpp         |  1 +
 alib2data/src/string/CyclicString.h           |  1 +
 alib2data/src/string/LinearString.cpp         |  1 +
 alib2data/src/string/LinearString.h           |  1 +
 alib2data/src/string/WildcardLinearString.cpp |  1 +
 alib2data/src/string/WildcardLinearString.h   |  1 +
 .../src/tree/ranked/PostfixRankedTree.cpp     |  1 +
 alib2data/src/tree/ranked/PostfixRankedTree.h |  1 +
 .../PrefixRankedBarNonlinearPattern.cpp       |  1 +
 .../ranked/PrefixRankedBarNonlinearPattern.h  |  1 +
 .../tree/ranked/PrefixRankedBarPattern.cpp    |  1 +
 .../src/tree/ranked/PrefixRankedBarPattern.h  |  1 +
 .../src/tree/ranked/PrefixRankedBarTree.cpp   |  1 +
 .../src/tree/ranked/PrefixRankedBarTree.h     |  1 +
 .../ranked/PrefixRankedExtendedPattern.cpp    |  1 +
 .../tree/ranked/PrefixRankedExtendedPattern.h |  1 +
 .../ranked/PrefixRankedNonlinearPattern.cpp   |  1 +
 .../ranked/PrefixRankedNonlinearPattern.h     |  1 +
 .../src/tree/ranked/PrefixRankedPattern.cpp   |  1 +
 .../src/tree/ranked/PrefixRankedPattern.h     |  1 +
 .../src/tree/ranked/PrefixRankedTree.cpp      |  1 +
 alib2data/src/tree/ranked/PrefixRankedTree.h  |  1 +
 .../src/tree/ranked/RankedExtendedPattern.cpp |  1 +
 .../src/tree/ranked/RankedExtendedPattern.h   |  1 +
 .../tree/ranked/RankedNonlinearPattern.cpp    |  1 +
 .../src/tree/ranked/RankedNonlinearPattern.h  |  1 +
 alib2data/src/tree/ranked/RankedPattern.cpp   |  1 +
 alib2data/src/tree/ranked/RankedPattern.h     |  1 +
 alib2data/src/tree/ranked/RankedTree.cpp      |  1 +
 alib2data/src/tree/ranked/RankedTree.h        |  1 +
 .../tree/ranked/UnorderedRankedPattern.cpp    |  1 +
 .../src/tree/ranked/UnorderedRankedPattern.h  |  1 +
 .../src/tree/ranked/UnorderedRankedTree.cpp   |  1 +
 .../src/tree/ranked/UnorderedRankedTree.h     |  1 +
 alib2data/src/tree/unranked/PrefixBarTree.cpp |  1 +
 alib2data/src/tree/unranked/PrefixBarTree.h   |  1 +
 .../unranked/UnorderedUnrankedPattern.cpp     |  1 +
 .../tree/unranked/UnorderedUnrankedPattern.h  |  1 +
 .../tree/unranked/UnorderedUnrankedTree.cpp   |  1 +
 .../src/tree/unranked/UnorderedUnrankedTree.h |  1 +
 .../tree/unranked/UnrankedExtendedPattern.cpp |  1 +
 .../tree/unranked/UnrankedExtendedPattern.h   |  1 +
 .../unranked/UnrankedNonlinearPattern.cpp     |  1 +
 .../tree/unranked/UnrankedNonlinearPattern.h  |  1 +
 .../src/tree/unranked/UnrankedPattern.cpp     |  1 +
 alib2data/src/tree/unranked/UnrankedPattern.h |  1 +
 alib2data/src/tree/unranked/UnrankedTree.cpp  |  1 +
 alib2data/src/tree/unranked/UnrankedTree.h    |  1 +
 139 files changed, 176 insertions(+), 25 deletions(-)

diff --git a/alib2abstraction/src/abstraction/ValueHolder.hpp b/alib2abstraction/src/abstraction/ValueHolder.hpp
index fb390b2579..25c56ff9cb 100644
--- a/alib2abstraction/src/abstraction/ValueHolder.hpp
+++ b/alib2abstraction/src/abstraction/ValueHolder.hpp
@@ -56,39 +56,52 @@ template < class Type >
 class ValueHolder : public std::conditional_t < std::is_reference_v < Type >, ReferenceImpl < std::decay_t < Type > >, ValueImpl < std::decay_t < Type > > > {
 	bool m_isTemporary;
 
-	abstraction::TypeQualifiers::TypeQualifierSet getTypeQualifiers ( ) const override {
-		return abstraction::TypeQualifiers::typeQualifiers < Type > ( );
-	}
+	abstraction::TypeQualifiers::TypeQualifierSet getTypeQualifiers ( ) const override;
 
-	core::type_details getActualType ( ) const override {
-		return core::type_details::get ( this->getValue ( ) );
-	}
+	core::type_details getActualType ( ) const override;
 
-	core::type_details getDeclaredType ( ) const override {
-		return core::type_details::get < std::decay_t < Type > > ( );
-	}
+	core::type_details getDeclaredType ( ) const override;
 
 	bool isTemporary ( ) const override {
 		return m_isTemporary;
 	}
 
-	std::unique_ptr < abstraction::Value > asValue ( bool move, bool temporary ) override {
-		if constexpr ( std::is_abstract_v < std::decay_t < Type > > )
-			throw std::domain_error ( "Cannot declare value of abstract class." );
-		else if constexpr ( ! std::is_assignable_v < std::decay_t < Type > &, std::decay_t < Type > > )
-			throw std::domain_error ( "Cannot assign value." );
-		else
-			return std::make_unique < abstraction::ValueHolder < std::decay_t < Type > > > ( retrieveValue < std::decay_t < Type > > ( this->shared_from_this ( ), move ), temporary );
-	}
-
+	std::unique_ptr < abstraction::Value > asValue ( bool move, bool temporary ) override;
 public:
-	ValueHolder ( Type && value, bool temporary ) : m_isTemporary ( temporary ) {
-		if ( TypeQualifiers::isLvalueRef ( abstraction::TypeQualifiers::typeQualifiers < Type > ( ) ) && this->isTemporary ( ) )
-			throw std::domain_error ( "Lvalue references cannot be temporaries." );
-
-		this->setValue ( std::forward < Type > ( value ) );
-	}
+	ValueHolder ( Type && value, bool temporary );
 };
 
-} /* namespace abstraction */
+template < class Type >
+abstraction::TypeQualifiers::TypeQualifierSet ValueHolder < Type >::getTypeQualifiers ( ) const {
+	return abstraction::TypeQualifiers::typeQualifiers < Type > ( );
+}
 
+template < class Type >
+core::type_details ValueHolder < Type >::getActualType ( ) const {
+	return core::type_details::get ( this->getValue ( ) );
+}
+
+template < class Type >
+core::type_details ValueHolder < Type >::getDeclaredType ( ) const {
+	return core::type_details::get < std::decay_t < Type > > ( );
+}
+
+template < class Type >
+std::unique_ptr < abstraction::Value > ValueHolder < Type >::asValue ( bool move, bool temporary ) {
+	if constexpr ( std::is_abstract_v < std::decay_t < Type > > )
+		throw std::domain_error ( "Cannot declare value of abstract class." );
+	else if constexpr ( ! std::is_assignable_v < std::decay_t < Type > &, std::decay_t < Type > > )
+		throw std::domain_error ( "Cannot assign value." );
+	else
+		return std::make_unique < abstraction::ValueHolder < std::decay_t < Type > > > ( retrieveValue < std::decay_t < Type > > ( this->shared_from_this ( ), move ), temporary );
+}
+
+template < class Type >
+ValueHolder < Type >::ValueHolder ( Type && value, bool temporary ) : m_isTemporary ( temporary ) {
+	if ( TypeQualifiers::isLvalueRef ( abstraction::TypeQualifiers::typeQualifiers < Type > ( ) ) && this->isTemporary ( ) )
+		throw std::domain_error ( "Lvalue references cannot be temporaries." );
+
+	this->setValue ( std::forward < Type > ( value ) );
+}
+
+} /* namespace abstraction */
diff --git a/alib2data/src/automaton/FSM/CompactDFA.cpp b/alib2data/src/automaton/FSM/CompactDFA.cpp
index 33feec0cc8..1ab41f5e97 100644
--- a/alib2data/src/automaton/FSM/CompactDFA.cpp
+++ b/alib2data/src/automaton/FSM/CompactDFA.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class automaton::CompactDFA < >;
+template class abstraction::ValueHolder < automaton::CompactDFA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::CompactDFA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::CompactDFA < > >;
 
diff --git a/alib2data/src/automaton/FSM/CompactDFA.h b/alib2data/src/automaton/FSM/CompactDFA.h
index fdea97e431..1376212a5e 100644
--- a/alib2data/src/automaton/FSM/CompactDFA.h
+++ b/alib2data/src/automaton/FSM/CompactDFA.h
@@ -778,5 +778,6 @@ struct type_details_retriever < automaton::CompactDFA < SymbolType, StateType >
 } /* namespace core */
 
 extern template class automaton::CompactDFA < >;
+extern template class abstraction::ValueHolder < automaton::CompactDFA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::CompactDFA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::CompactDFA < > >;
diff --git a/alib2data/src/automaton/FSM/CompactNFA.cpp b/alib2data/src/automaton/FSM/CompactNFA.cpp
index 64cf56f620..62c1fdf185 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.cpp
+++ b/alib2data/src/automaton/FSM/CompactNFA.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class automaton::CompactNFA < >;
+template class abstraction::ValueHolder < automaton::CompactNFA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::CompactNFA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::CompactNFA < > >;
 
diff --git a/alib2data/src/automaton/FSM/CompactNFA.h b/alib2data/src/automaton/FSM/CompactNFA.h
index c6844e0887..65fa996218 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.h
+++ b/alib2data/src/automaton/FSM/CompactNFA.h
@@ -849,5 +849,6 @@ struct type_details_retriever < automaton::CompactNFA < SymbolType, StateType >
 } /* namespace core */
 
 extern template class automaton::CompactNFA < >;
+extern template class abstraction::ValueHolder < automaton::CompactNFA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::CompactNFA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::CompactNFA < > >;
diff --git a/alib2data/src/automaton/FSM/DFA.cpp b/alib2data/src/automaton/FSM/DFA.cpp
index 6c7eb1b078..9fbc1be1ef 100644
--- a/alib2data/src/automaton/FSM/DFA.cpp
+++ b/alib2data/src/automaton/FSM/DFA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::DFA < >;
+template class abstraction::ValueHolder < automaton::DFA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::DFA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::DFA < > >;
 
diff --git a/alib2data/src/automaton/FSM/DFA.h b/alib2data/src/automaton/FSM/DFA.h
index 6ca984bf80..b26bac9059 100644
--- a/alib2data/src/automaton/FSM/DFA.h
+++ b/alib2data/src/automaton/FSM/DFA.h
@@ -771,5 +771,6 @@ struct type_details_retriever < automaton::DFA < SymbolType, StateType > > {
 } /* namespace core */
 
 extern template class automaton::DFA < >;
+extern template class abstraction::ValueHolder < automaton::DFA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::DFA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::DFA < > >;
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.cpp b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
index e1ba22bbd8..d2ae119c19 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class automaton::EpsilonNFA < >;
+template class abstraction::ValueHolder < automaton::EpsilonNFA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::EpsilonNFA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::EpsilonNFA < > >;
 
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.h b/alib2data/src/automaton/FSM/EpsilonNFA.h
index 5838dcdd6e..61f9768846 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.h
@@ -1062,5 +1062,6 @@ struct type_details_retriever < automaton::EpsilonNFA < SymbolType, StateType >
 } /* namespace core */
 
 extern template class automaton::EpsilonNFA < >;
+extern template class abstraction::ValueHolder < automaton::EpsilonNFA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::EpsilonNFA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::EpsilonNFA < > >;
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.cpp b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
index e90cf35848..e50db95fc8 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.cpp
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class automaton::ExtendedNFA < >;
+template class abstraction::ValueHolder < automaton::ExtendedNFA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::ExtendedNFA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::ExtendedNFA < > >;
 
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.h b/alib2data/src/automaton/FSM/ExtendedNFA.h
index 397b2e4bc5..0b506c61f2 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.h
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.h
@@ -875,5 +875,6 @@ struct type_details_retriever < automaton::ExtendedNFA < SymbolType, StateType >
 } /* namespace core */
 
 extern template class automaton::ExtendedNFA < >;
+extern template class abstraction::ValueHolder < automaton::ExtendedNFA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::ExtendedNFA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::ExtendedNFA < > >;
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp
index 3ba0d668d0..0606ecb975 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class automaton::MultiInitialStateEpsilonNFA < >;
+template class abstraction::ValueHolder < automaton::MultiInitialStateEpsilonNFA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::MultiInitialStateEpsilonNFA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::MultiInitialStateEpsilonNFA < > >;
 
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h
index 486a00ea24..7d6e6cda48 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h
@@ -1107,5 +1107,6 @@ struct type_details_retriever < automaton::MultiInitialStateEpsilonNFA < SymbolT
 } /* namespace core */
 
 extern template class automaton::MultiInitialStateEpsilonNFA < >;
+extern template class abstraction::ValueHolder < automaton::MultiInitialStateEpsilonNFA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::MultiInitialStateEpsilonNFA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::MultiInitialStateEpsilonNFA < > >;
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
index 8071783cd6..4712349d57 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class automaton::MultiInitialStateNFA < >;
+template class abstraction::ValueHolder < automaton::MultiInitialStateNFA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::MultiInitialStateNFA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::MultiInitialStateNFA < > >;
 
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
index e51f0103ed..f991116b45 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
@@ -836,5 +836,6 @@ struct type_details_retriever < automaton::MultiInitialStateNFA < SymbolType, St
 } /* namespace core */
 
 extern template class automaton::MultiInitialStateNFA < >;
+extern template class abstraction::ValueHolder < automaton::MultiInitialStateNFA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::MultiInitialStateNFA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::MultiInitialStateNFA < > >;
diff --git a/alib2data/src/automaton/FSM/NFA.cpp b/alib2data/src/automaton/FSM/NFA.cpp
index 6f3de9b71c..a85ce77e7b 100644
--- a/alib2data/src/automaton/FSM/NFA.cpp
+++ b/alib2data/src/automaton/FSM/NFA.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class automaton::NFA < >;
+template class abstraction::ValueHolder < automaton::NFA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::NFA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::NFA < > >;
 
diff --git a/alib2data/src/automaton/FSM/NFA.h b/alib2data/src/automaton/FSM/NFA.h
index 7c98b8dce8..2ce67c1aec 100644
--- a/alib2data/src/automaton/FSM/NFA.h
+++ b/alib2data/src/automaton/FSM/NFA.h
@@ -794,5 +794,6 @@ struct type_details_retriever < automaton::NFA < SymbolType, StateType > > {
 } /* namespace core */
 
 extern template class automaton::NFA < >;
+extern template class abstraction::ValueHolder < automaton::NFA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::NFA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::NFA < > >;
diff --git a/alib2data/src/automaton/PDA/DPDA.cpp b/alib2data/src/automaton/PDA/DPDA.cpp
index baacf17a4f..ddf23d16f9 100644
--- a/alib2data/src/automaton/PDA/DPDA.cpp
+++ b/alib2data/src/automaton/PDA/DPDA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::DPDA < >;
+template class abstraction::ValueHolder < automaton::DPDA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::DPDA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::DPDA < > >;
 
diff --git a/alib2data/src/automaton/PDA/DPDA.h b/alib2data/src/automaton/PDA/DPDA.h
index 07be89d969..5dd231bb28 100644
--- a/alib2data/src/automaton/PDA/DPDA.h
+++ b/alib2data/src/automaton/PDA/DPDA.h
@@ -1083,5 +1083,6 @@ struct type_details_retriever < automaton::DPDA < InputSymbolType, PushdownStore
 } /* namespace core */
 
 extern template class automaton::DPDA < >;
+extern template class abstraction::ValueHolder < automaton::DPDA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::DPDA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::DPDA < > >;
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
index 2e2cea8d4e..36c5069660 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::InputDrivenDPDA < >;
+template class abstraction::ValueHolder < automaton::InputDrivenDPDA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::InputDrivenDPDA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::InputDrivenDPDA < > >;
 
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
index 04cf1c2da2..e831dcf924 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
@@ -1068,5 +1068,6 @@ struct type_details_retriever < automaton::InputDrivenDPDA < InputSymbolType, Pu
 } /* namespace core */
 
 extern template class automaton::InputDrivenDPDA < >;
+extern template class abstraction::ValueHolder < automaton::InputDrivenDPDA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::InputDrivenDPDA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::InputDrivenDPDA < > >;
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
index ba36b02a30..ce9e2d91c3 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::InputDrivenNPDA < >;
+template class abstraction::ValueHolder < automaton::InputDrivenNPDA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::InputDrivenNPDA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::InputDrivenNPDA < > >;
 
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
index e6f56a6a2b..d7cd76c97b 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
@@ -1086,5 +1086,6 @@ struct type_details_retriever < automaton::InputDrivenNPDA < InputSymbolType, Pu
 } /* namespace core */
 
 extern template class automaton::InputDrivenNPDA < >;
+extern template class abstraction::ValueHolder < automaton::InputDrivenNPDA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::InputDrivenNPDA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::InputDrivenNPDA < > >;
diff --git a/alib2data/src/automaton/PDA/NPDA.cpp b/alib2data/src/automaton/PDA/NPDA.cpp
index 6febd54f00..d51cd58ef4 100644
--- a/alib2data/src/automaton/PDA/NPDA.cpp
+++ b/alib2data/src/automaton/PDA/NPDA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::NPDA < >;
+template class abstraction::ValueHolder < automaton::NPDA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::NPDA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::NPDA < > >;
 
diff --git a/alib2data/src/automaton/PDA/NPDA.h b/alib2data/src/automaton/PDA/NPDA.h
index f68c4b2b62..f7a81d2ca8 100644
--- a/alib2data/src/automaton/PDA/NPDA.h
+++ b/alib2data/src/automaton/PDA/NPDA.h
@@ -1049,5 +1049,6 @@ struct type_details_retriever < automaton::NPDA < InputSymbolType, PushdownStore
 } /* namespace core */
 
 extern template class automaton::NPDA < >;
+extern template class abstraction::ValueHolder < automaton::NPDA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::NPDA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::NPDA < > >;
diff --git a/alib2data/src/automaton/PDA/NPDTA.cpp b/alib2data/src/automaton/PDA/NPDTA.cpp
index 39c9dd8fb8..0a72c8f5bf 100644
--- a/alib2data/src/automaton/PDA/NPDTA.cpp
+++ b/alib2data/src/automaton/PDA/NPDTA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::NPDTA < >;
+template class abstraction::ValueHolder < automaton::NPDTA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::NPDTA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::NPDTA < > >;
 
diff --git a/alib2data/src/automaton/PDA/NPDTA.h b/alib2data/src/automaton/PDA/NPDTA.h
index 6f1f0df4af..d598f43404 100644
--- a/alib2data/src/automaton/PDA/NPDTA.h
+++ b/alib2data/src/automaton/PDA/NPDTA.h
@@ -1166,5 +1166,6 @@ struct type_details_retriever < automaton::NPDTA < InputSymbolType, OutputSymbol
 } /* namespace core */
 
 extern template class automaton::NPDTA < >;
+extern template class abstraction::ValueHolder < automaton::NPDTA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::NPDTA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::NPDTA < > >;
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
index 6e782423a6..aa76491906 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::RealTimeHeightDeterministicDPDA < >;
+template class abstraction::ValueHolder < automaton::RealTimeHeightDeterministicDPDA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::RealTimeHeightDeterministicDPDA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::RealTimeHeightDeterministicDPDA < > >;
 
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
index fa114507a3..503212e6f4 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
@@ -1505,5 +1505,6 @@ struct type_details_retriever < automaton::RealTimeHeightDeterministicDPDA < Inp
 } /* namespace core */
 
 extern template class automaton::RealTimeHeightDeterministicDPDA < >;
+extern template class abstraction::ValueHolder < automaton::RealTimeHeightDeterministicDPDA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::RealTimeHeightDeterministicDPDA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::RealTimeHeightDeterministicDPDA < > >;
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
index 022ad6a025..1863f2cb59 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::RealTimeHeightDeterministicNPDA < >;
+template class abstraction::ValueHolder < automaton::RealTimeHeightDeterministicNPDA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::RealTimeHeightDeterministicNPDA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::RealTimeHeightDeterministicNPDA < > >;
 
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
index a14bebaa25..875865c0ae 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
@@ -1451,5 +1451,6 @@ struct type_details_retriever < automaton::RealTimeHeightDeterministicNPDA < Inp
 } /* namespace core */
 
 extern template class automaton::RealTimeHeightDeterministicNPDA < >;
+extern template class abstraction::ValueHolder < automaton::RealTimeHeightDeterministicNPDA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::RealTimeHeightDeterministicNPDA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::RealTimeHeightDeterministicNPDA < > >;
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
index 9670e614d2..540715d097 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::SinglePopDPDA < >;
+template class abstraction::ValueHolder < automaton::SinglePopDPDA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::SinglePopDPDA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::SinglePopDPDA < > >;
 
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.h b/alib2data/src/automaton/PDA/SinglePopDPDA.h
index 23b33b72f4..d5fdeeae2b 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.h
@@ -1008,5 +1008,6 @@ struct type_details_retriever < automaton::SinglePopDPDA < InputSymbolType, Push
 } /* namespace core */
 
 extern template class automaton::SinglePopDPDA < >;
+extern template class abstraction::ValueHolder < automaton::SinglePopDPDA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::SinglePopDPDA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::SinglePopDPDA < > >;
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
index 9600bce0c9..6042da7ed6 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::SinglePopNPDA < >;
+template class abstraction::ValueHolder < automaton::SinglePopNPDA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::SinglePopNPDA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::SinglePopNPDA < > >;
 
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.h b/alib2data/src/automaton/PDA/SinglePopNPDA.h
index 4848095f9b..61c3d7dfd8 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.h
@@ -993,5 +993,6 @@ struct type_details_retriever < automaton::SinglePopNPDA < InputSymbolType, Push
 } /* namespace core */
 
 extern template class automaton::SinglePopNPDA < >;
+extern template class abstraction::ValueHolder < automaton::SinglePopNPDA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::SinglePopNPDA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::SinglePopNPDA < > >;
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
index 0fbd2896d6..27aaf5013b 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::VisiblyPushdownDPDA < >;
+template class abstraction::ValueHolder < automaton::VisiblyPushdownDPDA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::VisiblyPushdownDPDA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::VisiblyPushdownDPDA < > >;
 
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
index 14b6712d00..514c6bc045 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
@@ -1438,5 +1438,6 @@ struct type_details_retriever < automaton::VisiblyPushdownDPDA < InputSymbolType
 } /* namespace core */
 
 extern template class automaton::VisiblyPushdownDPDA < >;
+extern template class abstraction::ValueHolder < automaton::VisiblyPushdownDPDA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::VisiblyPushdownDPDA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::VisiblyPushdownDPDA < > >;
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
index bd1604c2ff..3ba415740d 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::VisiblyPushdownNPDA < >;
+template class abstraction::ValueHolder < automaton::VisiblyPushdownNPDA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::VisiblyPushdownNPDA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::VisiblyPushdownNPDA < > >;
 
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
index e296f81595..9494b63910 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
@@ -1434,5 +1434,6 @@ struct type_details_retriever < automaton::VisiblyPushdownNPDA < InputSymbolType
 } /* namespace core */
 
 extern template class automaton::VisiblyPushdownNPDA < >;
+extern template class abstraction::ValueHolder < automaton::VisiblyPushdownNPDA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::VisiblyPushdownNPDA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::VisiblyPushdownNPDA < > >;
diff --git a/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.cpp b/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.cpp
index 882b9c5d18..13d85cab5c 100644
--- a/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.cpp
+++ b/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::ArcFactoredDeterministicZAutomaton < >;
+template class abstraction::ValueHolder < automaton::ArcFactoredDeterministicZAutomaton < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::ArcFactoredDeterministicZAutomaton < > & >;
 template class registration::NormalizationRegisterImpl < automaton::ArcFactoredDeterministicZAutomaton < > >;
 
diff --git a/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.h b/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.h
index 84ce38ae90..b865fc1948 100644
--- a/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.h
+++ b/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.h
@@ -694,5 +694,6 @@ struct type_details_retriever < automaton::ArcFactoredDeterministicZAutomaton <
 } /* namespace core */
 
 extern template class automaton::ArcFactoredDeterministicZAutomaton < >;
+extern template class abstraction::ValueHolder < automaton::ArcFactoredDeterministicZAutomaton < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::ArcFactoredDeterministicZAutomaton < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::ArcFactoredDeterministicZAutomaton < > >;
diff --git a/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.cpp b/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.cpp
index f471ab769f..1f3f42491a 100644
--- a/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.cpp
+++ b/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class automaton::ArcFactoredNondeterministicZAutomaton < >;
+template class abstraction::ValueHolder < automaton::ArcFactoredNondeterministicZAutomaton < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::ArcFactoredNondeterministicZAutomaton < > & >;
 template class registration::NormalizationRegisterImpl < automaton::ArcFactoredNondeterministicZAutomaton < > >;
 
diff --git a/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.h b/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.h
index d12c1d15c8..dd26462d0f 100644
--- a/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.h
+++ b/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.h
@@ -707,5 +707,6 @@ struct type_details_retriever < automaton::ArcFactoredNondeterministicZAutomaton
 } /* namespace core */
 
 extern template class automaton::ArcFactoredNondeterministicZAutomaton < >;
+extern template class abstraction::ValueHolder < automaton::ArcFactoredNondeterministicZAutomaton < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::ArcFactoredNondeterministicZAutomaton < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::ArcFactoredNondeterministicZAutomaton < > >;
diff --git a/alib2data/src/automaton/TA/DFTA.cpp b/alib2data/src/automaton/TA/DFTA.cpp
index b18f7950cd..a9ee5e317b 100644
--- a/alib2data/src/automaton/TA/DFTA.cpp
+++ b/alib2data/src/automaton/TA/DFTA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::DFTA < >;
+template class abstraction::ValueHolder < automaton::DFTA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::DFTA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::DFTA < > >;
 
diff --git a/alib2data/src/automaton/TA/DFTA.h b/alib2data/src/automaton/TA/DFTA.h
index cec463b4b8..384da3bd8d 100644
--- a/alib2data/src/automaton/TA/DFTA.h
+++ b/alib2data/src/automaton/TA/DFTA.h
@@ -671,5 +671,6 @@ struct type_details_retriever < automaton::DFTA < SymbolType, StateType > > {
 } /* namespace core */
 
 extern template class automaton::DFTA < >;
+extern template class abstraction::ValueHolder < automaton::DFTA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::DFTA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::DFTA < > >;
diff --git a/alib2data/src/automaton/TA/EpsilonNFTA.cpp b/alib2data/src/automaton/TA/EpsilonNFTA.cpp
index de0968341d..1fecf52211 100644
--- a/alib2data/src/automaton/TA/EpsilonNFTA.cpp
+++ b/alib2data/src/automaton/TA/EpsilonNFTA.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class automaton::EpsilonNFTA < >;
+template class abstraction::ValueHolder < automaton::EpsilonNFTA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::EpsilonNFTA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::EpsilonNFTA < > >;
 
diff --git a/alib2data/src/automaton/TA/EpsilonNFTA.h b/alib2data/src/automaton/TA/EpsilonNFTA.h
index 9cc8056971..6b81616530 100644
--- a/alib2data/src/automaton/TA/EpsilonNFTA.h
+++ b/alib2data/src/automaton/TA/EpsilonNFTA.h
@@ -926,5 +926,6 @@ struct type_details_retriever < automaton::EpsilonNFTA < SymbolType, StateType >
 } /* namespace core */
 
 extern template class automaton::EpsilonNFTA < >;
+extern template class abstraction::ValueHolder < automaton::EpsilonNFTA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::EpsilonNFTA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::EpsilonNFTA < > >;
diff --git a/alib2data/src/automaton/TA/ExtendedNFTA.cpp b/alib2data/src/automaton/TA/ExtendedNFTA.cpp
index 7e6a9931aa..4ff659c09d 100644
--- a/alib2data/src/automaton/TA/ExtendedNFTA.cpp
+++ b/alib2data/src/automaton/TA/ExtendedNFTA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::ExtendedNFTA < >;
+template class abstraction::ValueHolder < automaton::ExtendedNFTA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::ExtendedNFTA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::ExtendedNFTA < > >;
 
diff --git a/alib2data/src/automaton/TA/ExtendedNFTA.h b/alib2data/src/automaton/TA/ExtendedNFTA.h
index 58282c4fa1..340a86c942 100644
--- a/alib2data/src/automaton/TA/ExtendedNFTA.h
+++ b/alib2data/src/automaton/TA/ExtendedNFTA.h
@@ -744,5 +744,6 @@ struct type_details_retriever < automaton::ExtendedNFTA < SymbolType, StateType
 } /* namespace core */
 
 extern template class automaton::ExtendedNFTA < >;
+extern template class abstraction::ValueHolder < automaton::ExtendedNFTA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::ExtendedNFTA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::ExtendedNFTA < > >;
diff --git a/alib2data/src/automaton/TA/NFTA.cpp b/alib2data/src/automaton/TA/NFTA.cpp
index 9089760a30..fb70105449 100644
--- a/alib2data/src/automaton/TA/NFTA.cpp
+++ b/alib2data/src/automaton/TA/NFTA.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class automaton::NFTA < >;
+template class abstraction::ValueHolder < automaton::NFTA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::NFTA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::NFTA < > >;
 
diff --git a/alib2data/src/automaton/TA/NFTA.h b/alib2data/src/automaton/TA/NFTA.h
index 610042754d..003dc5f749 100644
--- a/alib2data/src/automaton/TA/NFTA.h
+++ b/alib2data/src/automaton/TA/NFTA.h
@@ -697,5 +697,6 @@ struct type_details_retriever < automaton::NFTA < SymbolType, StateType > > {
 } /* namespace core */
 
 extern template class automaton::NFTA < >;
+extern template class abstraction::ValueHolder < automaton::NFTA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::NFTA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::NFTA < > >;
diff --git a/alib2data/src/automaton/TA/NondeterministicZAutomaton.cpp b/alib2data/src/automaton/TA/NondeterministicZAutomaton.cpp
index ed11fff975..2bc108fb9b 100644
--- a/alib2data/src/automaton/TA/NondeterministicZAutomaton.cpp
+++ b/alib2data/src/automaton/TA/NondeterministicZAutomaton.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::NondeterministicZAutomaton < >;
+template class abstraction::ValueHolder < automaton::NondeterministicZAutomaton < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::NondeterministicZAutomaton < > & >;
 template class registration::NormalizationRegisterImpl < automaton::NondeterministicZAutomaton < > >;
 
diff --git a/alib2data/src/automaton/TA/NondeterministicZAutomaton.h b/alib2data/src/automaton/TA/NondeterministicZAutomaton.h
index 6ae5ed04d0..b42c97066a 100644
--- a/alib2data/src/automaton/TA/NondeterministicZAutomaton.h
+++ b/alib2data/src/automaton/TA/NondeterministicZAutomaton.h
@@ -636,5 +636,6 @@ struct type_details_retriever < automaton::NondeterministicZAutomaton < SymbolTy
 } /* namespace core */
 
 extern template class automaton::NondeterministicZAutomaton < >;
+extern template class abstraction::ValueHolder < automaton::NondeterministicZAutomaton < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::NondeterministicZAutomaton < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::NondeterministicZAutomaton < > >;
diff --git a/alib2data/src/automaton/TA/UnorderedDFTA.cpp b/alib2data/src/automaton/TA/UnorderedDFTA.cpp
index 1e0ecfea12..57c44c52ae 100644
--- a/alib2data/src/automaton/TA/UnorderedDFTA.cpp
+++ b/alib2data/src/automaton/TA/UnorderedDFTA.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::UnorderedDFTA < >;
+template class abstraction::ValueHolder < automaton::UnorderedDFTA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::UnorderedDFTA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::UnorderedDFTA < > >;
 
diff --git a/alib2data/src/automaton/TA/UnorderedDFTA.h b/alib2data/src/automaton/TA/UnorderedDFTA.h
index d22e172f36..bb0016e055 100644
--- a/alib2data/src/automaton/TA/UnorderedDFTA.h
+++ b/alib2data/src/automaton/TA/UnorderedDFTA.h
@@ -669,5 +669,6 @@ struct type_details_retriever < automaton::UnorderedDFTA < SymbolType, StateType
 } /* namespace core */
 
 extern template class automaton::UnorderedDFTA < >;
+extern template class abstraction::ValueHolder < automaton::UnorderedDFTA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::UnorderedDFTA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::UnorderedDFTA < > >;
diff --git a/alib2data/src/automaton/TA/UnorderedNFTA.cpp b/alib2data/src/automaton/TA/UnorderedNFTA.cpp
index b3418d0056..455d4e2d4f 100644
--- a/alib2data/src/automaton/TA/UnorderedNFTA.cpp
+++ b/alib2data/src/automaton/TA/UnorderedNFTA.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class automaton::UnorderedNFTA < >;
+template class abstraction::ValueHolder < automaton::UnorderedNFTA < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::UnorderedNFTA < > & >;
 template class registration::NormalizationRegisterImpl < automaton::UnorderedNFTA < > >;
 
diff --git a/alib2data/src/automaton/TA/UnorderedNFTA.h b/alib2data/src/automaton/TA/UnorderedNFTA.h
index 5f41f58f55..aa1ca28903 100644
--- a/alib2data/src/automaton/TA/UnorderedNFTA.h
+++ b/alib2data/src/automaton/TA/UnorderedNFTA.h
@@ -697,5 +697,6 @@ struct type_details_retriever < automaton::UnorderedNFTA < SymbolType, StateType
 } /* namespace core */
 
 extern template class automaton::UnorderedNFTA < >;
+extern template class abstraction::ValueHolder < automaton::UnorderedNFTA < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::UnorderedNFTA < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::UnorderedNFTA < > >;
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.cpp b/alib2data/src/automaton/TM/OneTapeDTM.cpp
index aa92b4f362..450771645e 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.cpp
+++ b/alib2data/src/automaton/TM/OneTapeDTM.cpp
@@ -3,6 +3,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class automaton::OneTapeDTM < >;
+template class abstraction::ValueHolder < automaton::OneTapeDTM < > >;
 template class registration::DenormalizationRegisterImpl < const automaton::OneTapeDTM < > & >;
 template class registration::NormalizationRegisterImpl < automaton::OneTapeDTM < > >;
 
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.h b/alib2data/src/automaton/TM/OneTapeDTM.h
index 678b0901b7..4b37175a64 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.h
+++ b/alib2data/src/automaton/TM/OneTapeDTM.h
@@ -880,5 +880,6 @@ struct type_details_retriever < automaton::OneTapeDTM < SymbolType, StateType >
 } /* namespace core */
 
 extern template class automaton::OneTapeDTM < >;
+extern template class abstraction::ValueHolder < automaton::OneTapeDTM < > >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::OneTapeDTM < > & >;
 extern template class registration::NormalizationRegisterImpl < automaton::OneTapeDTM < > >;
diff --git a/alib2data/src/grammar/ContextFree/CFG.cpp b/alib2data/src/grammar/ContextFree/CFG.cpp
index bcbc6dd43f..2f09b33118 100644
--- a/alib2data/src/grammar/ContextFree/CFG.cpp
+++ b/alib2data/src/grammar/ContextFree/CFG.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::CFG < >;
+template class abstraction::ValueHolder < grammar::CFG < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::CFG < > & >;
 template class registration::NormalizationRegisterImpl < grammar::CFG < > >;
 
diff --git a/alib2data/src/grammar/ContextFree/CFG.h b/alib2data/src/grammar/ContextFree/CFG.h
index bbb26feb81..f0ff2661a3 100644
--- a/alib2data/src/grammar/ContextFree/CFG.h
+++ b/alib2data/src/grammar/ContextFree/CFG.h
@@ -567,5 +567,6 @@ struct type_details_retriever < grammar::CFG < TerminalSymbolType, NonterminalSy
 } /* namespace core */
 
 extern template class grammar::CFG < >;
+extern template class abstraction::ValueHolder < grammar::CFG < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::CFG < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::CFG < > >;
diff --git a/alib2data/src/grammar/ContextFree/CNF.cpp b/alib2data/src/grammar/ContextFree/CNF.cpp
index f5383a4388..278b48a6fa 100644
--- a/alib2data/src/grammar/ContextFree/CNF.cpp
+++ b/alib2data/src/grammar/ContextFree/CNF.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::CNF < >;
+template class abstraction::ValueHolder < grammar::CNF < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::CNF < > & >;
 template class registration::NormalizationRegisterImpl < grammar::CNF < > >;
 
diff --git a/alib2data/src/grammar/ContextFree/CNF.h b/alib2data/src/grammar/ContextFree/CNF.h
index b8929b598a..4966ce2947 100644
--- a/alib2data/src/grammar/ContextFree/CNF.h
+++ b/alib2data/src/grammar/ContextFree/CNF.h
@@ -642,5 +642,6 @@ struct type_details_retriever < grammar::CNF < TerminalSymbolType, NonterminalSy
 } /* namespace core */
 
 extern template class grammar::CNF < >;
+extern template class abstraction::ValueHolder < grammar::CNF < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::CNF < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::CNF < > >;
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
index 9e312ce396..ac43470138 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::EpsilonFreeCFG < >;
+template class abstraction::ValueHolder < grammar::EpsilonFreeCFG < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::EpsilonFreeCFG < > & >;
 template class registration::NormalizationRegisterImpl < grammar::EpsilonFreeCFG < > >;
 
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
index 76e40b3bfc..66ed84d6f9 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
@@ -594,5 +594,6 @@ struct type_details_retriever < grammar::EpsilonFreeCFG < TerminalSymbolType, No
 } /* namespace core */
 
 extern template class grammar::EpsilonFreeCFG < >;
+extern template class abstraction::ValueHolder < grammar::EpsilonFreeCFG < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::EpsilonFreeCFG < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::EpsilonFreeCFG < > >;
diff --git a/alib2data/src/grammar/ContextFree/GNF.cpp b/alib2data/src/grammar/ContextFree/GNF.cpp
index d4665f3cf5..3db05047c1 100644
--- a/alib2data/src/grammar/ContextFree/GNF.cpp
+++ b/alib2data/src/grammar/ContextFree/GNF.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::GNF < >;
+template class abstraction::ValueHolder < grammar::GNF < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::GNF < > & >;
 template class registration::NormalizationRegisterImpl < grammar::GNF < > >;
 
diff --git a/alib2data/src/grammar/ContextFree/GNF.h b/alib2data/src/grammar/ContextFree/GNF.h
index 658061d788..f45bfdcd3e 100644
--- a/alib2data/src/grammar/ContextFree/GNF.h
+++ b/alib2data/src/grammar/ContextFree/GNF.h
@@ -594,5 +594,6 @@ struct type_details_retriever < grammar::GNF < TerminalSymbolType, NonterminalSy
 } /* namespace core */
 
 extern template class grammar::GNF < >;
+extern template class abstraction::ValueHolder < grammar::GNF < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::GNF < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::GNF < > >;
diff --git a/alib2data/src/grammar/ContextFree/LG.cpp b/alib2data/src/grammar/ContextFree/LG.cpp
index 0f9d52abad..24ce836dd6 100644
--- a/alib2data/src/grammar/ContextFree/LG.cpp
+++ b/alib2data/src/grammar/ContextFree/LG.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::LG < >;
+template class abstraction::ValueHolder < grammar::LG < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::LG < > & >;
 template class registration::NormalizationRegisterImpl < grammar::LG < > >;
 
diff --git a/alib2data/src/grammar/ContextFree/LG.h b/alib2data/src/grammar/ContextFree/LG.h
index 9a7cf9e1c5..9aec7dbb12 100644
--- a/alib2data/src/grammar/ContextFree/LG.h
+++ b/alib2data/src/grammar/ContextFree/LG.h
@@ -643,5 +643,6 @@ struct type_details_retriever < grammar::LG < TerminalSymbolType, NonterminalSym
 } /* namespace core */
 
 extern template class grammar::LG < >;
+extern template class abstraction::ValueHolder < grammar::LG < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::LG < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::LG < > >;
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.cpp b/alib2data/src/grammar/ContextSensitive/CSG.cpp
index 1259584d2d..620ba54161 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.cpp
+++ b/alib2data/src/grammar/ContextSensitive/CSG.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::CSG < >;
+template class abstraction::ValueHolder < grammar::CSG < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::CSG < > & >;
 template class registration::NormalizationRegisterImpl < grammar::CSG < > >;
 
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.h b/alib2data/src/grammar/ContextSensitive/CSG.h
index cede910a89..15ebb8f2cb 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.h
+++ b/alib2data/src/grammar/ContextSensitive/CSG.h
@@ -623,5 +623,6 @@ struct type_details_retriever < grammar::CSG < SymbolType > > {
 } /* namespace core */
 
 extern template class grammar::CSG < >;
+extern template class abstraction::ValueHolder < grammar::CSG < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::CSG < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::CSG < > >;
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
index ad1aeb1fd3..6da020fcce 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::NonContractingGrammar < >;
+template class abstraction::ValueHolder < grammar::NonContractingGrammar < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::NonContractingGrammar < > & >;
 template class registration::NormalizationRegisterImpl < grammar::NonContractingGrammar < > >;
 
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
index 59bb89601a..406dca0834 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
@@ -616,5 +616,6 @@ struct type_details_retriever < grammar::NonContractingGrammar < SymbolType > >
 } /* namespace core */
 
 extern template class grammar::NonContractingGrammar < >;
+extern template class abstraction::ValueHolder < grammar::NonContractingGrammar < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::NonContractingGrammar < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::NonContractingGrammar < > >;
diff --git a/alib2data/src/grammar/Regular/LeftLG.cpp b/alib2data/src/grammar/Regular/LeftLG.cpp
index 982af50878..0b10027654 100644
--- a/alib2data/src/grammar/Regular/LeftLG.cpp
+++ b/alib2data/src/grammar/Regular/LeftLG.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::LeftLG < >;
+template class abstraction::ValueHolder < grammar::LeftLG < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::LeftLG < > & >;
 template class registration::NormalizationRegisterImpl < grammar::LeftLG < > >;
 
diff --git a/alib2data/src/grammar/Regular/LeftLG.h b/alib2data/src/grammar/Regular/LeftLG.h
index 87431f9542..170305884a 100644
--- a/alib2data/src/grammar/Regular/LeftLG.h
+++ b/alib2data/src/grammar/Regular/LeftLG.h
@@ -625,5 +625,6 @@ struct type_details_retriever < grammar::LeftLG < TerminalSymbolType, Nontermina
 } /* namespace core */
 
 extern template class grammar::LeftLG < >;
+extern template class abstraction::ValueHolder < grammar::LeftLG < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::LeftLG < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::LeftLG < > >;
diff --git a/alib2data/src/grammar/Regular/LeftRG.cpp b/alib2data/src/grammar/Regular/LeftRG.cpp
index dda36f7890..9854e1c3b1 100644
--- a/alib2data/src/grammar/Regular/LeftRG.cpp
+++ b/alib2data/src/grammar/Regular/LeftRG.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::LeftRG < >;
+template class abstraction::ValueHolder < grammar::LeftRG < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::LeftRG < > & >;
 template class registration::NormalizationRegisterImpl < grammar::LeftRG < > >;
 
diff --git a/alib2data/src/grammar/Regular/LeftRG.h b/alib2data/src/grammar/Regular/LeftRG.h
index 57e1c8f45b..8fd6249179 100644
--- a/alib2data/src/grammar/Regular/LeftRG.h
+++ b/alib2data/src/grammar/Regular/LeftRG.h
@@ -641,5 +641,6 @@ struct type_details_retriever < grammar::LeftRG < TerminalSymbolType, Nontermina
 } /* namespace core */
 
 extern template class grammar::LeftRG < >;
+extern template class abstraction::ValueHolder < grammar::LeftRG < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::LeftRG < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::LeftRG < > >;
diff --git a/alib2data/src/grammar/Regular/RightLG.cpp b/alib2data/src/grammar/Regular/RightLG.cpp
index a33a23d376..0cc83db853 100644
--- a/alib2data/src/grammar/Regular/RightLG.cpp
+++ b/alib2data/src/grammar/Regular/RightLG.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::RightLG < >;
+template class abstraction::ValueHolder < grammar::RightLG < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::RightLG < > & >;
 template class registration::NormalizationRegisterImpl < grammar::RightLG < > >;
 
diff --git a/alib2data/src/grammar/Regular/RightLG.h b/alib2data/src/grammar/Regular/RightLG.h
index 0092f2140d..de4325b6c5 100644
--- a/alib2data/src/grammar/Regular/RightLG.h
+++ b/alib2data/src/grammar/Regular/RightLG.h
@@ -622,5 +622,6 @@ struct type_details_retriever < grammar::RightLG < TerminalSymbolType, Nontermin
 } /* namespace core */
 
 extern template class grammar::RightLG < >;
+extern template class abstraction::ValueHolder < grammar::RightLG < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::RightLG < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::RightLG < > >;
diff --git a/alib2data/src/grammar/Regular/RightRG.cpp b/alib2data/src/grammar/Regular/RightRG.cpp
index da1676c4a7..9e31bfc0fa 100644
--- a/alib2data/src/grammar/Regular/RightRG.cpp
+++ b/alib2data/src/grammar/Regular/RightRG.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::RightRG < >;
+template class abstraction::ValueHolder < grammar::RightRG < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::RightRG < > & >;
 template class registration::NormalizationRegisterImpl < grammar::RightRG < > >;
 
diff --git a/alib2data/src/grammar/Regular/RightRG.h b/alib2data/src/grammar/Regular/RightRG.h
index 2d1a82b6af..684244bbcc 100644
--- a/alib2data/src/grammar/Regular/RightRG.h
+++ b/alib2data/src/grammar/Regular/RightRG.h
@@ -640,5 +640,6 @@ struct type_details_retriever < grammar::RightRG < TerminalSymbolType, Nontermin
 } /* namespace core */
 
 extern template class grammar::RightRG < >;
+extern template class abstraction::ValueHolder < grammar::RightRG < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::RightRG < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::RightRG < > >;
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
index bab470a32d..de4f706040 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::ContextPreservingUnrestrictedGrammar < >;
+template class abstraction::ValueHolder < grammar::ContextPreservingUnrestrictedGrammar < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::ContextPreservingUnrestrictedGrammar < > & >;
 template class registration::NormalizationRegisterImpl < grammar::ContextPreservingUnrestrictedGrammar < > >;
 
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
index b83a646a85..354234fa31 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
@@ -592,5 +592,6 @@ struct type_details_retriever < grammar::ContextPreservingUnrestrictedGrammar <
 } /* namespace core */
 
 extern template class grammar::ContextPreservingUnrestrictedGrammar < >;
+extern template class abstraction::ValueHolder < grammar::ContextPreservingUnrestrictedGrammar < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::ContextPreservingUnrestrictedGrammar < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::ContextPreservingUnrestrictedGrammar < > >;
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
index 5fc178f0cd..c247a80344 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class grammar::UnrestrictedGrammar < >;
+template class abstraction::ValueHolder < grammar::UnrestrictedGrammar < > >;
 template class registration::DenormalizationRegisterImpl < const grammar::UnrestrictedGrammar < > & >;
 template class registration::NormalizationRegisterImpl < grammar::UnrestrictedGrammar < > >;
 
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
index 56e116dbbd..b87c313eea 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
@@ -589,5 +589,6 @@ struct type_details_retriever < grammar::UnrestrictedGrammar < SymbolType > > {
 } /* namespace core */
 
 extern template class grammar::UnrestrictedGrammar < >;
+extern template class abstraction::ValueHolder < grammar::UnrestrictedGrammar < > >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::UnrestrictedGrammar < > & >;
 extern template class registration::NormalizationRegisterImpl < grammar::UnrestrictedGrammar < > >;
diff --git a/alib2data/src/regexp/formal/FormalRegExp.cpp b/alib2data/src/regexp/formal/FormalRegExp.cpp
index 553aba7066..44b0b18fa8 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.cpp
+++ b/alib2data/src/regexp/formal/FormalRegExp.cpp
@@ -5,6 +5,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class regexp::FormalRegExp < >;
+template class abstraction::ValueHolder < regexp::FormalRegExp < > >;
 template class registration::DenormalizationRegisterImpl < const regexp::FormalRegExp < > & >;
 template class registration::NormalizationRegisterImpl < regexp::FormalRegExp < > >;
 template class regexp::FormalRegExpStructure < DefaultSymbolType >;
diff --git a/alib2data/src/regexp/formal/FormalRegExp.h b/alib2data/src/regexp/formal/FormalRegExp.h
index 67f6586196..28d83e453e 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.h
+++ b/alib2data/src/regexp/formal/FormalRegExp.h
@@ -309,5 +309,6 @@ struct type_details_retriever < regexp::FormalRegExp < SymbolType > > {
 } /* namespace core */
 
 extern template class regexp::FormalRegExp < >;
+extern template class abstraction::ValueHolder < regexp::FormalRegExp < > >;
 extern template class registration::DenormalizationRegisterImpl < const regexp::FormalRegExp < > & >;
 extern template class registration::NormalizationRegisterImpl < regexp::FormalRegExp < > >;
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp b/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
index 08a00458b5..f775c05429 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
@@ -5,6 +5,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class regexp::UnboundedRegExp < >;
+template class abstraction::ValueHolder < regexp::UnboundedRegExp < > >;
 template class registration::DenormalizationRegisterImpl < const regexp::UnboundedRegExp < > & >;
 template class registration::NormalizationRegisterImpl < regexp::UnboundedRegExp < > >;
 
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.h b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
index 52015009a9..4877f6c5c7 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
@@ -311,5 +311,6 @@ struct type_details_retriever < regexp::UnboundedRegExp < SymbolType > > {
 } /* namespace core */
 
 extern template class regexp::UnboundedRegExp < >;
+extern template class abstraction::ValueHolder < regexp::UnboundedRegExp < > >;
 extern template class registration::DenormalizationRegisterImpl < const regexp::UnboundedRegExp < > & >;
 extern template class registration::NormalizationRegisterImpl < regexp::UnboundedRegExp < > >;
diff --git a/alib2data/src/rte/formal/FormalRTE.cpp b/alib2data/src/rte/formal/FormalRTE.cpp
index 909a5ee236..a369194a98 100644
--- a/alib2data/src/rte/formal/FormalRTE.cpp
+++ b/alib2data/src/rte/formal/FormalRTE.cpp
@@ -4,6 +4,7 @@
 #include <registration/ValuePrinterRegistration.hpp>
 
 template class rte::FormalRTE < >;
+template class abstraction::ValueHolder < rte::FormalRTE < > >;
 template class registration::DenormalizationRegisterImpl < const rte::FormalRTE < > & >;
 template class registration::NormalizationRegisterImpl < rte::FormalRTE < > >;
 template class rte::FormalRTEStructure < DefaultSymbolType >;
diff --git a/alib2data/src/rte/formal/FormalRTE.h b/alib2data/src/rte/formal/FormalRTE.h
index 394aa1e37d..123b4285be 100644
--- a/alib2data/src/rte/formal/FormalRTE.h
+++ b/alib2data/src/rte/formal/FormalRTE.h
@@ -449,5 +449,6 @@ struct type_details_retriever < rte::FormalRTE < SymbolType > > {
 } /* namespace core */
 
 extern template class rte::FormalRTE < >;
+extern template class abstraction::ValueHolder < rte::FormalRTE < > >;
 extern template class registration::DenormalizationRegisterImpl < const rte::FormalRTE < > & >;
 extern template class registration::NormalizationRegisterImpl < rte::FormalRTE < > >;
diff --git a/alib2data/src/string/CyclicString.cpp b/alib2data/src/string/CyclicString.cpp
index 90a87ac5ed..4b2b7297b6 100644
--- a/alib2data/src/string/CyclicString.cpp
+++ b/alib2data/src/string/CyclicString.cpp
@@ -4,6 +4,7 @@
 #include <registration/CastRegistration.hpp>
 
 template class string::CyclicString < >;
+template class abstraction::ValueHolder < string::CyclicString < > >;
 template class registration::DenormalizationRegisterImpl < const string::CyclicString < > & >;
 template class registration::NormalizationRegisterImpl < string::CyclicString < > >;
 
diff --git a/alib2data/src/string/CyclicString.h b/alib2data/src/string/CyclicString.h
index a173682037..ac3e00ff66 100644
--- a/alib2data/src/string/CyclicString.h
+++ b/alib2data/src/string/CyclicString.h
@@ -341,5 +341,6 @@ struct type_details_retriever < string::CyclicString < SymbolType > > {
 } /* namespace core */
 
 extern template class string::CyclicString < >;
+extern template class abstraction::ValueHolder < string::CyclicString < > >;
 extern template class registration::DenormalizationRegisterImpl < const string::CyclicString < > & >;
 extern template class registration::NormalizationRegisterImpl < string::CyclicString < > >;
diff --git a/alib2data/src/string/LinearString.cpp b/alib2data/src/string/LinearString.cpp
index 9b8762556e..2831112034 100644
--- a/alib2data/src/string/LinearString.cpp
+++ b/alib2data/src/string/LinearString.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class string::LinearString < >;
+template class abstraction::ValueHolder < string::LinearString < > >;
 template class registration::DenormalizationRegisterImpl < const string::LinearString < > & >;
 template class registration::NormalizationRegisterImpl < string::LinearString < > >;
 
diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h
index 5f91a65d4e..910276dddf 100644
--- a/alib2data/src/string/LinearString.h
+++ b/alib2data/src/string/LinearString.h
@@ -363,5 +363,6 @@ struct type_details_retriever < string::LinearString < SymbolType > > {
 } /* namespace core */
 
 extern template class string::LinearString < >;
+extern template class abstraction::ValueHolder < string::LinearString < > >;
 extern template class registration::DenormalizationRegisterImpl < const string::LinearString < > & >;
 extern template class registration::NormalizationRegisterImpl < string::LinearString < > >;
diff --git a/alib2data/src/string/WildcardLinearString.cpp b/alib2data/src/string/WildcardLinearString.cpp
index 40f9d91ccc..0beef00050 100644
--- a/alib2data/src/string/WildcardLinearString.cpp
+++ b/alib2data/src/string/WildcardLinearString.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class string::WildcardLinearString < >;
+template class abstraction::ValueHolder < string::WildcardLinearString < > >;
 template class registration::DenormalizationRegisterImpl < const string::WildcardLinearString < > & >;
 template class registration::NormalizationRegisterImpl < string::WildcardLinearString < > >;
 
diff --git a/alib2data/src/string/WildcardLinearString.h b/alib2data/src/string/WildcardLinearString.h
index c13b775cd9..41a98d4cca 100644
--- a/alib2data/src/string/WildcardLinearString.h
+++ b/alib2data/src/string/WildcardLinearString.h
@@ -430,5 +430,6 @@ struct type_details_retriever < string::WildcardLinearString < SymbolType > > {
 } /* namespace core */
 
 extern template class string::WildcardLinearString < >;
+extern template class abstraction::ValueHolder < string::WildcardLinearString < > >;
 extern template class registration::DenormalizationRegisterImpl < const string::WildcardLinearString < > & >;
 extern template class registration::NormalizationRegisterImpl < string::WildcardLinearString < > >;
diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.cpp b/alib2data/src/tree/ranked/PostfixRankedTree.cpp
index c667a374f0..c0e40b991d 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.cpp
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::PostfixRankedTree < >;
+template class abstraction::ValueHolder < tree::PostfixRankedTree < > >;
 template class registration::DenormalizationRegisterImpl < const tree::PostfixRankedTree < > & >;
 template class registration::NormalizationRegisterImpl < tree::PostfixRankedTree < > >;
 
diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.h b/alib2data/src/tree/ranked/PostfixRankedTree.h
index 53af8abe32..e3c227897b 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.h
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.h
@@ -350,5 +350,6 @@ struct type_details_retriever < tree::PostfixRankedTree < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::PostfixRankedTree < >;
+extern template class abstraction::ValueHolder < tree::PostfixRankedTree < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PostfixRankedTree < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::PostfixRankedTree < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp
index 667bc8cc92..def3032930 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::PrefixRankedBarNonlinearPattern < >;
+template class abstraction::ValueHolder < tree::PrefixRankedBarNonlinearPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarNonlinearPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::PrefixRankedBarNonlinearPattern < > >;
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
index eaf15ed5e6..7276ee2356 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -744,5 +744,6 @@ struct type_details_retriever < tree::PrefixRankedBarNonlinearPattern < SymbolTy
 } /* namespace core */
 
 extern template class tree::PrefixRankedBarNonlinearPattern < >;
+extern template class abstraction::ValueHolder < tree::PrefixRankedBarNonlinearPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarNonlinearPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedBarNonlinearPattern < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
index 999b90ba89..a93161378f 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::PrefixRankedBarPattern < >;
+template class abstraction::ValueHolder < tree::PrefixRankedBarPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::PrefixRankedBarPattern < > >;
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
index 31b74e2f5d..98ff5dfcdb 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -586,5 +586,6 @@ struct type_details_retriever < tree::PrefixRankedBarPattern < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::PrefixRankedBarPattern < >;
+extern template class abstraction::ValueHolder < tree::PrefixRankedBarPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < const tree::PrefixRankedBarPattern < > & >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
index 6c34da2135..a1717ae8c3 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::PrefixRankedBarTree < >;
+template class abstraction::ValueHolder < tree::PrefixRankedBarTree < > >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarTree < > & >;
 template class registration::NormalizationRegisterImpl < tree::PrefixRankedBarTree < > >;
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
index 16192dd441..254f7907ae 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -451,5 +451,6 @@ struct type_details_retriever < tree::PrefixRankedBarTree < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::PrefixRankedBarTree < >;
+extern template class abstraction::ValueHolder < tree::PrefixRankedBarTree < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarTree < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedBarTree < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.cpp
index 158fd0ce1a..cd14b9749a 100644
--- a/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::PrefixRankedExtendedPattern < >;
+template class abstraction::ValueHolder < tree::PrefixRankedExtendedPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedExtendedPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::PrefixRankedExtendedPattern < > >;
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.h b/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.h
index b6c874d12c..338ea92fac 100644
--- a/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.h
@@ -496,5 +496,6 @@ struct type_details_retriever < tree::PrefixRankedExtendedPattern < SymbolType >
 } /* namespace core */
 
 extern template class tree::PrefixRankedExtendedPattern < >;
+extern template class abstraction::ValueHolder < tree::PrefixRankedExtendedPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedExtendedPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedExtendedPattern < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp
index 6a84f61717..57a62e2a57 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::PrefixRankedNonlinearPattern < >;
+template class abstraction::ValueHolder < tree::PrefixRankedNonlinearPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedNonlinearPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::PrefixRankedNonlinearPattern < > >;
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
index 0e94954899..43a67ed0d9 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -543,5 +543,6 @@ struct type_details_retriever < tree::PrefixRankedNonlinearPattern < SymbolType
 } /* namespace core */
 
 extern template class tree::PrefixRankedNonlinearPattern < >;
+extern template class abstraction::ValueHolder < tree::PrefixRankedNonlinearPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedNonlinearPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedNonlinearPattern < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
index b0ab4fea25..620d46ff9a 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::PrefixRankedPattern < >;
+template class abstraction::ValueHolder < tree::PrefixRankedPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::PrefixRankedPattern < > >;
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h
index 3cd038d470..826b8de075 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -419,5 +419,6 @@ struct type_details_retriever < tree::PrefixRankedPattern < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::PrefixRankedPattern < >;
+extern template class abstraction::ValueHolder < tree::PrefixRankedPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedPattern < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.cpp b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
index 972275888c..c3972e95c1 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::PrefixRankedTree < >;
+template class abstraction::ValueHolder < tree::PrefixRankedTree < > >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedTree < > & >;
 template class registration::NormalizationRegisterImpl < tree::PrefixRankedTree < > >;
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h
index 8b808e891e..3b9b3b59ef 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -357,5 +357,6 @@ struct type_details_retriever < tree::PrefixRankedTree < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::PrefixRankedTree < >;
+extern template class abstraction::ValueHolder < tree::PrefixRankedTree < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedTree < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedTree < > >;
diff --git a/alib2data/src/tree/ranked/RankedExtendedPattern.cpp b/alib2data/src/tree/ranked/RankedExtendedPattern.cpp
index 88e4cd3311..02c701fcb1 100644
--- a/alib2data/src/tree/ranked/RankedExtendedPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedExtendedPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::RankedExtendedPattern < >;
+template class abstraction::ValueHolder < tree::RankedExtendedPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::RankedExtendedPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::RankedExtendedPattern < > >;
 
diff --git a/alib2data/src/tree/ranked/RankedExtendedPattern.h b/alib2data/src/tree/ranked/RankedExtendedPattern.h
index b3dc94cf9e..564d7e4773 100644
--- a/alib2data/src/tree/ranked/RankedExtendedPattern.h
+++ b/alib2data/src/tree/ranked/RankedExtendedPattern.h
@@ -492,5 +492,6 @@ struct type_details_retriever < tree::RankedExtendedPattern < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::RankedExtendedPattern < >;
+extern template class abstraction::ValueHolder < tree::RankedExtendedPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::RankedExtendedPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::RankedExtendedPattern < > >;
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
index 7705bc4219..c1dc1a0725 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::RankedNonlinearPattern < >;
+template class abstraction::ValueHolder < tree::RankedNonlinearPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::RankedNonlinearPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::RankedNonlinearPattern < > >;
 
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
index d9585e38d9..1f14795c5a 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -501,5 +501,6 @@ struct type_details_retriever < tree::RankedNonlinearPattern < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::RankedNonlinearPattern < >;
+extern template class abstraction::ValueHolder < tree::RankedNonlinearPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::RankedNonlinearPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::RankedNonlinearPattern < > >;
diff --git a/alib2data/src/tree/ranked/RankedPattern.cpp b/alib2data/src/tree/ranked/RankedPattern.cpp
index 30b1eac420..402de67b1f 100644
--- a/alib2data/src/tree/ranked/RankedPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::RankedPattern < >;
+template class abstraction::ValueHolder < tree::RankedPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::RankedPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::RankedPattern < > >;
 
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index 8c73a689f8..5fa1538ac8 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -413,5 +413,6 @@ struct type_details_retriever < tree::RankedPattern < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::RankedPattern < >;
+extern template class abstraction::ValueHolder < tree::RankedPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::RankedPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::RankedPattern < > >;
diff --git a/alib2data/src/tree/ranked/RankedTree.cpp b/alib2data/src/tree/ranked/RankedTree.cpp
index 9bc4c9c036..1dc7384acf 100644
--- a/alib2data/src/tree/ranked/RankedTree.cpp
+++ b/alib2data/src/tree/ranked/RankedTree.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::RankedTree < >;
+template class abstraction::ValueHolder < tree::RankedTree < > >;
 template class registration::DenormalizationRegisterImpl < const tree::RankedTree < > & >;
 template class registration::NormalizationRegisterImpl < tree::RankedTree < > >;
 
diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h
index 17a490326c..7ddf4ee663 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -379,5 +379,6 @@ struct type_details_retriever < tree::RankedTree < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::RankedTree < >;
+extern template class abstraction::ValueHolder < tree::RankedTree < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::RankedTree < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::RankedTree < > >;
diff --git a/alib2data/src/tree/ranked/UnorderedRankedPattern.cpp b/alib2data/src/tree/ranked/UnorderedRankedPattern.cpp
index c346d716be..16de3f2772 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedPattern.cpp
+++ b/alib2data/src/tree/ranked/UnorderedRankedPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::UnorderedRankedPattern < >;
+template class abstraction::ValueHolder < tree::UnorderedRankedPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::UnorderedRankedPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::UnorderedRankedPattern < > >;
 
diff --git a/alib2data/src/tree/ranked/UnorderedRankedPattern.h b/alib2data/src/tree/ranked/UnorderedRankedPattern.h
index 43f7af707b..2ee317e399 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedPattern.h
+++ b/alib2data/src/tree/ranked/UnorderedRankedPattern.h
@@ -413,5 +413,6 @@ struct type_details_retriever < tree::UnorderedRankedPattern < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::UnorderedRankedPattern < >;
+extern template class abstraction::ValueHolder < tree::UnorderedRankedPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnorderedRankedPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::UnorderedRankedPattern < > >;
diff --git a/alib2data/src/tree/ranked/UnorderedRankedTree.cpp b/alib2data/src/tree/ranked/UnorderedRankedTree.cpp
index 7e7e99dc4d..33ae79db5e 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedTree.cpp
+++ b/alib2data/src/tree/ranked/UnorderedRankedTree.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::UnorderedRankedTree < >;
+template class abstraction::ValueHolder < tree::UnorderedRankedTree < > >;
 template class registration::DenormalizationRegisterImpl < const tree::UnorderedRankedTree < > & >;
 template class registration::NormalizationRegisterImpl < tree::UnorderedRankedTree < > >;
 
diff --git a/alib2data/src/tree/ranked/UnorderedRankedTree.h b/alib2data/src/tree/ranked/UnorderedRankedTree.h
index 3ad7f1b7d5..f77de1bcd8 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedTree.h
+++ b/alib2data/src/tree/ranked/UnorderedRankedTree.h
@@ -355,5 +355,6 @@ struct type_details_retriever < tree::UnorderedRankedTree < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::UnorderedRankedTree < >;
+extern template class abstraction::ValueHolder < tree::UnorderedRankedTree < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnorderedRankedTree < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::UnorderedRankedTree < > >;
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.cpp b/alib2data/src/tree/unranked/PrefixBarTree.cpp
index 33441d39f4..c61ea7cbe1 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.cpp
+++ b/alib2data/src/tree/unranked/PrefixBarTree.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::PrefixBarTree < >;
+template class abstraction::ValueHolder < tree::PrefixBarTree < > >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixBarTree < > & >;
 template class registration::NormalizationRegisterImpl < tree::PrefixBarTree < > >;
 
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h
index ad336ca3be..c001060e9d 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -422,5 +422,6 @@ struct type_details_retriever < tree::PrefixBarTree < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::PrefixBarTree < >;
+extern template class abstraction::ValueHolder < tree::PrefixBarTree < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixBarTree < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::PrefixBarTree < > >;
diff --git a/alib2data/src/tree/unranked/UnorderedUnrankedPattern.cpp b/alib2data/src/tree/unranked/UnorderedUnrankedPattern.cpp
index 517329a4a2..340c869fac 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::UnorderedUnrankedPattern < >;
+template class abstraction::ValueHolder < tree::UnorderedUnrankedPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::UnorderedUnrankedPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::UnorderedUnrankedPattern < > >;
 
diff --git a/alib2data/src/tree/unranked/UnorderedUnrankedPattern.h b/alib2data/src/tree/unranked/UnorderedUnrankedPattern.h
index 7e0fc4c14a..cc4bedd160 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedPattern.h
@@ -443,5 +443,6 @@ struct type_details_retriever < tree::UnorderedUnrankedPattern < SymbolType > >
 } /* namespace core */
 
 extern template class tree::UnorderedUnrankedPattern < >;
+extern template class abstraction::ValueHolder < tree::UnorderedUnrankedPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnorderedUnrankedPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::UnorderedUnrankedPattern < > >;
diff --git a/alib2data/src/tree/unranked/UnorderedUnrankedTree.cpp b/alib2data/src/tree/unranked/UnorderedUnrankedTree.cpp
index d02c031e8e..756838e24a 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedTree.cpp
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedTree.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::UnorderedUnrankedTree < >;
+template class abstraction::ValueHolder < tree::UnorderedUnrankedTree < > >;
 template class registration::DenormalizationRegisterImpl < const tree::UnorderedUnrankedTree < > & >;
 template class registration::NormalizationRegisterImpl < tree::UnorderedUnrankedTree < > >;
 
diff --git a/alib2data/src/tree/unranked/UnorderedUnrankedTree.h b/alib2data/src/tree/unranked/UnorderedUnrankedTree.h
index 216359a43a..b3e2ae3ce5 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedTree.h
@@ -334,5 +334,6 @@ struct type_details_retriever < tree::UnorderedUnrankedTree < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::UnorderedUnrankedTree < >;
+extern template class abstraction::ValueHolder < tree::UnorderedUnrankedTree < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnorderedUnrankedTree < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::UnorderedUnrankedTree < > >;
diff --git a/alib2data/src/tree/unranked/UnrankedExtendedPattern.cpp b/alib2data/src/tree/unranked/UnrankedExtendedPattern.cpp
index e4220e36eb..93512d4c82 100644
--- a/alib2data/src/tree/unranked/UnrankedExtendedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedExtendedPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::UnrankedExtendedPattern < >;
+template class abstraction::ValueHolder < tree::UnrankedExtendedPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::UnrankedExtendedPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::UnrankedExtendedPattern < > >;
 
diff --git a/alib2data/src/tree/unranked/UnrankedExtendedPattern.h b/alib2data/src/tree/unranked/UnrankedExtendedPattern.h
index 42877dbf18..193a8b9530 100644
--- a/alib2data/src/tree/unranked/UnrankedExtendedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedExtendedPattern.h
@@ -505,5 +505,6 @@ struct type_details_retriever < tree::UnrankedExtendedPattern < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::UnrankedExtendedPattern < >;
+extern template class abstraction::ValueHolder < tree::UnrankedExtendedPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnrankedExtendedPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::UnrankedExtendedPattern < > >;
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp
index a25c2dc701..4b77bf3316 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::UnrankedNonlinearPattern < >;
+template class abstraction::ValueHolder < tree::UnrankedNonlinearPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::UnrankedNonlinearPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::UnrankedNonlinearPattern < > >;
 
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
index 6270b45d2d..8b87dff0f6 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -533,5 +533,6 @@ struct type_details_retriever < tree::UnrankedNonlinearPattern < SymbolType > >
 } /* namespace core */
 
 extern template class tree::UnrankedNonlinearPattern < >;
+extern template class abstraction::ValueHolder < tree::UnrankedNonlinearPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnrankedNonlinearPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::UnrankedNonlinearPattern < > >;
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.cpp b/alib2data/src/tree/unranked/UnrankedPattern.cpp
index f6307138f6..dd74c11d03 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedPattern.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::UnrankedPattern < >;
+template class abstraction::ValueHolder < tree::UnrankedPattern < > >;
 template class registration::DenormalizationRegisterImpl < const tree::UnrankedPattern < > & >;
 template class registration::NormalizationRegisterImpl < tree::UnrankedPattern < > >;
 
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h
index 412587936a..255f413213 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -446,5 +446,6 @@ struct type_details_retriever < tree::UnrankedPattern < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::UnrankedPattern < >;
+extern template class abstraction::ValueHolder < tree::UnrankedPattern < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnrankedPattern < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::UnrankedPattern < > >;
diff --git a/alib2data/src/tree/unranked/UnrankedTree.cpp b/alib2data/src/tree/unranked/UnrankedTree.cpp
index f3026c41fd..2d1c6f319e 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.cpp
+++ b/alib2data/src/tree/unranked/UnrankedTree.cpp
@@ -5,6 +5,7 @@
 #include <registration/ComponentRegistration.hpp>
 
 template class tree::UnrankedTree < >;
+template class abstraction::ValueHolder < tree::UnrankedTree < > >;
 template class registration::DenormalizationRegisterImpl < const tree::UnrankedTree < > & >;
 template class registration::NormalizationRegisterImpl < tree::UnrankedTree < > >;
 
diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h
index d2618dff99..77265aca7e 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -334,5 +334,6 @@ struct type_details_retriever < tree::UnrankedTree < SymbolType > > {
 } /* namespace core */
 
 extern template class tree::UnrankedTree < >;
+extern template class abstraction::ValueHolder < tree::UnrankedTree < > >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnrankedTree < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::UnrankedTree < > >;
-- 
GitLab