diff --git a/alib2data/src/automaton/FSM/CompactDFA.cpp b/alib2data/src/automaton/FSM/CompactDFA.cpp
index 1ab41f5e970402a829208f6f0f567b746e2bbc8a..ab730d7a37294b27f80ec6daac1be39a96e4e883 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 1376212a5ec52460877799f8caceadb7a5174192..3c7d997713f43d7c1e7406a29cdceb0b2b59bc12 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 62c1fdf185c8df824996bbd43abe8d0543c430e9..cca4222ea9b713338cd0f4d1f947aa4f23417663 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 65fa9962189a99720e9624dda2bf27ef5606efbc..7c4e849a4153980e9f1a149e4ccef062117be23b 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 9fbc1be1ef092f0de3779d393654816a91d98637..fc179cdafa6737ff62d23c563dc3e8aec9210bdd 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 b26bac905906f1565aa2e066ac4437a0802ce5fb..9ac35dcc48f9fbee495c680fd614b53c71df48f7 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 d2ae119c19cd53a0a89e1bf34bec734e3154d7a0..dfe5d8c54145d676eff1fab47c19a9600fb2d91a 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 61f9768846d6eeabbd2e7d99d500f2e53c708d31..e35bb85e6df783b1ba14d6df4aff4f74bb628d6d 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 e50db95fc895efa9fecb8ba20f959324840442cf..03c517e778f22c87408a20751d29714ccabe00a7 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 0b506c61f29457c28603bd7c7ab7bb3e0ec2a053..b05563687e5505260717db3e5871d881be0f737f 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 0606ecb97561e676e52d2ab4ad170b77c5e5fdc0..a4c08269e7e9e1947b2138765f18307cc3480fbd 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 7d6e6cda48f2a606e1a6daeccd6e4918f35170fe..b047d8892be090c3aa742080b1d98354e9429a2c 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 4712349d571ad1b06966396c1ea0b011192ab7d5..f5cfd0b957271837a88d7ea2d95493b4578bdbbd 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 f991116b454d974c25289d244c7677584fada40b..e08774d8f07c3e28c2e91946c939f90da2d0595c 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 a85ce77e7bdd2871ba39e973bc846ef7ddad98a4..7b8128c24f2e36c8cec4c2828354880f8c49c4bc 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 2ce67c1aec554183c0911fa4c7b7ce299c230090..80b20c0b0e7a45b3ff27e983231a76313ebe1646 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 ddf23d16f91dcb7cab060bc9d2bd997ac28c0a2e..fc520299c8dcd9f22819c484b1d45a619c4fde4b 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 5dd231bb281e828cd381c3a8a9b20b4096915cd8..5de97674bc6fd6a0a451e23acdbcb2768e521e52 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 36c50696601c09c2eda35526b6e1894d23353b03..8ed3ed01e9748e1d9c62a608e5569e83e60852a7 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 e831dcf9245179f47f805b76398ef39795355662..9e71819a36b38ad26c8e394df4327f1eedaf5c32 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 ce9e2d91c3d365a79a6a4d16096501047a78fc3f..2e14beb2bb557947a9e695f9b6a31d804cc6d6c8 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 d7cd76c97b8384cc0ed1ac3afcdbc809a7284257..fd443f14a575a8cf6c58637cda6c7a60d99ffd44 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 d51cd58ef4d7c02f5b849060990543eefb8dd823..0dcd137242410a46a67c7845908fd1c36970e9af 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 f7a81d2ca8e8f98d66bb6b816ea88af0540a43c0..f205ee3f824cbf3a51e2fe8481685bf032ad3431 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 0a72c8f5bf10e20741643facf88e2374a71d1d2d..7c463d7dff8aee0f0e4771cd9d6a1e0e8015a793 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 d598f4340454c13d7709b2c0ed6c52c28afb7808..5787e241bd16056ae15c2c6b7a4b99f67872a3ae 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 aa764919067f47a4b33fccbd87c0611daadda5db..e63abd42137bece5fc2e17dfd424d0b5300674b4 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 503212e6f4859ea889773aa6d0ec5015fdadd4cc..9dc1c55943e35f887207778f520c01bcfacb75de 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 1863f2cb59c5c77068c65857ac1c76b221e6d485..c6790a6b30839b33538f36c913294cf84157ce21 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 875865c0ae2252f8d25c89373c61c4050c27eec7..c5bc7c978aecff39dbed4ee5cf88922b790e5710 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 540715d097d8972619d0e01a0b0566eb2e48f860..3de7f9fa90b35e1d2dd9189d3dfda5f62bac3288 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 d5fdeeae2bf605f641444e1f44674d57a9749f9a..5c3c0231accb8fc7c3e33411cec790a294fca265 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 6042da7ed60fe29fdeaeea0a286978b9a0cac928..9b285481e9137c0d5cf7be65e7e5da8cbbabd14a 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 61c3d7dfd8233fdfbb58717c91bd51224c49f36f..fc64845856d22385a3304bbfa399f1bd77a1c4b1 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 27aaf5013b8bcca2e2645c6f8d08b770ee5d05ee..04f2273f7414aced38b3fc062c9a6850fbb9540d 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 514c6bc0455e79f19cde70daf6dede0e138032b9..ceea7fa7e96ec3012d08e6e0a1b989d4c8a86d58 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 3ba415740dd1e9ffb1f6e8356686d505917668c1..46cc10182e71dfd0dc911f40a68a6b38d9e9708b 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 9494b63910d98ac44b8a85c98859adfc91a788ad..57324eeae428d522348633edbdeb651b5dd4426b 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 13d85cab5c14fb18aa0934f122e19f93bb672883..e086199cb96671137664d9a9862396634428f9c3 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 b865fc1948d794ea5c80d90436a32802795f9685..88c8420d26eac351f7668bd5cae68e3809cedde2 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 1f3f42491a09c828a597ae7955c97e20818cc777..41675e9b09c0206b9ef1dfa965aa6581f4486ab4 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 dd26462d0f84cae01c64c64c4586ed20bb38eb87..83ff1d2a5597e4ad333c2b7201e2b22684016dda 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 a9ee5e317b842e4ef4a78bb052c22e9c9fc21d13..84e10e58b047ce96d35162703cd9d7fe64641be7 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 384da3bd8dede0e9a14cd23a91d58c76c6f84c7a..48d6a76fcc30168401446435b8c6cf925d517870 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 1fecf522111d9df940b32adeaeb8e717e8e839d3..73e468fa980ab407e0635071fdfdc7cc343b00b7 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 6b8161653043f2634c8cc37b1273d05b5a7df991..319aa1e397008a29378699589c4d6e8c3aff02ae 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 4ff659c09d781c7a65395dc2489da47efebd5943..04922f0b27d8ee613118bc38852ce3d282cdf2ba 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 340a86c942c9f21bf7ef89a97c68d992ad4541cd..c3058bf15bcc2367a768617ec22e7ce57453bcb0 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 fb7010544923203577af477fdb9cf617fa1adceb..6d6d67775ffdcae15a73f97c3b44467605d625f6 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 003dc5f749f6ea6e4490d0600ad3d21f04b98b10..a64ab6003896284002bd85024603bffd9eb4658c 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 2bc108fb9b77441e2a558ba89292c42565abd3a6..5389f65b23a36c3c23092fad02936399ae75e343 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 b42c97066a24c662715640e0ff48caa002e93f2c..6114b007b7430b7d351c384744b7d55fcc903b43 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 57c44c52ae843f51060666d0560e6ec9488d48dd..c0871b9ad189a18392d7a349aa247f626b096e57 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 bb0016e0554a72dbe50bcc4f67b3e78ce8003663..06ac776ba0654d1a92a3ba073658fa7101805dd8 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 455d4e2d4f81181330a97435cf9c7cec83067b20..987a7ced912d3ea1fde8664106803ad47910b3bc 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 aa1ca28903e8e6d02f66da510fbd4307f7632003..d69affff1b7ab8e935856fd8ce49039c76243153 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 450771645ee192cfac924bf87323f88b174c0516..7914c0f15b859571364928a9b9f4895cb0134801 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 4b37175a644c799d41ee64f060d45eea77a9771a..777f85fb4f2ae2742b4f911f2f16a74a26c5401d 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 2f09b33118327e7d6087e8f64c4d899a3de6b47e..23f3eed81d7f725b8f117c5e23733c7c148b13e9 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 f0ff2661a3f1235c78f1aafe679ccde5859ad785..6e4b159c3d9cf05007bbaaa51063320af6bf1bfd 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 278b48a6fa23d0da99720a9025aee426968934f7..ee5d78d1445b519bd4245e7b171217c93af0236f 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 4966ce29478348b3f16854cb27a13c7aeb4612c2..2dd14ae06dc1ab7378f68a55d7155259125b1fe6 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 ac434701385c8287e5d4661a4920e58762f4977b..21e4e334ec74f49cedbbb89b504f1ed08be9674d 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 66ed84d6f92ccc4e2ec6c165caac8aea6e12bf87..b9288089566f921ed7eb21179615727df6ea18ab 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 3db05047c1a2f545d56d695aca75334ac3f562a1..a57263f48f69c206ad6badda55abdeae41db599c 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 f45bfdcd3e199d1457ac15fe9c3853c00963ee7b..fe7a56b448c0c1d6c5990db9e855b37dac8ffbac 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 24ce836dd62ef88aaceace304af55dd3e64ec7ea..ad43a72c0c5bb0916aaeea11e8b1589a829b779a 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 9aec7dbb12a1065f0019d365bd95da17824112c6..f4792fde49ed5f4a5e17eeda7e92807eed191609 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 620ba54161ecfb2a76da543e996150b63712b68c..61240a9591206f6588ce10a1b85fd0848a8bdb1c 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 15ebb8f2cb59dca6416446c909c872bb54911fb9..3313f11b81e60394dd5062b6e2d1bc6e37143a96 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 6da020fccec0aabb0ffd418908b58a05fc2f8962..5f9c298561735cd821981fca34f6199a6ad62b25 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 406dca0834c2be249e94e4b86517f450fbc15f0c..baf44fa096f4dde19fd65d07bb88836b4446478c 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 0b100276542fa0c11a2c5c7f3db0faae706f8fc0..4311c5d9d77466cef88c0a2b74b5f70264c71591 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 170305884a6c44a4d92fdd88aafa71ae383b2bc4..201b26db5e85f46da96065551e4260c7da49e67b 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 9854e1c3b1b8047b4f7952de387f13c808a3e463..6a8fc7c3cb357ecbb28603e2de845ce984bdb74b 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 8fd62491793b00eb26c592dbe479bd2e8b09e392..7b70125caf923a91ee35a9c3d4d052b35839136e 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 0cc83db853edc8a5a38342d7d5c92d563ae32e7c..113566c4dd3519b8df08ed92c327e5eeb0af1f5a 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 de4325b6c58fcbbe4ddba885629e87459b6ec8a1..a43400d5531d245836bc7ea88b1a9f1d10ad431d 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 9e31bfc0fa4e13945fec2eb49d84a53ebc089385..3509a0017fa32b9f2ded850df20104c4d147c98c 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 684244bbcc592b4622deb80b64fe56c67498d337..c3e550f77459112297c5f512a4abd33edf2f0130 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 de4f706040da04f5533c7d53246b7754b102fedf..4193f63666f68e8b637498996d5cb4ad63c1985f 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 354234fa3180fb6ac4e07499669afc786a93df55..a9a63031c7aca68232ac49eb0338d64f24c8fa9a 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 c247a80344bf117cf73a22b32b597fa8a72d6f94..2c0a6eca5c0f418e6619a57421ff9da2f3c9b247 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 b87c313eeaa41fcf7e0dd9d31835f9e562e48497..892215ee87d8c7ee161357934cd886e0a86eb568 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 44b0b18fa812bd787741de742f6b5058b59452cb..7e76f7be4ff72ac21b61c23debcd2336b6be046f 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 28d83e453ed5f42906d2ebb336acd96dc3c4b218..f29a3a737cc3e449486ed7ce34ef10d6fc48847b 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 f775c05429add68e4b63073d07beed027aa8b1e6..8bf61a8b0137d3e965add844cc60736e462d5e3d 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 4877f6c5c7b94eceddea73931e7e960512765140..cce3db2ddb47f0ba1b8572eb01571ccad10dc45a 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 a369194a9877607795d6521301b57f60506a7924..f876a32b4ac9f680aeff1a9024cf82d627e4c6db 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 123b4285bea056429a020b1ed22462c5cb2b1ea1..5280d456cf7b181a1a5560e63c48412fb1970771 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 4b2b7297b6c8f18ab7a927bc535d5da6b3048137..cbe7562cdb229e25c97e688118edd0c4d461ff1e 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 ac3e00ff66d2130fe120e258745c034df64accc0..6320b7eedc719714774431ddb660ab4d39cf5dae 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 2831112034eeea1ccb7e08257f5687480be8a506..6c91f2a212cc77ff9d33dafc38dce42f7770031c 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 910276dddfa9225c0efec32682c32961f5f21097..b20c077505ed150cbc755e65dd10a0f028339ed9 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 0beef00050830d4c9e300ad503b8620f0d366885..7b106399df1df4e71a2729d9490bb00b69efb8de 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 41a98d4cca73645d38f4557c552e8286858ef69f..e4c8a43ea66083e1b1e0011808c4f535b24de1f3 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 c0e40b991dd637bad013467c2c877357524c8f04..d2a8b47eaf6b0d2f9796dbbe88db4a6fdf606673 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 e3c227897b634fbb31d05511bff6bc346dfa3441..e060b1f31ce8d6b20ac65afc4ddced329b35b37c 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 def3032930b1ced090fafc91a1575f1b2d2f0df9..ff87acfe0a98b2db32f21d3f68686e31e377d336 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 7276ee23566297cf6962e15040d0604cbc1e2dfa..258d9f5f99233526ec8c45b52c45099991d89de0 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 a93161378f2679c7b4bdd150fad68e7a47f42c34..4cb019ff9f1e7235f1e9e64f825b3209d0d76bdf 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 98ff5dfcdb4f6ab2ad65d231f8ebaf3f53642a0c..12dfdd0c03d83cc7682f968dce952b37cb92e9a8 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 a1717ae8c3b8794f97892d209e7b184827cb607c..b5d7d145cf6fdd75aa84f0ea58ce03e854324eee 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 254f7907aed96e343f1c4a853dca5e0525ac0f26..2ca73348867a877d10f1e78970563546122a5314 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 cd14b9749a816db36605c6b4bc8d2ef95861c2ed..f06dbaa6901cdb43078a00d900376c8c3e7998e9 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 338ea92facdebfe069a01793112b3bf02564972f..ba161f9d2efebd09d0f5da5a0e9888ac4d027c15 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 57a62e2a579e22c4cc2daf40930571999278a483..1525414d647dec9a8cb5ab53f1ce41cebc577e17 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 43a67ed0d98afaa5bfc7088b3733f4c6b1433d1e..9d5e980777ef3eba2ad65f59a1754878fa89de91 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 620d46ff9ab98245da0f1cd8c7c6d8bc9c0a093a..b1cf3237a948dc24835264a30c3036eb9603d743 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 826b8de07534de76c3c96f192cbb724f13212c4b..fab0dfa32ed088fc9b4bc0e837eb48028d8d7f43 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 c3972e95c17012762abadd1a349f36c927d681f5..805db36e6b97884cabe56a871e9c19f272b7ad58 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 3b9b3b59efea25e8285f5ab168cf081853b9ca25..f7cd57f3020961d340b7374c633d6a2f15c32b6d 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 02c701fcb1630c570402c2856c6a65fc716c06a7..02e31eff3f367e48ab7bc79306e5e1264ecc99f3 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 564d7e477303c6bce06803bb763f3c617dcd24d0..b7275b4ed02c935c82c27f1573280ee5800f412e 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 c1dc1a0725bcc9fb8913acd3728482ba6686c4bc..67c5d4cb595ab2f21e9391ab78c0f3a581d90a11 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 1f14795c5a7a72bd03ab918272acef248ec3d0f4..9f2490f30650ccb0e30250bdc17ead274039739a 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 402de67b1fbf38a285ec4b34ea479c781e869173..8807868fbdd5d16792846bb768dcfb6bb1c9310b 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 5fa1538ac80fb9e0e7d4f72d9e9401921b3bf7c2..7f93befce3f9e08eaee258caf94d503b2c413ddd 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 1dc7384acf401e39192b9ef986ab32bb703bbbd8..c270346592ad40c12d5e75c02242871f52d285f3 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 7ddf4ee66393e07c15e0f80e500aef293b8a3d09..e9d59bddc6eefdbeb8af08b2982b44e2d7a1d5eb 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 16de3f27726f15e93bbb737eea575f0b3e4a72af..fabe911af27c02189c4f08f7dd07896ceb88b8d2 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 2ee317e399b2555e4cc662a17cfc07ffb5fa30ba..23fdbfb9a48e37a24ffd387c5464bdce3710dcf1 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 33ae79db5ec53750a9e11d8c0b38dae079060e99..e20d43426fb49edf736be8f2fe43abb5ff257dc5 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 f77de1bcd851338488b3f7e660653b1d3e413cf1..39ca25212e7f7d2b1be5e0ee603f1b46a428411c 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 c61ea7cbe1df05c6b459329a4841d591100acca4..a054215ccc084560f53513ffd90e5d384ab5986f 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 c001060e9d3d33e0f4b9aba2a14d0497c368fc65..007ac6441c21e9f44578503fe81820c679f8a225 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 340c869fac019d5149a7157081a439cdd13c17be..e01826176ceb48b7c21c98cb924ad2b477a64b07 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 cc4bedd16038d97e5cf1612340a77e928cd95bff..5071dbaa188c23003918eebacd3c82033754c9ff 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 756838e24af2d270ee0715e815eb9e006b3f736d..d567ea2755ec47988160ef9f54e237bbae5f130f 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 b3e2ae3ce544433f90920a840986cf8b78a4d085..1b362745b752c23a86c488cd5a85eee21db4cb70 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 93512d4c82cbc4c7a6ad3ea9d925c0c799d9171a..8f4c352e2a2a0fb0c2c7ea54b64a88452cfbd227 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 193a8b953093c8d6806f6fb6fb2fea8288a431cc..01a4575d9b2be428a09fb0599dc1b17def3c54c8 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 4b77bf33163888cb1e2610b05134b40ade813b95..2d4ba18272a0923dbf76188ba5b1b0e754cd0e29 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 8b87dff0f6194a61cb72f4702d3c8f3d653033a2..a18d3c9e94e8d443ebe0b2d7e9ccf27e7722f652 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 dd74c11d03680cebe447b1ba1ec0558f84986c84..4ffbfdf3a3fbf6ebcdd70b0afc10c6765eb9e9fd 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 255f4132139495c98c60da5d8bf021ce0c3b77e3..71de8ff993d275df4e6204e836642bd8baafed36 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 2d1c6f319e70d03f1447c88abfafeabf4d20b89b..a34d1d246c1b1edbe3a9d09d7732bb61bba4eba9 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 77265aca7e0ffa2d5a6de7c070a174a170d2be38..967e2796006bdf65c02829742e68f91dc11696cb 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 < > >;