diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
index d47f287ed41ddef7d3e5d7d0b903dbe5ccdf7d28..c00edfa6d64e180428fc3b990796b60fd83bc19a 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
@@ -243,7 +243,7 @@ auto prefixRankedBarPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >:
 auto prefixRankedBarPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarPattern > ();
 
 auto PrefixRankedBarPatternFromRankedPattern = castApi::CastRegister < tree::PrefixRankedBarPattern, tree::RankedPattern > ( );
-auto PrefixRankedBarPatternFromRankedTree = castApi::CastRegister < tree::PrefixRankedBarPattern, tree::PrefixRankedBarTree > ( );
+auto PrefixRankedBarPatternFromPrefixRankedBarTree = castApi::CastRegister < tree::PrefixRankedBarPattern, tree::PrefixRankedBarTree > ( );
 auto PrefixRankedBarPatternCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::getXmlTagName() );
 
 } /* namespace alib */
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
index 6b4895ff8e4c97110f1e5c5a849d70cf9ef530af..fad5af6a8d9aeb8b904999b5aa7f5b11c9c45fc8 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
@@ -28,14 +28,14 @@
 
 namespace tree {
 
-PrefixRankedPattern::PrefixRankedPattern ( alphabet::RankedSymbol subtreeWildcard, std::set < alphabet::RankedSymbol > alphabet, std::vector < alphabet::RankedSymbol > data ) : std::Components < PrefixRankedPattern, alphabet::RankedSymbol, std::tuple < GeneralAlphabet >, std::tuple < SubtreeWildcard > > ( std::make_tuple ( std::move ( alphabet ) + std::set < alphabet::RankedSymbol > { subtreeWildcard } ), std::make_tuple ( subtreeWildcard ) ) {
+PrefixRankedPattern::PrefixRankedPattern ( alphabet::RankedSymbol subtreeWildcard, std::set < alphabet::RankedSymbol > alphabet, std::vector < alphabet::RankedSymbol > data ) : std::Components < PrefixRankedPattern, alphabet::RankedSymbol, std::tuple < GeneralAlphabet >, std::tuple < SubtreeWildcard > > ( std::make_tuple ( std::move ( alphabet ) ), std::make_tuple ( subtreeWildcard ) ) {
 	setContent ( std::move ( data ) );
 }
 
-PrefixRankedPattern::PrefixRankedPattern ( alphabet::RankedSymbol subtreeWildcard, std::vector < alphabet::RankedSymbol > data ) : PrefixRankedPattern ( std::move ( subtreeWildcard ), std::set < alphabet::RankedSymbol > ( data.begin ( ), data.end ( ) ), std::move ( data ) ) {
+PrefixRankedPattern::PrefixRankedPattern ( alphabet::RankedSymbol subtreeWildcard, std::vector < alphabet::RankedSymbol > data ) : PrefixRankedPattern ( std::move ( subtreeWildcard ), std::set < alphabet::RankedSymbol > ( data.begin ( ), data.end ( ) ) + std::set < alphabet::RankedSymbol > { subtreeWildcard }, std::move ( data ) ) {
 }
 
-PrefixRankedPattern::PrefixRankedPattern ( const PrefixRankedTree & tree ) : PrefixRankedPattern ( alphabet::SubtreeWildcardSymbol::RANKED_SUBTREE_WILDCARD_SYMBOL, tree.getAlphabet ( ), tree.getContent ( ) ) {
+PrefixRankedPattern::PrefixRankedPattern ( const PrefixRankedTree & tree ) : PrefixRankedPattern ( alphabet::SubtreeWildcardSymbol::RANKED_SUBTREE_WILDCARD_SYMBOL, tree.getAlphabet ( ) + std::set < alphabet::RankedSymbol > { alphabet::SubtreeWildcardSymbol::RANKED_SUBTREE_WILDCARD_SYMBOL }, tree.getContent ( ) ) {
 }
 
 PrefixRankedPattern::PrefixRankedPattern ( const RankedPattern & tree ) : PrefixRankedPattern ( tree.getSubtreeWildcard ( ), tree.getAlphabet ( ), toPrefixRanked ( tree.getRoot ( ), tree.getSubtreeWildcard ( ) ) ) {
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
index 9ae77324a9c33c9e9a8608da56915d9d3a242aa9..c5c344b5f171a88591b8bd74946d4e2b01bb869e 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
@@ -167,6 +167,9 @@ template < >
 void tree::RankedNonlinearPattern::Component < tree::RankedNonlinearPattern, alphabet::RankedSymbol, tree::NonlinearAlphabet >::valid ( const alphabet::RankedSymbol & symbol ) const {
 	const tree::RankedNonlinearPattern * pattern = static_cast < const tree::RankedNonlinearPattern * > ( this );
 
+	if( symbol.getRank().getData() != 0 )
+		throw tree::TreeException ( "SubtreeWildcard symbol has nonzero arity" );
+
 	if ( pattern->accessElement < tree::SubtreeWildcard > ( ).get ( ) == symbol )
 		throw tree::TreeException ( "Symbol " + ( std::string ) symbol + "cannot be set as nonlinear variable since it is already subtree wildcard" );
 }
@@ -182,6 +185,9 @@ template < >
 void tree::RankedNonlinearPattern::Element < tree::RankedNonlinearPattern, alphabet::RankedSymbol, tree::SubtreeWildcard >::valid ( const alphabet::RankedSymbol & symbol ) const {
 	const tree::RankedNonlinearPattern * pattern = static_cast < const tree::RankedNonlinearPattern * > ( this );
 
+	if( symbol.getRank().getData() != 0 )
+		throw tree::TreeException ( "SubtreeWildcard symbol has nonzero arity" );
+
 	if ( pattern->accessComponent < tree::NonlinearAlphabet > ( ).get ( ).count ( symbol ) )
 		throw tree::TreeException ( "Symbol " + ( std::string ) symbol + "cannot be set as subtree wildcard since it is already nonlinear variable" );
 }
diff --git a/alib2data/src/tree/ranked/RankedPattern.cpp b/alib2data/src/tree/ranked/RankedPattern.cpp
index 1d7d77d9528467331472f9c7e044f82672845af8..4f6548c76ff888d480bf3f0817c1cb0ada665ef3 100644
--- a/alib2data/src/tree/ranked/RankedPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedPattern.cpp
@@ -154,7 +154,9 @@ bool tree::RankedPattern::Element < tree::RankedPattern, alphabet::RankedSymbol,
 }
 
 template < >
-void tree::RankedPattern::Element < tree::RankedPattern, alphabet::RankedSymbol, tree::SubtreeWildcard >::valid ( const alphabet::RankedSymbol & ) const {
+void tree::RankedPattern::Element < tree::RankedPattern, alphabet::RankedSymbol, tree::SubtreeWildcard >::valid ( const alphabet::RankedSymbol & symbol ) const {
+	if( symbol.getRank().getData() != 0 )
+		throw tree::TreeException ( "SubtreeWildcard symbol has nonzero arity" );
 }
 
 } /* namespace std */