From a44234bf3e39fe812eb6aff224db6bf90a28ea07 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: Sat, 19 Feb 2022 10:32:48 +0100
Subject: [PATCH] data: extern valuaRetriever

---
 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 +
 alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp      | 1 +
 alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h        | 1 +
 alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp             | 1 +
 alib2data/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 +
 alib2data/src/automaton/PDA/InputDrivenDPDA.cpp                  | 1 +
 alib2data/src/automaton/PDA/InputDrivenDPDA.h                    | 1 +
 alib2data/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 +
 alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp  | 1 +
 alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h    | 1 +
 alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp  | 1 +
 alib2data/src/automaton/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 +
 alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp              | 1 +
 alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h                | 1 +
 alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp              | 1 +
 alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h                | 1 +
 .../src/automaton/TA/ArcFactoredDeterministicZAutomaton.cpp      | 1 +
 alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.h  | 1 +
 .../src/automaton/TA/ArcFactoredNondeterministicZAutomaton.cpp   | 1 +
 .../src/automaton/TA/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 +
 alib2data/src/automaton/TA/NondeterministicZAutomaton.cpp        | 1 +
 alib2data/src/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 +
 alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp             | 1 +
 alib2data/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 +
 alib2data/src/grammar/ContextSensitive/CSG.cpp                   | 1 +
 alib2data/src/grammar/ContextSensitive/CSG.h                     | 1 +
 alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp | 1 +
 alib2data/src/grammar/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 +
 .../Unrestricted/ContextPreservingUnrestrictedGrammar.cpp        | 1 +
 .../grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h  | 1 +
 alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp       | 1 +
 alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h         | 1 +
 alib2data/src/regexp/formal/FormalRegExp.cpp                     | 1 +
 alib2data/src/regexp/formal/FormalRegExp.h                       | 1 +
 alib2data/src/regexp/unbounded/UnboundedRegExp.cpp               | 1 +
 alib2data/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 +
 alib2data/src/tree/ranked/PostfixRankedTree.cpp                  | 1 +
 alib2data/src/tree/ranked/PostfixRankedTree.h                    | 1 +
 alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp    | 1 +
 alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h      | 1 +
 alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp             | 1 +
 alib2data/src/tree/ranked/PrefixRankedBarPattern.h               | 1 +
 alib2data/src/tree/ranked/PrefixRankedBarTree.cpp                | 1 +
 alib2data/src/tree/ranked/PrefixRankedBarTree.h                  | 1 +
 alib2data/src/tree/ranked/PrefixRankedExtendedPattern.cpp        | 1 +
 alib2data/src/tree/ranked/PrefixRankedExtendedPattern.h          | 1 +
 alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp       | 1 +
 alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h         | 1 +
 alib2data/src/tree/ranked/PrefixRankedPattern.cpp                | 1 +
 alib2data/src/tree/ranked/PrefixRankedPattern.h                  | 1 +
 alib2data/src/tree/ranked/PrefixRankedTree.cpp                   | 1 +
 alib2data/src/tree/ranked/PrefixRankedTree.h                     | 1 +
 alib2data/src/tree/ranked/RankedExtendedPattern.cpp              | 1 +
 alib2data/src/tree/ranked/RankedExtendedPattern.h                | 1 +
 alib2data/src/tree/ranked/RankedNonlinearPattern.cpp             | 1 +
 alib2data/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 +
 alib2data/src/tree/ranked/UnorderedRankedPattern.cpp             | 1 +
 alib2data/src/tree/ranked/UnorderedRankedPattern.h               | 1 +
 alib2data/src/tree/ranked/UnorderedRankedTree.cpp                | 1 +
 alib2data/src/tree/ranked/UnorderedRankedTree.h                  | 1 +
 alib2data/src/tree/unranked/PrefixBarTree.cpp                    | 1 +
 alib2data/src/tree/unranked/PrefixBarTree.h                      | 1 +
 alib2data/src/tree/unranked/UnorderedUnrankedPattern.cpp         | 1 +
 alib2data/src/tree/unranked/UnorderedUnrankedPattern.h           | 1 +
 alib2data/src/tree/unranked/UnorderedUnrankedTree.cpp            | 1 +
 alib2data/src/tree/unranked/UnorderedUnrankedTree.h              | 1 +
 alib2data/src/tree/unranked/UnrankedExtendedPattern.cpp          | 1 +
 alib2data/src/tree/unranked/UnrankedExtendedPattern.h            | 1 +
 alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp         | 1 +
 alib2data/src/tree/unranked/UnrankedNonlinearPattern.h           | 1 +
 alib2data/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 +
 138 files changed, 138 insertions(+)

diff --git a/alib2data/src/automaton/FSM/CompactDFA.cpp b/alib2data/src/automaton/FSM/CompactDFA.cpp
index 1ab41f5e97..ab730d7a37 100644
--- a/alib2data/src/automaton/FSM/CompactDFA.cpp
+++ b/alib2data/src/automaton/FSM/CompactDFA.cpp
@@ -6,6 +6,7 @@
 
 template class automaton::CompactDFA < >;
 template class abstraction::ValueHolder < automaton::CompactDFA < > >;
+template const automaton::CompactDFA < > & abstraction::retrieveValue < const automaton::CompactDFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 1376212a5e..3c7d997713 100644
--- a/alib2data/src/automaton/FSM/CompactDFA.h
+++ b/alib2data/src/automaton/FSM/CompactDFA.h
@@ -779,5 +779,6 @@ struct type_details_retriever < automaton::CompactDFA < SymbolType, StateType >
 
 extern template class automaton::CompactDFA < >;
 extern template class abstraction::ValueHolder < automaton::CompactDFA < > >;
+extern template const automaton::CompactDFA < > & abstraction::retrieveValue < const automaton::CompactDFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 62c1fdf185..cca4222ea9 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.cpp
+++ b/alib2data/src/automaton/FSM/CompactNFA.cpp
@@ -6,6 +6,7 @@
 
 template class automaton::CompactNFA < >;
 template class abstraction::ValueHolder < automaton::CompactNFA < > >;
+template const automaton::CompactNFA < > & abstraction::retrieveValue < const automaton::CompactNFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 65fa996218..7c4e849a41 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.h
+++ b/alib2data/src/automaton/FSM/CompactNFA.h
@@ -850,5 +850,6 @@ struct type_details_retriever < automaton::CompactNFA < SymbolType, StateType >
 
 extern template class automaton::CompactNFA < >;
 extern template class abstraction::ValueHolder < automaton::CompactNFA < > >;
+extern template const automaton::CompactNFA < > & abstraction::retrieveValue < const automaton::CompactNFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 9fbc1be1ef..fc179cdafa 100644
--- a/alib2data/src/automaton/FSM/DFA.cpp
+++ b/alib2data/src/automaton/FSM/DFA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::DFA < >;
 template class abstraction::ValueHolder < automaton::DFA < > >;
+template const automaton::DFA < > & abstraction::retrieveValue < const automaton::DFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 b26bac9059..9ac35dcc48 100644
--- a/alib2data/src/automaton/FSM/DFA.h
+++ b/alib2data/src/automaton/FSM/DFA.h
@@ -772,5 +772,6 @@ struct type_details_retriever < automaton::DFA < SymbolType, StateType > > {
 
 extern template class automaton::DFA < >;
 extern template class abstraction::ValueHolder < automaton::DFA < > >;
+extern template const automaton::DFA < > & abstraction::retrieveValue < const automaton::DFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 d2ae119c19..dfe5d8c541 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::EpsilonNFA < >;
 template class abstraction::ValueHolder < automaton::EpsilonNFA < > >;
+template const automaton::EpsilonNFA < > & abstraction::retrieveValue < const automaton::EpsilonNFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 61f9768846..e35bb85e6d 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.h
@@ -1063,5 +1063,6 @@ struct type_details_retriever < automaton::EpsilonNFA < SymbolType, StateType >
 
 extern template class automaton::EpsilonNFA < >;
 extern template class abstraction::ValueHolder < automaton::EpsilonNFA < > >;
+extern template const automaton::EpsilonNFA < > & abstraction::retrieveValue < const automaton::EpsilonNFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 e50db95fc8..03c517e778 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.cpp
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::ExtendedNFA < >;
 template class abstraction::ValueHolder < automaton::ExtendedNFA < > >;
+template const automaton::ExtendedNFA < > & abstraction::retrieveValue < const automaton::ExtendedNFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 0b506c61f2..b05563687e 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.h
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.h
@@ -876,5 +876,6 @@ struct type_details_retriever < automaton::ExtendedNFA < SymbolType, StateType >
 
 extern template class automaton::ExtendedNFA < >;
 extern template class abstraction::ValueHolder < automaton::ExtendedNFA < > >;
+extern template const automaton::ExtendedNFA < > & abstraction::retrieveValue < const automaton::ExtendedNFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 0606ecb975..a4c08269e7 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::MultiInitialStateEpsilonNFA < >;
 template class abstraction::ValueHolder < automaton::MultiInitialStateEpsilonNFA < > >;
+template const automaton::MultiInitialStateEpsilonNFA < > & abstraction::retrieveValue < const automaton::MultiInitialStateEpsilonNFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 7d6e6cda48..b047d8892b 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h
@@ -1108,5 +1108,6 @@ struct type_details_retriever < automaton::MultiInitialStateEpsilonNFA < SymbolT
 
 extern template class automaton::MultiInitialStateEpsilonNFA < >;
 extern template class abstraction::ValueHolder < automaton::MultiInitialStateEpsilonNFA < > >;
+extern template const automaton::MultiInitialStateEpsilonNFA < > & abstraction::retrieveValue < const automaton::MultiInitialStateEpsilonNFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 4712349d57..f5cfd0b957 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::MultiInitialStateNFA < >;
 template class abstraction::ValueHolder < automaton::MultiInitialStateNFA < > >;
+template const automaton::MultiInitialStateNFA < > & abstraction::retrieveValue < const automaton::MultiInitialStateNFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 f991116b45..e08774d8f0 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
@@ -837,5 +837,6 @@ struct type_details_retriever < automaton::MultiInitialStateNFA < SymbolType, St
 
 extern template class automaton::MultiInitialStateNFA < >;
 extern template class abstraction::ValueHolder < automaton::MultiInitialStateNFA < > >;
+extern template const automaton::MultiInitialStateNFA < > & abstraction::retrieveValue < const automaton::MultiInitialStateNFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 a85ce77e7b..7b8128c24f 100644
--- a/alib2data/src/automaton/FSM/NFA.cpp
+++ b/alib2data/src/automaton/FSM/NFA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::NFA < >;
 template class abstraction::ValueHolder < automaton::NFA < > >;
+template const automaton::NFA < > & abstraction::retrieveValue < const automaton::NFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 2ce67c1aec..80b20c0b0e 100644
--- a/alib2data/src/automaton/FSM/NFA.h
+++ b/alib2data/src/automaton/FSM/NFA.h
@@ -795,5 +795,6 @@ struct type_details_retriever < automaton::NFA < SymbolType, StateType > > {
 
 extern template class automaton::NFA < >;
 extern template class abstraction::ValueHolder < automaton::NFA < > >;
+extern template const automaton::NFA < > & abstraction::retrieveValue < const automaton::NFA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 ddf23d16f9..fc520299c8 100644
--- a/alib2data/src/automaton/PDA/DPDA.cpp
+++ b/alib2data/src/automaton/PDA/DPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::DPDA < >;
 template class abstraction::ValueHolder < automaton::DPDA < > >;
+template const automaton::DPDA < > & abstraction::retrieveValue < const automaton::DPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 5dd231bb28..5de97674bc 100644
--- a/alib2data/src/automaton/PDA/DPDA.h
+++ b/alib2data/src/automaton/PDA/DPDA.h
@@ -1084,5 +1084,6 @@ struct type_details_retriever < automaton::DPDA < InputSymbolType, PushdownStore
 
 extern template class automaton::DPDA < >;
 extern template class abstraction::ValueHolder < automaton::DPDA < > >;
+extern template const automaton::DPDA < > & abstraction::retrieveValue < const automaton::DPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 36c5069660..8ed3ed01e9 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::InputDrivenDPDA < >;
 template class abstraction::ValueHolder < automaton::InputDrivenDPDA < > >;
+template const automaton::InputDrivenDPDA < > & abstraction::retrieveValue < const automaton::InputDrivenDPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 e831dcf924..9e71819a36 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
@@ -1069,5 +1069,6 @@ struct type_details_retriever < automaton::InputDrivenDPDA < InputSymbolType, Pu
 
 extern template class automaton::InputDrivenDPDA < >;
 extern template class abstraction::ValueHolder < automaton::InputDrivenDPDA < > >;
+extern template const automaton::InputDrivenDPDA < > & abstraction::retrieveValue < const automaton::InputDrivenDPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 ce9e2d91c3..2e14beb2bb 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::InputDrivenNPDA < >;
 template class abstraction::ValueHolder < automaton::InputDrivenNPDA < > >;
+template const automaton::InputDrivenNPDA < > & abstraction::retrieveValue < const automaton::InputDrivenNPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 d7cd76c97b..fd443f14a5 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
@@ -1087,5 +1087,6 @@ struct type_details_retriever < automaton::InputDrivenNPDA < InputSymbolType, Pu
 
 extern template class automaton::InputDrivenNPDA < >;
 extern template class abstraction::ValueHolder < automaton::InputDrivenNPDA < > >;
+extern template const automaton::InputDrivenNPDA < > & abstraction::retrieveValue < const automaton::InputDrivenNPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 d51cd58ef4..0dcd137242 100644
--- a/alib2data/src/automaton/PDA/NPDA.cpp
+++ b/alib2data/src/automaton/PDA/NPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::NPDA < >;
 template class abstraction::ValueHolder < automaton::NPDA < > >;
+template const automaton::NPDA < > & abstraction::retrieveValue < const automaton::NPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 f7a81d2ca8..f205ee3f82 100644
--- a/alib2data/src/automaton/PDA/NPDA.h
+++ b/alib2data/src/automaton/PDA/NPDA.h
@@ -1050,5 +1050,6 @@ struct type_details_retriever < automaton::NPDA < InputSymbolType, PushdownStore
 
 extern template class automaton::NPDA < >;
 extern template class abstraction::ValueHolder < automaton::NPDA < > >;
+extern template const automaton::NPDA < > & abstraction::retrieveValue < const automaton::NPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 0a72c8f5bf..7c463d7dff 100644
--- a/alib2data/src/automaton/PDA/NPDTA.cpp
+++ b/alib2data/src/automaton/PDA/NPDTA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::NPDTA < >;
 template class abstraction::ValueHolder < automaton::NPDTA < > >;
+template const automaton::NPDTA < > & abstraction::retrieveValue < const automaton::NPDTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 d598f43404..5787e241bd 100644
--- a/alib2data/src/automaton/PDA/NPDTA.h
+++ b/alib2data/src/automaton/PDA/NPDTA.h
@@ -1167,5 +1167,6 @@ struct type_details_retriever < automaton::NPDTA < InputSymbolType, OutputSymbol
 
 extern template class automaton::NPDTA < >;
 extern template class abstraction::ValueHolder < automaton::NPDTA < > >;
+extern template const automaton::NPDTA < > & abstraction::retrieveValue < const automaton::NPDTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 aa76491906..e63abd4213 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::RealTimeHeightDeterministicDPDA < >;
 template class abstraction::ValueHolder < automaton::RealTimeHeightDeterministicDPDA < > >;
+template const automaton::RealTimeHeightDeterministicDPDA < > & abstraction::retrieveValue < const automaton::RealTimeHeightDeterministicDPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 503212e6f4..9dc1c55943 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
@@ -1506,5 +1506,6 @@ struct type_details_retriever < automaton::RealTimeHeightDeterministicDPDA < Inp
 
 extern template class automaton::RealTimeHeightDeterministicDPDA < >;
 extern template class abstraction::ValueHolder < automaton::RealTimeHeightDeterministicDPDA < > >;
+extern template const automaton::RealTimeHeightDeterministicDPDA < > & abstraction::retrieveValue < const automaton::RealTimeHeightDeterministicDPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 1863f2cb59..c6790a6b30 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::RealTimeHeightDeterministicNPDA < >;
 template class abstraction::ValueHolder < automaton::RealTimeHeightDeterministicNPDA < > >;
+template const automaton::RealTimeHeightDeterministicNPDA < > & abstraction::retrieveValue < const automaton::RealTimeHeightDeterministicNPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 875865c0ae..c5bc7c978a 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
@@ -1452,5 +1452,6 @@ struct type_details_retriever < automaton::RealTimeHeightDeterministicNPDA < Inp
 
 extern template class automaton::RealTimeHeightDeterministicNPDA < >;
 extern template class abstraction::ValueHolder < automaton::RealTimeHeightDeterministicNPDA < > >;
+extern template const automaton::RealTimeHeightDeterministicNPDA < > & abstraction::retrieveValue < const automaton::RealTimeHeightDeterministicNPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 540715d097..3de7f9fa90 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::SinglePopDPDA < >;
 template class abstraction::ValueHolder < automaton::SinglePopDPDA < > >;
+template const automaton::SinglePopDPDA < > & abstraction::retrieveValue < const automaton::SinglePopDPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 d5fdeeae2b..5c3c0231ac 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.h
@@ -1009,5 +1009,6 @@ struct type_details_retriever < automaton::SinglePopDPDA < InputSymbolType, Push
 
 extern template class automaton::SinglePopDPDA < >;
 extern template class abstraction::ValueHolder < automaton::SinglePopDPDA < > >;
+extern template const automaton::SinglePopDPDA < > & abstraction::retrieveValue < const automaton::SinglePopDPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 6042da7ed6..9b285481e9 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::SinglePopNPDA < >;
 template class abstraction::ValueHolder < automaton::SinglePopNPDA < > >;
+template const automaton::SinglePopNPDA < > & abstraction::retrieveValue < const automaton::SinglePopNPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 61c3d7dfd8..fc64845856 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.h
@@ -994,5 +994,6 @@ struct type_details_retriever < automaton::SinglePopNPDA < InputSymbolType, Push
 
 extern template class automaton::SinglePopNPDA < >;
 extern template class abstraction::ValueHolder < automaton::SinglePopNPDA < > >;
+extern template const automaton::SinglePopNPDA < > & abstraction::retrieveValue < const automaton::SinglePopNPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 27aaf5013b..04f2273f74 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::VisiblyPushdownDPDA < >;
 template class abstraction::ValueHolder < automaton::VisiblyPushdownDPDA < > >;
+template const automaton::VisiblyPushdownDPDA < > & abstraction::retrieveValue < const automaton::VisiblyPushdownDPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 514c6bc045..ceea7fa7e9 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
@@ -1439,5 +1439,6 @@ struct type_details_retriever < automaton::VisiblyPushdownDPDA < InputSymbolType
 
 extern template class automaton::VisiblyPushdownDPDA < >;
 extern template class abstraction::ValueHolder < automaton::VisiblyPushdownDPDA < > >;
+extern template const automaton::VisiblyPushdownDPDA < > & abstraction::retrieveValue < const automaton::VisiblyPushdownDPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 3ba415740d..46cc10182e 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::VisiblyPushdownNPDA < >;
 template class abstraction::ValueHolder < automaton::VisiblyPushdownNPDA < > >;
+template const automaton::VisiblyPushdownNPDA < > & abstraction::retrieveValue < const automaton::VisiblyPushdownNPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 9494b63910..57324eeae4 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
@@ -1435,5 +1435,6 @@ struct type_details_retriever < automaton::VisiblyPushdownNPDA < InputSymbolType
 
 extern template class automaton::VisiblyPushdownNPDA < >;
 extern template class abstraction::ValueHolder < automaton::VisiblyPushdownNPDA < > >;
+extern template const automaton::VisiblyPushdownNPDA < > & abstraction::retrieveValue < const automaton::VisiblyPushdownNPDA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 13d85cab5c..e086199cb9 100644
--- a/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.cpp
+++ b/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::ArcFactoredDeterministicZAutomaton < >;
 template class abstraction::ValueHolder < automaton::ArcFactoredDeterministicZAutomaton < > >;
+template const automaton::ArcFactoredDeterministicZAutomaton < > & abstraction::retrieveValue < const automaton::ArcFactoredDeterministicZAutomaton < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 b865fc1948..88c8420d26 100644
--- a/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.h
+++ b/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.h
@@ -695,5 +695,6 @@ struct type_details_retriever < automaton::ArcFactoredDeterministicZAutomaton <
 
 extern template class automaton::ArcFactoredDeterministicZAutomaton < >;
 extern template class abstraction::ValueHolder < automaton::ArcFactoredDeterministicZAutomaton < > >;
+extern template const automaton::ArcFactoredDeterministicZAutomaton < > & abstraction::retrieveValue < const automaton::ArcFactoredDeterministicZAutomaton < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 1f3f42491a..41675e9b09 100644
--- a/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.cpp
+++ b/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::ArcFactoredNondeterministicZAutomaton < >;
 template class abstraction::ValueHolder < automaton::ArcFactoredNondeterministicZAutomaton < > >;
+template const automaton::ArcFactoredNondeterministicZAutomaton < > & abstraction::retrieveValue < const automaton::ArcFactoredNondeterministicZAutomaton < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 dd26462d0f..83ff1d2a55 100644
--- a/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.h
+++ b/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.h
@@ -708,5 +708,6 @@ struct type_details_retriever < automaton::ArcFactoredNondeterministicZAutomaton
 
 extern template class automaton::ArcFactoredNondeterministicZAutomaton < >;
 extern template class abstraction::ValueHolder < automaton::ArcFactoredNondeterministicZAutomaton < > >;
+extern template const automaton::ArcFactoredNondeterministicZAutomaton < > & abstraction::retrieveValue < const automaton::ArcFactoredNondeterministicZAutomaton < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 a9ee5e317b..84e10e58b0 100644
--- a/alib2data/src/automaton/TA/DFTA.cpp
+++ b/alib2data/src/automaton/TA/DFTA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::DFTA < >;
 template class abstraction::ValueHolder < automaton::DFTA < > >;
+template const automaton::DFTA < > & abstraction::retrieveValue < const automaton::DFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 384da3bd8d..48d6a76fcc 100644
--- a/alib2data/src/automaton/TA/DFTA.h
+++ b/alib2data/src/automaton/TA/DFTA.h
@@ -672,5 +672,6 @@ struct type_details_retriever < automaton::DFTA < SymbolType, StateType > > {
 
 extern template class automaton::DFTA < >;
 extern template class abstraction::ValueHolder < automaton::DFTA < > >;
+extern template const automaton::DFTA < > & abstraction::retrieveValue < const automaton::DFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 1fecf52211..73e468fa98 100644
--- a/alib2data/src/automaton/TA/EpsilonNFTA.cpp
+++ b/alib2data/src/automaton/TA/EpsilonNFTA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::EpsilonNFTA < >;
 template class abstraction::ValueHolder < automaton::EpsilonNFTA < > >;
+template const automaton::EpsilonNFTA < > & abstraction::retrieveValue < const automaton::EpsilonNFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 6b81616530..319aa1e397 100644
--- a/alib2data/src/automaton/TA/EpsilonNFTA.h
+++ b/alib2data/src/automaton/TA/EpsilonNFTA.h
@@ -927,5 +927,6 @@ struct type_details_retriever < automaton::EpsilonNFTA < SymbolType, StateType >
 
 extern template class automaton::EpsilonNFTA < >;
 extern template class abstraction::ValueHolder < automaton::EpsilonNFTA < > >;
+extern template const automaton::EpsilonNFTA < > & abstraction::retrieveValue < const automaton::EpsilonNFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 4ff659c09d..04922f0b27 100644
--- a/alib2data/src/automaton/TA/ExtendedNFTA.cpp
+++ b/alib2data/src/automaton/TA/ExtendedNFTA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::ExtendedNFTA < >;
 template class abstraction::ValueHolder < automaton::ExtendedNFTA < > >;
+template const automaton::ExtendedNFTA < > & abstraction::retrieveValue < const automaton::ExtendedNFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 340a86c942..c3058bf15b 100644
--- a/alib2data/src/automaton/TA/ExtendedNFTA.h
+++ b/alib2data/src/automaton/TA/ExtendedNFTA.h
@@ -745,5 +745,6 @@ struct type_details_retriever < automaton::ExtendedNFTA < SymbolType, StateType
 
 extern template class automaton::ExtendedNFTA < >;
 extern template class abstraction::ValueHolder < automaton::ExtendedNFTA < > >;
+extern template const automaton::ExtendedNFTA < > & abstraction::retrieveValue < const automaton::ExtendedNFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 fb70105449..6d6d67775f 100644
--- a/alib2data/src/automaton/TA/NFTA.cpp
+++ b/alib2data/src/automaton/TA/NFTA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::NFTA < >;
 template class abstraction::ValueHolder < automaton::NFTA < > >;
+template const automaton::NFTA < > & abstraction::retrieveValue < const automaton::NFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 003dc5f749..a64ab60038 100644
--- a/alib2data/src/automaton/TA/NFTA.h
+++ b/alib2data/src/automaton/TA/NFTA.h
@@ -698,5 +698,6 @@ struct type_details_retriever < automaton::NFTA < SymbolType, StateType > > {
 
 extern template class automaton::NFTA < >;
 extern template class abstraction::ValueHolder < automaton::NFTA < > >;
+extern template const automaton::NFTA < > & abstraction::retrieveValue < const automaton::NFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 2bc108fb9b..5389f65b23 100644
--- a/alib2data/src/automaton/TA/NondeterministicZAutomaton.cpp
+++ b/alib2data/src/automaton/TA/NondeterministicZAutomaton.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::NondeterministicZAutomaton < >;
 template class abstraction::ValueHolder < automaton::NondeterministicZAutomaton < > >;
+template const automaton::NondeterministicZAutomaton < > & abstraction::retrieveValue < const automaton::NondeterministicZAutomaton < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 b42c97066a..6114b007b7 100644
--- a/alib2data/src/automaton/TA/NondeterministicZAutomaton.h
+++ b/alib2data/src/automaton/TA/NondeterministicZAutomaton.h
@@ -637,5 +637,6 @@ struct type_details_retriever < automaton::NondeterministicZAutomaton < SymbolTy
 
 extern template class automaton::NondeterministicZAutomaton < >;
 extern template class abstraction::ValueHolder < automaton::NondeterministicZAutomaton < > >;
+extern template const automaton::NondeterministicZAutomaton < > & abstraction::retrieveValue < const automaton::NondeterministicZAutomaton < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 57c44c52ae..c0871b9ad1 100644
--- a/alib2data/src/automaton/TA/UnorderedDFTA.cpp
+++ b/alib2data/src/automaton/TA/UnorderedDFTA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::UnorderedDFTA < >;
 template class abstraction::ValueHolder < automaton::UnorderedDFTA < > >;
+template const automaton::UnorderedDFTA < > & abstraction::retrieveValue < const automaton::UnorderedDFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 bb0016e055..06ac776ba0 100644
--- a/alib2data/src/automaton/TA/UnorderedDFTA.h
+++ b/alib2data/src/automaton/TA/UnorderedDFTA.h
@@ -670,5 +670,6 @@ struct type_details_retriever < automaton::UnorderedDFTA < SymbolType, StateType
 
 extern template class automaton::UnorderedDFTA < >;
 extern template class abstraction::ValueHolder < automaton::UnorderedDFTA < > >;
+extern template const automaton::UnorderedDFTA < > & abstraction::retrieveValue < const automaton::UnorderedDFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 455d4e2d4f..987a7ced91 100644
--- a/alib2data/src/automaton/TA/UnorderedNFTA.cpp
+++ b/alib2data/src/automaton/TA/UnorderedNFTA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::UnorderedNFTA < >;
 template class abstraction::ValueHolder < automaton::UnorderedNFTA < > >;
+template const automaton::UnorderedNFTA < > & abstraction::retrieveValue < const automaton::UnorderedNFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 aa1ca28903..d69affff1b 100644
--- a/alib2data/src/automaton/TA/UnorderedNFTA.h
+++ b/alib2data/src/automaton/TA/UnorderedNFTA.h
@@ -698,5 +698,6 @@ struct type_details_retriever < automaton::UnorderedNFTA < SymbolType, StateType
 
 extern template class automaton::UnorderedNFTA < >;
 extern template class abstraction::ValueHolder < automaton::UnorderedNFTA < > >;
+extern template const automaton::UnorderedNFTA < > & abstraction::retrieveValue < const automaton::UnorderedNFTA < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 450771645e..7914c0f15b 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.cpp
+++ b/alib2data/src/automaton/TM/OneTapeDTM.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::OneTapeDTM < >;
 template class abstraction::ValueHolder < automaton::OneTapeDTM < > >;
+template const automaton::OneTapeDTM < > & abstraction::retrieveValue < const automaton::OneTapeDTM < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 4b37175a64..777f85fb4f 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.h
+++ b/alib2data/src/automaton/TM/OneTapeDTM.h
@@ -881,5 +881,6 @@ struct type_details_retriever < automaton::OneTapeDTM < SymbolType, StateType >
 
 extern template class automaton::OneTapeDTM < >;
 extern template class abstraction::ValueHolder < automaton::OneTapeDTM < > >;
+extern template const automaton::OneTapeDTM < > & abstraction::retrieveValue < const automaton::OneTapeDTM < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 2f09b33118..23f3eed81d 100644
--- a/alib2data/src/grammar/ContextFree/CFG.cpp
+++ b/alib2data/src/grammar/ContextFree/CFG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::CFG < >;
 template class abstraction::ValueHolder < grammar::CFG < > >;
+template const grammar::CFG < > & abstraction::retrieveValue < const grammar::CFG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 f0ff2661a3..6e4b159c3d 100644
--- a/alib2data/src/grammar/ContextFree/CFG.h
+++ b/alib2data/src/grammar/ContextFree/CFG.h
@@ -568,5 +568,6 @@ struct type_details_retriever < grammar::CFG < TerminalSymbolType, NonterminalSy
 
 extern template class grammar::CFG < >;
 extern template class abstraction::ValueHolder < grammar::CFG < > >;
+extern template const grammar::CFG < > & abstraction::retrieveValue < const grammar::CFG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 278b48a6fa..ee5d78d144 100644
--- a/alib2data/src/grammar/ContextFree/CNF.cpp
+++ b/alib2data/src/grammar/ContextFree/CNF.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::CNF < >;
 template class abstraction::ValueHolder < grammar::CNF < > >;
+template const grammar::CNF < > & abstraction::retrieveValue < const grammar::CNF < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 4966ce2947..2dd14ae06d 100644
--- a/alib2data/src/grammar/ContextFree/CNF.h
+++ b/alib2data/src/grammar/ContextFree/CNF.h
@@ -643,5 +643,6 @@ struct type_details_retriever < grammar::CNF < TerminalSymbolType, NonterminalSy
 
 extern template class grammar::CNF < >;
 extern template class abstraction::ValueHolder < grammar::CNF < > >;
+extern template const grammar::CNF < > & abstraction::retrieveValue < const grammar::CNF < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 ac43470138..21e4e334ec 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::EpsilonFreeCFG < >;
 template class abstraction::ValueHolder < grammar::EpsilonFreeCFG < > >;
+template const grammar::EpsilonFreeCFG < > & abstraction::retrieveValue < const grammar::EpsilonFreeCFG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 66ed84d6f9..b928808956 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
@@ -595,5 +595,6 @@ struct type_details_retriever < grammar::EpsilonFreeCFG < TerminalSymbolType, No
 
 extern template class grammar::EpsilonFreeCFG < >;
 extern template class abstraction::ValueHolder < grammar::EpsilonFreeCFG < > >;
+extern template const grammar::EpsilonFreeCFG < > & abstraction::retrieveValue < const grammar::EpsilonFreeCFG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 3db05047c1..a57263f48f 100644
--- a/alib2data/src/grammar/ContextFree/GNF.cpp
+++ b/alib2data/src/grammar/ContextFree/GNF.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::GNF < >;
 template class abstraction::ValueHolder < grammar::GNF < > >;
+template const grammar::GNF < > & abstraction::retrieveValue < const grammar::GNF < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 f45bfdcd3e..fe7a56b448 100644
--- a/alib2data/src/grammar/ContextFree/GNF.h
+++ b/alib2data/src/grammar/ContextFree/GNF.h
@@ -595,5 +595,6 @@ struct type_details_retriever < grammar::GNF < TerminalSymbolType, NonterminalSy
 
 extern template class grammar::GNF < >;
 extern template class abstraction::ValueHolder < grammar::GNF < > >;
+extern template const grammar::GNF < > & abstraction::retrieveValue < const grammar::GNF < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 24ce836dd6..ad43a72c0c 100644
--- a/alib2data/src/grammar/ContextFree/LG.cpp
+++ b/alib2data/src/grammar/ContextFree/LG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::LG < >;
 template class abstraction::ValueHolder < grammar::LG < > >;
+template const grammar::LG < > & abstraction::retrieveValue < const grammar::LG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 9aec7dbb12..f4792fde49 100644
--- a/alib2data/src/grammar/ContextFree/LG.h
+++ b/alib2data/src/grammar/ContextFree/LG.h
@@ -644,5 +644,6 @@ struct type_details_retriever < grammar::LG < TerminalSymbolType, NonterminalSym
 
 extern template class grammar::LG < >;
 extern template class abstraction::ValueHolder < grammar::LG < > >;
+extern template const grammar::LG < > & abstraction::retrieveValue < const grammar::LG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 620ba54161..61240a9591 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.cpp
+++ b/alib2data/src/grammar/ContextSensitive/CSG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::CSG < >;
 template class abstraction::ValueHolder < grammar::CSG < > >;
+template const grammar::CSG < > & abstraction::retrieveValue < const grammar::CSG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 15ebb8f2cb..3313f11b81 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.h
+++ b/alib2data/src/grammar/ContextSensitive/CSG.h
@@ -624,5 +624,6 @@ struct type_details_retriever < grammar::CSG < SymbolType > > {
 
 extern template class grammar::CSG < >;
 extern template class abstraction::ValueHolder < grammar::CSG < > >;
+extern template const grammar::CSG < > & abstraction::retrieveValue < const grammar::CSG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 6da020fcce..5f9c298561 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::NonContractingGrammar < >;
 template class abstraction::ValueHolder < grammar::NonContractingGrammar < > >;
+template const grammar::NonContractingGrammar < > & abstraction::retrieveValue < const grammar::NonContractingGrammar < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 406dca0834..baf44fa096 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
@@ -617,5 +617,6 @@ struct type_details_retriever < grammar::NonContractingGrammar < SymbolType > >
 
 extern template class grammar::NonContractingGrammar < >;
 extern template class abstraction::ValueHolder < grammar::NonContractingGrammar < > >;
+extern template const grammar::NonContractingGrammar < > & abstraction::retrieveValue < const grammar::NonContractingGrammar < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 0b10027654..4311c5d9d7 100644
--- a/alib2data/src/grammar/Regular/LeftLG.cpp
+++ b/alib2data/src/grammar/Regular/LeftLG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::LeftLG < >;
 template class abstraction::ValueHolder < grammar::LeftLG < > >;
+template const grammar::LeftLG < > & abstraction::retrieveValue < const grammar::LeftLG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 170305884a..201b26db5e 100644
--- a/alib2data/src/grammar/Regular/LeftLG.h
+++ b/alib2data/src/grammar/Regular/LeftLG.h
@@ -626,5 +626,6 @@ struct type_details_retriever < grammar::LeftLG < TerminalSymbolType, Nontermina
 
 extern template class grammar::LeftLG < >;
 extern template class abstraction::ValueHolder < grammar::LeftLG < > >;
+extern template const grammar::LeftLG < > & abstraction::retrieveValue < const grammar::LeftLG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 9854e1c3b1..6a8fc7c3cb 100644
--- a/alib2data/src/grammar/Regular/LeftRG.cpp
+++ b/alib2data/src/grammar/Regular/LeftRG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::LeftRG < >;
 template class abstraction::ValueHolder < grammar::LeftRG < > >;
+template const grammar::LeftRG < > & abstraction::retrieveValue < const grammar::LeftRG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 8fd6249179..7b70125caf 100644
--- a/alib2data/src/grammar/Regular/LeftRG.h
+++ b/alib2data/src/grammar/Regular/LeftRG.h
@@ -642,5 +642,6 @@ struct type_details_retriever < grammar::LeftRG < TerminalSymbolType, Nontermina
 
 extern template class grammar::LeftRG < >;
 extern template class abstraction::ValueHolder < grammar::LeftRG < > >;
+extern template const grammar::LeftRG < > & abstraction::retrieveValue < const grammar::LeftRG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 0cc83db853..113566c4dd 100644
--- a/alib2data/src/grammar/Regular/RightLG.cpp
+++ b/alib2data/src/grammar/Regular/RightLG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::RightLG < >;
 template class abstraction::ValueHolder < grammar::RightLG < > >;
+template const grammar::RightLG < > & abstraction::retrieveValue < const grammar::RightLG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 de4325b6c5..a43400d553 100644
--- a/alib2data/src/grammar/Regular/RightLG.h
+++ b/alib2data/src/grammar/Regular/RightLG.h
@@ -623,5 +623,6 @@ struct type_details_retriever < grammar::RightLG < TerminalSymbolType, Nontermin
 
 extern template class grammar::RightLG < >;
 extern template class abstraction::ValueHolder < grammar::RightLG < > >;
+extern template const grammar::RightLG < > & abstraction::retrieveValue < const grammar::RightLG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 9e31bfc0fa..3509a0017f 100644
--- a/alib2data/src/grammar/Regular/RightRG.cpp
+++ b/alib2data/src/grammar/Regular/RightRG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::RightRG < >;
 template class abstraction::ValueHolder < grammar::RightRG < > >;
+template const grammar::RightRG < > & abstraction::retrieveValue < const grammar::RightRG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 684244bbcc..c3e550f774 100644
--- a/alib2data/src/grammar/Regular/RightRG.h
+++ b/alib2data/src/grammar/Regular/RightRG.h
@@ -641,5 +641,6 @@ struct type_details_retriever < grammar::RightRG < TerminalSymbolType, Nontermin
 
 extern template class grammar::RightRG < >;
 extern template class abstraction::ValueHolder < grammar::RightRG < > >;
+extern template const grammar::RightRG < > & abstraction::retrieveValue < const grammar::RightRG < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 de4f706040..4193f63666 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::ContextPreservingUnrestrictedGrammar < >;
 template class abstraction::ValueHolder < grammar::ContextPreservingUnrestrictedGrammar < > >;
+template const grammar::ContextPreservingUnrestrictedGrammar < > & abstraction::retrieveValue < const grammar::ContextPreservingUnrestrictedGrammar < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 354234fa31..a9a63031c7 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
@@ -593,5 +593,6 @@ struct type_details_retriever < grammar::ContextPreservingUnrestrictedGrammar <
 
 extern template class grammar::ContextPreservingUnrestrictedGrammar < >;
 extern template class abstraction::ValueHolder < grammar::ContextPreservingUnrestrictedGrammar < > >;
+extern template const grammar::ContextPreservingUnrestrictedGrammar < > & abstraction::retrieveValue < const grammar::ContextPreservingUnrestrictedGrammar < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 c247a80344..2c0a6eca5c 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::UnrestrictedGrammar < >;
 template class abstraction::ValueHolder < grammar::UnrestrictedGrammar < > >;
+template const grammar::UnrestrictedGrammar < > & abstraction::retrieveValue < const grammar::UnrestrictedGrammar < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 b87c313eea..892215ee87 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
@@ -590,5 +590,6 @@ struct type_details_retriever < grammar::UnrestrictedGrammar < SymbolType > > {
 
 extern template class grammar::UnrestrictedGrammar < >;
 extern template class abstraction::ValueHolder < grammar::UnrestrictedGrammar < > >;
+extern template const grammar::UnrestrictedGrammar < > & abstraction::retrieveValue < const grammar::UnrestrictedGrammar < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 44b0b18fa8..7e76f7be4f 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.cpp
+++ b/alib2data/src/regexp/formal/FormalRegExp.cpp
@@ -6,6 +6,7 @@
 
 template class regexp::FormalRegExp < >;
 template class abstraction::ValueHolder < regexp::FormalRegExp < > >;
+template const regexp::FormalRegExp < > & abstraction::retrieveValue < const regexp::FormalRegExp < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 28d83e453e..f29a3a737c 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.h
+++ b/alib2data/src/regexp/formal/FormalRegExp.h
@@ -310,5 +310,6 @@ struct type_details_retriever < regexp::FormalRegExp < SymbolType > > {
 
 extern template class regexp::FormalRegExp < >;
 extern template class abstraction::ValueHolder < regexp::FormalRegExp < > >;
+extern template const regexp::FormalRegExp < > & abstraction::retrieveValue < const regexp::FormalRegExp < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 f775c05429..8bf61a8b01 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
@@ -6,6 +6,7 @@
 
 template class regexp::UnboundedRegExp < >;
 template class abstraction::ValueHolder < regexp::UnboundedRegExp < > >;
+template const regexp::UnboundedRegExp < > & abstraction::retrieveValue < const regexp::UnboundedRegExp < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 4877f6c5c7..cce3db2ddb 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
@@ -312,5 +312,6 @@ struct type_details_retriever < regexp::UnboundedRegExp < SymbolType > > {
 
 extern template class regexp::UnboundedRegExp < >;
 extern template class abstraction::ValueHolder < regexp::UnboundedRegExp < > >;
+extern template const regexp::UnboundedRegExp < > & abstraction::retrieveValue < const regexp::UnboundedRegExp < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 a369194a98..f876a32b4a 100644
--- a/alib2data/src/rte/formal/FormalRTE.cpp
+++ b/alib2data/src/rte/formal/FormalRTE.cpp
@@ -5,6 +5,7 @@
 
 template class rte::FormalRTE < >;
 template class abstraction::ValueHolder < rte::FormalRTE < > >;
+template const rte::FormalRTE < > & abstraction::retrieveValue < const rte::FormalRTE < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 123b4285be..5280d456cf 100644
--- a/alib2data/src/rte/formal/FormalRTE.h
+++ b/alib2data/src/rte/formal/FormalRTE.h
@@ -450,5 +450,6 @@ struct type_details_retriever < rte::FormalRTE < SymbolType > > {
 
 extern template class rte::FormalRTE < >;
 extern template class abstraction::ValueHolder < rte::FormalRTE < > >;
+extern template const rte::FormalRTE < > & abstraction::retrieveValue < const rte::FormalRTE < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 4b2b7297b6..cbe7562cdb 100644
--- a/alib2data/src/string/CyclicString.cpp
+++ b/alib2data/src/string/CyclicString.cpp
@@ -5,6 +5,7 @@
 
 template class string::CyclicString < >;
 template class abstraction::ValueHolder < string::CyclicString < > >;
+template const string::CyclicString < > & abstraction::retrieveValue < const string::CyclicString < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 ac3e00ff66..6320b7eedc 100644
--- a/alib2data/src/string/CyclicString.h
+++ b/alib2data/src/string/CyclicString.h
@@ -342,5 +342,6 @@ struct type_details_retriever < string::CyclicString < SymbolType > > {
 
 extern template class string::CyclicString < >;
 extern template class abstraction::ValueHolder < string::CyclicString < > >;
+extern template const string::CyclicString < > & abstraction::retrieveValue < const string::CyclicString < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 2831112034..6c91f2a212 100644
--- a/alib2data/src/string/LinearString.cpp
+++ b/alib2data/src/string/LinearString.cpp
@@ -6,6 +6,7 @@
 
 template class string::LinearString < >;
 template class abstraction::ValueHolder < string::LinearString < > >;
+template const string::LinearString < > & abstraction::retrieveValue < const string::LinearString < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 910276dddf..b20c077505 100644
--- a/alib2data/src/string/LinearString.h
+++ b/alib2data/src/string/LinearString.h
@@ -364,5 +364,6 @@ struct type_details_retriever < string::LinearString < SymbolType > > {
 
 extern template class string::LinearString < >;
 extern template class abstraction::ValueHolder < string::LinearString < > >;
+extern template const string::LinearString < > & abstraction::retrieveValue < const string::LinearString < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 0beef00050..7b106399df 100644
--- a/alib2data/src/string/WildcardLinearString.cpp
+++ b/alib2data/src/string/WildcardLinearString.cpp
@@ -6,6 +6,7 @@
 
 template class string::WildcardLinearString < >;
 template class abstraction::ValueHolder < string::WildcardLinearString < > >;
+template const string::WildcardLinearString < > & abstraction::retrieveValue < const string::WildcardLinearString < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 41a98d4cca..e4c8a43ea6 100644
--- a/alib2data/src/string/WildcardLinearString.h
+++ b/alib2data/src/string/WildcardLinearString.h
@@ -431,5 +431,6 @@ struct type_details_retriever < string::WildcardLinearString < SymbolType > > {
 
 extern template class string::WildcardLinearString < >;
 extern template class abstraction::ValueHolder < string::WildcardLinearString < > >;
+extern template const string::WildcardLinearString < > & abstraction::retrieveValue < const string::WildcardLinearString < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 c0e40b991d..d2a8b47eaf 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.cpp
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PostfixRankedTree < >;
 template class abstraction::ValueHolder < tree::PostfixRankedTree < > >;
+template const tree::PostfixRankedTree < > & abstraction::retrieveValue < const tree::PostfixRankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 e3c227897b..e060b1f31c 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.h
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.h
@@ -351,5 +351,6 @@ struct type_details_retriever < tree::PostfixRankedTree < SymbolType > > {
 
 extern template class tree::PostfixRankedTree < >;
 extern template class abstraction::ValueHolder < tree::PostfixRankedTree < > >;
+extern template const tree::PostfixRankedTree < > & abstraction::retrieveValue < const tree::PostfixRankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 def3032930..ff87acfe0a 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedBarNonlinearPattern < >;
 template class abstraction::ValueHolder < tree::PrefixRankedBarNonlinearPattern < > >;
+template const tree::PrefixRankedBarNonlinearPattern < > & abstraction::retrieveValue < const tree::PrefixRankedBarNonlinearPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 7276ee2356..258d9f5f99 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -745,5 +745,6 @@ struct type_details_retriever < tree::PrefixRankedBarNonlinearPattern < SymbolTy
 
 extern template class tree::PrefixRankedBarNonlinearPattern < >;
 extern template class abstraction::ValueHolder < tree::PrefixRankedBarNonlinearPattern < > >;
+extern template const tree::PrefixRankedBarNonlinearPattern < > & abstraction::retrieveValue < const tree::PrefixRankedBarNonlinearPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 a93161378f..4cb019ff9f 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedBarPattern < >;
 template class abstraction::ValueHolder < tree::PrefixRankedBarPattern < > >;
+template const tree::PrefixRankedBarPattern < > & abstraction::retrieveValue < const tree::PrefixRankedBarPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 98ff5dfcdb..12dfdd0c03 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -587,5 +587,6 @@ struct type_details_retriever < tree::PrefixRankedBarPattern < SymbolType > > {
 
 extern template class tree::PrefixRankedBarPattern < >;
 extern template class abstraction::ValueHolder < tree::PrefixRankedBarPattern < > >;
+extern template const tree::PrefixRankedBarPattern < > & abstraction::retrieveValue < const tree::PrefixRankedBarPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 a1717ae8c3..b5d7d145cf 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedBarTree < >;
 template class abstraction::ValueHolder < tree::PrefixRankedBarTree < > >;
+template const tree::PrefixRankedBarTree < > & abstraction::retrieveValue < const tree::PrefixRankedBarTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 254f7907ae..2ca7334886 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -452,5 +452,6 @@ struct type_details_retriever < tree::PrefixRankedBarTree < SymbolType > > {
 
 extern template class tree::PrefixRankedBarTree < >;
 extern template class abstraction::ValueHolder < tree::PrefixRankedBarTree < > >;
+extern template const tree::PrefixRankedBarTree < > & abstraction::retrieveValue < const tree::PrefixRankedBarTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 cd14b9749a..f06dbaa690 100644
--- a/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedExtendedPattern < >;
 template class abstraction::ValueHolder < tree::PrefixRankedExtendedPattern < > >;
+template const tree::PrefixRankedExtendedPattern < > & abstraction::retrieveValue < const tree::PrefixRankedExtendedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 338ea92fac..ba161f9d2e 100644
--- a/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.h
@@ -497,5 +497,6 @@ struct type_details_retriever < tree::PrefixRankedExtendedPattern < SymbolType >
 
 extern template class tree::PrefixRankedExtendedPattern < >;
 extern template class abstraction::ValueHolder < tree::PrefixRankedExtendedPattern < > >;
+extern template const tree::PrefixRankedExtendedPattern < > & abstraction::retrieveValue < const tree::PrefixRankedExtendedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 57a62e2a57..1525414d64 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedNonlinearPattern < >;
 template class abstraction::ValueHolder < tree::PrefixRankedNonlinearPattern < > >;
+template const tree::PrefixRankedNonlinearPattern < > & abstraction::retrieveValue < const tree::PrefixRankedNonlinearPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 43a67ed0d9..9d5e980777 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -544,5 +544,6 @@ struct type_details_retriever < tree::PrefixRankedNonlinearPattern < SymbolType
 
 extern template class tree::PrefixRankedNonlinearPattern < >;
 extern template class abstraction::ValueHolder < tree::PrefixRankedNonlinearPattern < > >;
+extern template const tree::PrefixRankedNonlinearPattern < > & abstraction::retrieveValue < const tree::PrefixRankedNonlinearPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 620d46ff9a..b1cf3237a9 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedPattern < >;
 template class abstraction::ValueHolder < tree::PrefixRankedPattern < > >;
+template const tree::PrefixRankedPattern < > & abstraction::retrieveValue < const tree::PrefixRankedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 826b8de075..fab0dfa32e 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -420,5 +420,6 @@ struct type_details_retriever < tree::PrefixRankedPattern < SymbolType > > {
 
 extern template class tree::PrefixRankedPattern < >;
 extern template class abstraction::ValueHolder < tree::PrefixRankedPattern < > >;
+extern template const tree::PrefixRankedPattern < > & abstraction::retrieveValue < const tree::PrefixRankedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 c3972e95c1..805db36e6b 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedTree < >;
 template class abstraction::ValueHolder < tree::PrefixRankedTree < > >;
+template const tree::PrefixRankedTree < > & abstraction::retrieveValue < const tree::PrefixRankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 3b9b3b59ef..f7cd57f302 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -358,5 +358,6 @@ struct type_details_retriever < tree::PrefixRankedTree < SymbolType > > {
 
 extern template class tree::PrefixRankedTree < >;
 extern template class abstraction::ValueHolder < tree::PrefixRankedTree < > >;
+extern template const tree::PrefixRankedTree < > & abstraction::retrieveValue < const tree::PrefixRankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 02c701fcb1..02e31eff3f 100644
--- a/alib2data/src/tree/ranked/RankedExtendedPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedExtendedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::RankedExtendedPattern < >;
 template class abstraction::ValueHolder < tree::RankedExtendedPattern < > >;
+template const tree::RankedExtendedPattern < > & abstraction::retrieveValue < const tree::RankedExtendedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 564d7e4773..b7275b4ed0 100644
--- a/alib2data/src/tree/ranked/RankedExtendedPattern.h
+++ b/alib2data/src/tree/ranked/RankedExtendedPattern.h
@@ -493,5 +493,6 @@ struct type_details_retriever < tree::RankedExtendedPattern < SymbolType > > {
 
 extern template class tree::RankedExtendedPattern < >;
 extern template class abstraction::ValueHolder < tree::RankedExtendedPattern < > >;
+extern template const tree::RankedExtendedPattern < > & abstraction::retrieveValue < const tree::RankedExtendedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 c1dc1a0725..67c5d4cb59 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::RankedNonlinearPattern < >;
 template class abstraction::ValueHolder < tree::RankedNonlinearPattern < > >;
+template const tree::RankedNonlinearPattern < > & abstraction::retrieveValue < const tree::RankedNonlinearPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 1f14795c5a..9f2490f306 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -502,5 +502,6 @@ struct type_details_retriever < tree::RankedNonlinearPattern < SymbolType > > {
 
 extern template class tree::RankedNonlinearPattern < >;
 extern template class abstraction::ValueHolder < tree::RankedNonlinearPattern < > >;
+extern template const tree::RankedNonlinearPattern < > & abstraction::retrieveValue < const tree::RankedNonlinearPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 402de67b1f..8807868fbd 100644
--- a/alib2data/src/tree/ranked/RankedPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::RankedPattern < >;
 template class abstraction::ValueHolder < tree::RankedPattern < > >;
+template const tree::RankedPattern < > & abstraction::retrieveValue < const tree::RankedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 5fa1538ac8..7f93befce3 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -414,5 +414,6 @@ struct type_details_retriever < tree::RankedPattern < SymbolType > > {
 
 extern template class tree::RankedPattern < >;
 extern template class abstraction::ValueHolder < tree::RankedPattern < > >;
+extern template const tree::RankedPattern < > & abstraction::retrieveValue < const tree::RankedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 1dc7384acf..c270346592 100644
--- a/alib2data/src/tree/ranked/RankedTree.cpp
+++ b/alib2data/src/tree/ranked/RankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::RankedTree < >;
 template class abstraction::ValueHolder < tree::RankedTree < > >;
+template const tree::RankedTree < > & abstraction::retrieveValue < const tree::RankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 7ddf4ee663..e9d59bddc6 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -380,5 +380,6 @@ struct type_details_retriever < tree::RankedTree < SymbolType > > {
 
 extern template class tree::RankedTree < >;
 extern template class abstraction::ValueHolder < tree::RankedTree < > >;
+extern template const tree::RankedTree < > & abstraction::retrieveValue < const tree::RankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 16de3f2772..fabe911af2 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedPattern.cpp
+++ b/alib2data/src/tree/ranked/UnorderedRankedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnorderedRankedPattern < >;
 template class abstraction::ValueHolder < tree::UnorderedRankedPattern < > >;
+template const tree::UnorderedRankedPattern < > & abstraction::retrieveValue < const tree::UnorderedRankedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 2ee317e399..23fdbfb9a4 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedPattern.h
+++ b/alib2data/src/tree/ranked/UnorderedRankedPattern.h
@@ -414,5 +414,6 @@ struct type_details_retriever < tree::UnorderedRankedPattern < SymbolType > > {
 
 extern template class tree::UnorderedRankedPattern < >;
 extern template class abstraction::ValueHolder < tree::UnorderedRankedPattern < > >;
+extern template const tree::UnorderedRankedPattern < > & abstraction::retrieveValue < const tree::UnorderedRankedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 33ae79db5e..e20d43426f 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedTree.cpp
+++ b/alib2data/src/tree/ranked/UnorderedRankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnorderedRankedTree < >;
 template class abstraction::ValueHolder < tree::UnorderedRankedTree < > >;
+template const tree::UnorderedRankedTree < > & abstraction::retrieveValue < const tree::UnorderedRankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 f77de1bcd8..39ca25212e 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedTree.h
+++ b/alib2data/src/tree/ranked/UnorderedRankedTree.h
@@ -356,5 +356,6 @@ struct type_details_retriever < tree::UnorderedRankedTree < SymbolType > > {
 
 extern template class tree::UnorderedRankedTree < >;
 extern template class abstraction::ValueHolder < tree::UnorderedRankedTree < > >;
+extern template const tree::UnorderedRankedTree < > & abstraction::retrieveValue < const tree::UnorderedRankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 c61ea7cbe1..a054215ccc 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.cpp
+++ b/alib2data/src/tree/unranked/PrefixBarTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixBarTree < >;
 template class abstraction::ValueHolder < tree::PrefixBarTree < > >;
+template const tree::PrefixBarTree < > & abstraction::retrieveValue < const tree::PrefixBarTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 c001060e9d..007ac6441c 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -423,5 +423,6 @@ struct type_details_retriever < tree::PrefixBarTree < SymbolType > > {
 
 extern template class tree::PrefixBarTree < >;
 extern template class abstraction::ValueHolder < tree::PrefixBarTree < > >;
+extern template const tree::PrefixBarTree < > & abstraction::retrieveValue < const tree::PrefixBarTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 340c869fac..e01826176c 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnorderedUnrankedPattern < >;
 template class abstraction::ValueHolder < tree::UnorderedUnrankedPattern < > >;
+template const tree::UnorderedUnrankedPattern < > & abstraction::retrieveValue < const tree::UnorderedUnrankedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 cc4bedd160..5071dbaa18 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedPattern.h
@@ -444,5 +444,6 @@ struct type_details_retriever < tree::UnorderedUnrankedPattern < SymbolType > >
 
 extern template class tree::UnorderedUnrankedPattern < >;
 extern template class abstraction::ValueHolder < tree::UnorderedUnrankedPattern < > >;
+extern template const tree::UnorderedUnrankedPattern < > & abstraction::retrieveValue < const tree::UnorderedUnrankedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 756838e24a..d567ea2755 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedTree.cpp
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnorderedUnrankedTree < >;
 template class abstraction::ValueHolder < tree::UnorderedUnrankedTree < > >;
+template const tree::UnorderedUnrankedTree < > & abstraction::retrieveValue < const tree::UnorderedUnrankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 b3e2ae3ce5..1b362745b7 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedTree.h
@@ -335,5 +335,6 @@ struct type_details_retriever < tree::UnorderedUnrankedTree < SymbolType > > {
 
 extern template class tree::UnorderedUnrankedTree < >;
 extern template class abstraction::ValueHolder < tree::UnorderedUnrankedTree < > >;
+extern template const tree::UnorderedUnrankedTree < > & abstraction::retrieveValue < const tree::UnorderedUnrankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 93512d4c82..8f4c352e2a 100644
--- a/alib2data/src/tree/unranked/UnrankedExtendedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedExtendedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnrankedExtendedPattern < >;
 template class abstraction::ValueHolder < tree::UnrankedExtendedPattern < > >;
+template const tree::UnrankedExtendedPattern < > & abstraction::retrieveValue < const tree::UnrankedExtendedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 193a8b9530..01a4575d9b 100644
--- a/alib2data/src/tree/unranked/UnrankedExtendedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedExtendedPattern.h
@@ -506,5 +506,6 @@ struct type_details_retriever < tree::UnrankedExtendedPattern < SymbolType > > {
 
 extern template class tree::UnrankedExtendedPattern < >;
 extern template class abstraction::ValueHolder < tree::UnrankedExtendedPattern < > >;
+extern template const tree::UnrankedExtendedPattern < > & abstraction::retrieveValue < const tree::UnrankedExtendedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 4b77bf3316..2d4ba18272 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnrankedNonlinearPattern < >;
 template class abstraction::ValueHolder < tree::UnrankedNonlinearPattern < > >;
+template const tree::UnrankedNonlinearPattern < > & abstraction::retrieveValue < const tree::UnrankedNonlinearPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 8b87dff0f6..a18d3c9e94 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -534,5 +534,6 @@ struct type_details_retriever < tree::UnrankedNonlinearPattern < SymbolType > >
 
 extern template class tree::UnrankedNonlinearPattern < >;
 extern template class abstraction::ValueHolder < tree::UnrankedNonlinearPattern < > >;
+extern template const tree::UnrankedNonlinearPattern < > & abstraction::retrieveValue < const tree::UnrankedNonlinearPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 dd74c11d03..4ffbfdf3a3 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnrankedPattern < >;
 template class abstraction::ValueHolder < tree::UnrankedPattern < > >;
+template const tree::UnrankedPattern < > & abstraction::retrieveValue < const tree::UnrankedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 255f413213..71de8ff993 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -447,5 +447,6 @@ struct type_details_retriever < tree::UnrankedPattern < SymbolType > > {
 
 extern template class tree::UnrankedPattern < >;
 extern template class abstraction::ValueHolder < tree::UnrankedPattern < > >;
+extern template const tree::UnrankedPattern < > & abstraction::retrieveValue < const tree::UnrankedPattern < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 2d1c6f319e..a34d1d246c 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.cpp
+++ b/alib2data/src/tree/unranked/UnrankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnrankedTree < >;
 template class abstraction::ValueHolder < tree::UnrankedTree < > >;
+template const tree::UnrankedTree < > & abstraction::retrieveValue < const tree::UnrankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 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 77265aca7e..967e279600 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -335,5 +335,6 @@ struct type_details_retriever < tree::UnrankedTree < SymbolType > > {
 
 extern template class tree::UnrankedTree < >;
 extern template class abstraction::ValueHolder < tree::UnrankedTree < > >;
+extern template const tree::UnrankedTree < > & abstraction::retrieveValue < const tree::UnrankedTree < > & > ( const std::shared_ptr < abstraction::Value > & param, bool move );
 extern template class registration::DenormalizationRegisterImpl < const tree::UnrankedTree < > & >;
 extern template class registration::NormalizationRegisterImpl < tree::UnrankedTree < > >;
-- 
GitLab