diff --git a/alib2data/src/string/LinearString.cpp b/alib2data/src/string/LinearString.cpp
index 69d6079942abbf8615f80e9b69bc619d65ce1123..f7c45d4a1f216ca3921f5e5d5520427571e7545a 100644
--- a/alib2data/src/string/LinearString.cpp
+++ b/alib2data/src/string/LinearString.cpp
@@ -8,7 +8,9 @@
 #include "LinearString.h"
 #include "Epsilon.h"
 #include "../tree/ranked/PrefixRankedTree.h"
+#include "../tree/ranked/PrefixRankedPattern.h"
 #include "../tree/ranked/PrefixRankedBarTree.h"
+#include "../tree/ranked/PrefixRankedBarPattern.h"
 #include "../exception/AlibException.h"
 
 #include <sstream>
@@ -53,7 +55,15 @@ LinearString::LinearString ( const Epsilon & epsilon ) {
 
 LinearString::LinearString ( const tree::PrefixRankedTree & tree ) {
 	for ( const alphabet::RankedSymbol & symbol : tree.getAlphabet ( ) )
-		this->alphabet.insert ( alphabet::Symbol ( std::move ( symbol ) ) );
+		this->alphabet.insert ( alphabet::Symbol ( symbol ) );
+
+	for ( const alphabet::RankedSymbol & symbol : tree.getContent ( ) )
+		this->m_Data.push_back ( alphabet::Symbol ( symbol ) );
+}
+
+LinearString::LinearString ( const tree::PrefixRankedPattern & tree ) {
+	for ( const alphabet::RankedSymbol & symbol : tree.getAlphabet ( ) )
+		this->alphabet.insert ( alphabet::Symbol ( symbol ) );
 
 	for ( const alphabet::RankedSymbol & symbol : tree.getContent ( ) )
 		this->m_Data.push_back ( alphabet::Symbol ( symbol ) );
@@ -61,7 +71,15 @@ LinearString::LinearString ( const tree::PrefixRankedTree & tree ) {
 
 LinearString::LinearString ( const tree::PrefixRankedBarTree & tree ) {
 	for ( const alphabet::RankedSymbol & symbol : tree.getAlphabet ( ) )
-		this->alphabet.insert ( alphabet::Symbol ( std::move ( symbol ) ) );
+		this->alphabet.insert ( alphabet::Symbol ( symbol ) );
+
+	for ( const alphabet::RankedSymbol & symbol : tree.getContent ( ) )
+		this->m_Data.push_back ( alphabet::Symbol ( symbol ) );
+}
+
+LinearString::LinearString ( const tree::PrefixRankedBarPattern & tree ) {
+	for ( const alphabet::RankedSymbol & symbol : tree.getAlphabet ( ) )
+		this->alphabet.insert ( alphabet::Symbol ( symbol ) );
 
 	for ( const alphabet::RankedSymbol & symbol : tree.getContent ( ) )
 		this->m_Data.push_back ( alphabet::Symbol ( symbol ) );
@@ -166,7 +184,9 @@ xmlApi < alib::Object >::ParserRegister < string::LinearString > linearStringPar
 
 auto LinearStringFromEpsilon = castApi::CastRegister < string::LinearString, string::Epsilon > ( );
 auto LinearStringFromPrefixRankedTree = castApi::CastRegister < string::LinearString, tree::PrefixRankedTree > ( );
+auto LinearStringFromPrefixRankedPattern = castApi::CastRegister < string::LinearString, tree::PrefixRankedPattern > ( );
 auto LinearStringFromPrefixRankedBarTree = castApi::CastRegister < string::LinearString, tree::PrefixRankedBarTree > ( );
+auto LinearStringFromPrefixRankedBarPattern = castApi::CastRegister < string::LinearString, tree::PrefixRankedBarPattern > ( );
 auto LinearStringCastBinder = castApi::CastPoolStringBinder < string::LinearString > ( string::LinearString::XML_TAG_NAME );
 
 } /* namespace alib */
diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h
index f8066f15a42a5ba14966d68a4664a392dcba4a43..f290d1b4711fd5cacb15cf345114fb67f109a768 100644
--- a/alib2data/src/string/LinearString.h
+++ b/alib2data/src/string/LinearString.h
@@ -19,7 +19,10 @@
 namespace tree {
 
 class PrefixRankedTree;
+class PrefixRankedPattern;
 class PrefixRankedBarTree;
+class PrefixRankedBarPattern;
+
 }
 
 namespace string {
@@ -36,7 +39,9 @@ class LinearString : public StringBase, public StringAlphabet {
 public:
 	explicit LinearString ( );
 	explicit LinearString ( const tree::PrefixRankedTree & tree );
+	explicit LinearString ( const tree::PrefixRankedPattern & tree );
 	explicit LinearString ( const tree::PrefixRankedBarTree & tree );
+	explicit LinearString ( const tree::PrefixRankedBarPattern & tree );
 	explicit LinearString ( std::set < alphabet::Symbol > alphabet, std::vector < alphabet::Symbol > data );
 	explicit LinearString ( std::vector < alphabet::Symbol > data );
 	explicit LinearString ( const std::string & string );