diff --git a/alib2data/src/automaton/xml/FSM/CompactNFA.h b/alib2data/src/automaton/xml/FSM/CompactNFA.h
index c99bf875393db42f95113f8152c054fdb9711f60..f127e5cce8593a9b6c58cb177ba7ddba8294cf53 100644
--- a/alib2data/src/automaton/xml/FSM/CompactNFA.h
+++ b/alib2data/src/automaton/xml/FSM/CompactNFA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::CompactNFA < SymbolType, StateType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/FSM/DFA.h b/alib2data/src/automaton/xml/FSM/DFA.h
index 906a4d7df999421a3308674cc25392744ea3240f..aad1a465bdbe3b3d31663ba68154d7c6a6d02999 100644
--- a/alib2data/src/automaton/xml/FSM/DFA.h
+++ b/alib2data/src/automaton/xml/FSM/DFA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::DFA < SymbolType, StateType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/FSM/EpsilonNFA.h b/alib2data/src/automaton/xml/FSM/EpsilonNFA.h
index dac7d62d03b02ffda2b4401e3ee00e651f51ffeb..4bd95eb652843b8f23d7e342aeec038e31697bf2 100644
--- a/alib2data/src/automaton/xml/FSM/EpsilonNFA.h
+++ b/alib2data/src/automaton/xml/FSM/EpsilonNFA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/FSM/ExtendedNFA.h b/alib2data/src/automaton/xml/FSM/ExtendedNFA.h
index 9d7c6ae98890b08114f7b0d5e513414600f6db34..6767d4dba8bab770b1deff4761f05dbb7350e78c 100644
--- a/alib2data/src/automaton/xml/FSM/ExtendedNFA.h
+++ b/alib2data/src/automaton/xml/FSM/ExtendedNFA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::ExtendedNFA < SymbolType, StateType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/xml/FSM/MultiInitialStateNFA.h
index c464b9ef9faebb82eefbf0b101b770079ea880a2..854860e4c90014f7e6a187ea5bd5c4e4ef38589f 100644
--- a/alib2data/src/automaton/xml/FSM/MultiInitialStateNFA.h
+++ b/alib2data/src/automaton/xml/FSM/MultiInitialStateNFA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::MultiInitialStateNFA < SymbolType, StateType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/FSM/NFA.h b/alib2data/src/automaton/xml/FSM/NFA.h
index 53408aae1e4f516b03c9e6090e421034b149c8d6..344944c21fff69f38e70b83624eb8bb644f7321c 100644
--- a/alib2data/src/automaton/xml/FSM/NFA.h
+++ b/alib2data/src/automaton/xml/FSM/NFA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::NFA < SymbolType, StateType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/PDA/DPDA.h b/alib2data/src/automaton/xml/PDA/DPDA.h
index 925f19cb35a3c3fc3ce78d3ac5baf84797cde1ff..cf32f9bb1418351bbabd968672581e35249bd9b9 100644
--- a/alib2data/src/automaton/xml/PDA/DPDA.h
+++ b/alib2data/src/automaton/xml/PDA/DPDA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSym
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/xml/PDA/InputDrivenDPDA.h
index 0c86ce798daa486447fec77eb7c9a31bd5741be2..88b2f2511f0e490c10a67a8dc220b24cb00909c9 100644
--- a/alib2data/src/automaton/xml/PDA/InputDrivenDPDA.h
+++ b/alib2data/src/automaton/xml/PDA/InputDrivenDPDA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbo
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/xml/PDA/InputDrivenNPDA.h
index 61512f78fc6a9b6de6ff8c5eb44d51502e4a3695..d7b30ed5b997104db6404a8853eabd7e67a1b6ca 100644
--- a/alib2data/src/automaton/xml/PDA/InputDrivenNPDA.h
+++ b/alib2data/src/automaton/xml/PDA/InputDrivenNPDA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbo
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/PDA/NPDA.h b/alib2data/src/automaton/xml/PDA/NPDA.h
index bd331edc9c62417f9dbed9c804dfe61d2c008f17..1998c98571408b985dd45e531d5a9029fb41bf1b 100644
--- a/alib2data/src/automaton/xml/PDA/NPDA.h
+++ b/alib2data/src/automaton/xml/PDA/NPDA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSym
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/PDA/NPDTA.h b/alib2data/src/automaton/xml/PDA/NPDTA.h
index bd1bca13b95d0e79fb3b0876ddf750e9065deb37..2e0ea6047893e6b034416280dd205626d238ec23 100644
--- a/alib2data/src/automaton/xml/PDA/NPDTA.h
+++ b/alib2data/src/automaton/xml/PDA/NPDTA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonTyp
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicDPDA.h
index d05dc25fbdc8429aba10b9d1b137576eef44ce00..b96793fe9b0d7986c3cb58d8822e1ba3fb3b6f9e 100644
--- a/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicDPDA.h
+++ b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicDPDA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, Ep
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicNPDA.h
index 9e80f3317d0725a64fdf69404c43f88a0cdf0079..49433a50c76f332788d5298ec0e205db5d88c698 100644
--- a/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicNPDA.h
+++ b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicNPDA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, Ep
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/PDA/SinglePopDPDA.h b/alib2data/src/automaton/xml/PDA/SinglePopDPDA.h
index 328476b1580424ace22e7338bce7328b9698b87a..e3d7827ffdeca2f44e401b97000c9799118e4750 100644
--- a/alib2data/src/automaton/xml/PDA/SinglePopDPDA.h
+++ b/alib2data/src/automaton/xml/PDA/SinglePopDPDA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::SinglePopDPDA < InputSymbolType, EpsilonType, Pushdow
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/PDA/SinglePopNPDA.h b/alib2data/src/automaton/xml/PDA/SinglePopNPDA.h
index f9d924986ae96b4c867a2f77016faea6507b56bc..eda110c5d6956a47b99f805e954b490e3fc27f04 100644
--- a/alib2data/src/automaton/xml/PDA/SinglePopNPDA.h
+++ b/alib2data/src/automaton/xml/PDA/SinglePopNPDA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::SinglePopNPDA < InputSymbolType, EpsilonType, Pushdow
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/xml/PDA/VisiblyPushdownDPDA.h
index 84f4ae5b4828de3311646f7a68041bbdd78b3f36..de6bf9ae80439892a4464e87a8d4767d9d047a82 100644
--- a/alib2data/src/automaton/xml/PDA/VisiblyPushdownDPDA.h
+++ b/alib2data/src/automaton/xml/PDA/VisiblyPushdownDPDA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreS
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/xml/PDA/VisiblyPushdownNPDA.h
index 763bd142c66cfda350163c72123af8b0c859f26a..1b0fcc74684c534fcbbb1f0d167b3de70375ac00 100644
--- a/alib2data/src/automaton/xml/PDA/VisiblyPushdownNPDA.h
+++ b/alib2data/src/automaton/xml/PDA/VisiblyPushdownNPDA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreS
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/TA/DFTA.h b/alib2data/src/automaton/xml/TA/DFTA.h
index 46e60daa8b8f2484618e6b3dbce14f648ffaaad9..b754c4620d639a129d34f0f91b6ad5e9b0fba1c6 100644
--- a/alib2data/src/automaton/xml/TA/DFTA.h
+++ b/alib2data/src/automaton/xml/TA/DFTA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::DFTA < SymbolType, RankType, StateType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/TA/NFTA.h b/alib2data/src/automaton/xml/TA/NFTA.h
index 4166d3aa05bfcacfd0544c98a687e7b7c784db6e..4310afa6dcc8012d013e2f4e3787dca8c0e78f7b 100644
--- a/alib2data/src/automaton/xml/TA/NFTA.h
+++ b/alib2data/src/automaton/xml/TA/NFTA.h
@@ -46,6 +46,17 @@ struct xmlApi < automaton::NFTA < SymbolType, RankType, StateType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/automaton/xml/TM/OneTapeDTM.h b/alib2data/src/automaton/xml/TM/OneTapeDTM.h
index c8fcff800ccdc0e0b5d48fccdd77dbd3e7921124..a1be03c6cfb3ee54a252b17f5a6c7384902463e1 100644
--- a/alib2data/src/automaton/xml/TM/OneTapeDTM.h
+++ b/alib2data/src/automaton/xml/TM/OneTapeDTM.h
@@ -47,6 +47,17 @@ struct xmlApi < automaton::OneTapeDTM < SymbolType, StateType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/ContextFree/CFG.h b/alib2data/src/grammar/xml/ContextFree/CFG.h
index 3f301b5da4ffd92eeee8995c193183aa9195aa98..e19621dfca806370196004ba9a261f0eff338b9e 100644
--- a/alib2data/src/grammar/xml/ContextFree/CFG.h
+++ b/alib2data/src/grammar/xml/ContextFree/CFG.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::CFG < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/ContextFree/CNF.h b/alib2data/src/grammar/xml/ContextFree/CNF.h
index f1258e0a696f1e24e84bc06994aae3b7492af612..150648aff2a6f5153632e1972c5ea29d8707c44f 100644
--- a/alib2data/src/grammar/xml/ContextFree/CNF.h
+++ b/alib2data/src/grammar/xml/ContextFree/CNF.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::CNF < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/xml/ContextFree/EpsilonFreeCFG.h
index 0d1aa9df0adc07300cec147f1ca7afda8c2b9209..e7b18aa3abd0c0dd0492030e5e0d9e7df57e1496 100644
--- a/alib2data/src/grammar/xml/ContextFree/EpsilonFreeCFG.h
+++ b/alib2data/src/grammar/xml/ContextFree/EpsilonFreeCFG.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::EpsilonFreeCFG < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/ContextFree/GNF.h b/alib2data/src/grammar/xml/ContextFree/GNF.h
index 197c3eeb2e50945633f2b9f0e98de52e8b980534..89016d7617dbdd87636a34ff5840b645ea608a91 100644
--- a/alib2data/src/grammar/xml/ContextFree/GNF.h
+++ b/alib2data/src/grammar/xml/ContextFree/GNF.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::GNF < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/ContextFree/LG.h b/alib2data/src/grammar/xml/ContextFree/LG.h
index 915f99555fc99cdcfa3da2cb529afb39ef91ad1e..18da53d7a5d9bf93f3fe4c9bed319ae16ec9e462 100644
--- a/alib2data/src/grammar/xml/ContextFree/LG.h
+++ b/alib2data/src/grammar/xml/ContextFree/LG.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::LG < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/ContextSensitive/CSG.h b/alib2data/src/grammar/xml/ContextSensitive/CSG.h
index 97b3ed8c80d705f7c067737532424cb010f608bb..d97918046c0a0b6c67574f33dcca4d78e1c63cf1 100644
--- a/alib2data/src/grammar/xml/ContextSensitive/CSG.h
+++ b/alib2data/src/grammar/xml/ContextSensitive/CSG.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::CSG < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/ContextSensitive/NonContractingGrammar.h b/alib2data/src/grammar/xml/ContextSensitive/NonContractingGrammar.h
index 56a10f5568247b43f13b2a368ea429a97e37bee9..bad5fc62b194bfcad62a1dbb6cbd341fe8aa6481 100644
--- a/alib2data/src/grammar/xml/ContextSensitive/NonContractingGrammar.h
+++ b/alib2data/src/grammar/xml/ContextSensitive/NonContractingGrammar.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::NonContractingGrammar < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/Regular/LeftLG.h b/alib2data/src/grammar/xml/Regular/LeftLG.h
index 3260bc493ba7b7f5f392d1e5652a3994e96e682e..a55316387d41291888252cd2f88e39bc25af0d86 100644
--- a/alib2data/src/grammar/xml/Regular/LeftLG.h
+++ b/alib2data/src/grammar/xml/Regular/LeftLG.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::LeftLG < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/Regular/LeftRG.h b/alib2data/src/grammar/xml/Regular/LeftRG.h
index 3a59221bd99827068caeb9e774e777730384278a..fed328d368dbf000f8e5a1ef3d58ffc1fe6235cc 100644
--- a/alib2data/src/grammar/xml/Regular/LeftRG.h
+++ b/alib2data/src/grammar/xml/Regular/LeftRG.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::LeftRG < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/Regular/RightLG.h b/alib2data/src/grammar/xml/Regular/RightLG.h
index cff23afa3a4f8a97a2c97319092d8a30d8155511..163b34f321c5c5f784da9bc7e3b143f3303338f7 100644
--- a/alib2data/src/grammar/xml/Regular/RightLG.h
+++ b/alib2data/src/grammar/xml/Regular/RightLG.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::RightLG < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/Regular/RightRG.h b/alib2data/src/grammar/xml/Regular/RightRG.h
index f611668947ca429ee94aad34cc5ea9aac1b1ae70..7217a73beb297789dab2242b321c2da6cc9b0ec4 100644
--- a/alib2data/src/grammar/xml/Regular/RightRG.h
+++ b/alib2data/src/grammar/xml/Regular/RightRG.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::RightRG < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/Unrestricted/ContextPreservingUnrestrictedGrammar.h b/alib2data/src/grammar/xml/Unrestricted/ContextPreservingUnrestrictedGrammar.h
index ff008afa25dfa3712dcfa199ffddcb0b3d5e9f49..1084dcd2ae70840ea5d6d59dea08cf318e11d647 100644
--- a/alib2data/src/grammar/xml/Unrestricted/ContextPreservingUnrestrictedGrammar.h
+++ b/alib2data/src/grammar/xml/Unrestricted/ContextPreservingUnrestrictedGrammar.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::ContextPreservingUnrestrictedGrammar < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/grammar/xml/Unrestricted/UnrestrictedGrammar.h b/alib2data/src/grammar/xml/Unrestricted/UnrestrictedGrammar.h
index 76a293421fc3d6f3f856d1b5c5ae986c2f258bb6..4c483f0b68372f5ffded8cdc2a7e14aff299e07f 100644
--- a/alib2data/src/grammar/xml/Unrestricted/UnrestrictedGrammar.h
+++ b/alib2data/src/grammar/xml/Unrestricted/UnrestrictedGrammar.h
@@ -45,6 +45,17 @@ struct xmlApi < grammar::UnrestrictedGrammar < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/ranked/PostfixRankedTree.h b/alib2data/src/tree/xml/ranked/PostfixRankedTree.h
index a3cded10b4a0ddb90e56668bad96dda0a0710dc5..5dc71bf721aa49fce7b0c9e79ea6e0ad17dcd31b 100644
--- a/alib2data/src/tree/xml/ranked/PostfixRankedTree.h
+++ b/alib2data/src/tree/xml/ranked/PostfixRankedTree.h
@@ -47,6 +47,17 @@ struct xmlApi < tree::PostfixRankedTree < SymbolType, RankType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.h
index bd5bcdf5c162e578b1c9a6b3be7bf2f36c13ff19..368cff33075fddc2ae8eaeb356afb7aabbc9b64d 100644
--- a/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.h
@@ -47,6 +47,17 @@ struct xmlApi < tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > >
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.h
index 5fd5ccaae63123dcbfb198080a5fb791aa5b17c7..e3d70569e287267c790609f4b3c68d50d34b9e48 100644
--- a/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.h
@@ -47,6 +47,17 @@ struct xmlApi < tree::PrefixRankedBarPattern < SymbolType, RankType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.h
index 1a0372983b13bc91c337aef19af9eec79bf9d48b..58e5b0e883af2505f6c71edc8f2d723f9db5ea56 100644
--- a/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.h
@@ -47,6 +47,17 @@ struct xmlApi < tree::PrefixRankedBarTree < SymbolType, RankType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.h
index 8a311ed974ce181c4a779c4d74b2b5b392245360..2981af0bb4cd6af0911aae1f1e10c4170acfde3e 100644
--- a/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.h
@@ -47,6 +47,17 @@ struct xmlApi < tree::PrefixRankedNonlinearPattern < SymbolType, RankType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedPattern.h
index 8e0489c839fae8263ffaa6604ea0231603dcbc48..20914cd151e1235269d1de732e14918264df5c2e 100644
--- a/alib2data/src/tree/xml/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedPattern.h
@@ -47,6 +47,17 @@ struct xmlApi < tree::PrefixRankedPattern < SymbolType, RankType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedTree.h b/alib2data/src/tree/xml/ranked/PrefixRankedTree.h
index 1f16cd053c1b14850a3564ca730fa7074aba0469..398662bee483502a25d2b22a3870f56371b4e277 100644
--- a/alib2data/src/tree/xml/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/xml/ranked/PrefixRankedTree.h
@@ -47,6 +47,17 @@ struct xmlApi < tree::PrefixRankedTree < SymbolType, RankType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.h
index 970049092d8c118db54129a54edf888f2342af86..80778c4b55af160c2c450d7d6cf375821195748f 100644
--- a/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.h
@@ -47,6 +47,17 @@ struct xmlApi < tree::RankedNonlinearPattern < SymbolType, RankType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/ranked/RankedPattern.h b/alib2data/src/tree/xml/ranked/RankedPattern.h
index 2476fb6e298539cbd99778f0f3b7e367fddcb86f..7eb7795871373e9fdcfb7dd6bf8371db03f0620d 100644
--- a/alib2data/src/tree/xml/ranked/RankedPattern.h
+++ b/alib2data/src/tree/xml/ranked/RankedPattern.h
@@ -47,6 +47,17 @@ struct xmlApi < tree::RankedPattern < SymbolType, RankType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/ranked/RankedTree.h b/alib2data/src/tree/xml/ranked/RankedTree.h
index f99889340f1584f448ac4157149dbad6c1f5de07..e42fbb975f63059d847e7d83a0f091d697eb2476 100644
--- a/alib2data/src/tree/xml/ranked/RankedTree.h
+++ b/alib2data/src/tree/xml/ranked/RankedTree.h
@@ -47,6 +47,13 @@ struct xmlApi < tree::RankedTree < SymbolType, RankType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
 	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
 		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
 	}
diff --git a/alib2data/src/tree/xml/unranked/PrefixBarTree.h b/alib2data/src/tree/xml/unranked/PrefixBarTree.h
index 89373bd9676fcbeca747afc50df4a5e54d316aa9..4e1c0f04e126af1cbc46868952bd9c5e7ce0d104 100644
--- a/alib2data/src/tree/xml/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/xml/unranked/PrefixBarTree.h
@@ -46,6 +46,17 @@ struct xmlApi < tree::PrefixBarTree < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.h
index d33c9ea887049e47f5c9df0626c470b057771f3a..4ee23dd98470cd83c061b49a43ff23271877062e 100644
--- a/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.h
@@ -46,6 +46,17 @@ struct xmlApi < tree::UnrankedNonlinearPattern < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/unranked/UnrankedPattern.h b/alib2data/src/tree/xml/unranked/UnrankedPattern.h
index 6ed06e27448e9aaf3b12b9bd1197c0d2f35adc9a..bfc7dbd1bd324d2c9fe6a86c55663951e319e72a 100644
--- a/alib2data/src/tree/xml/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/xml/unranked/UnrankedPattern.h
@@ -46,6 +46,17 @@ struct xmlApi < tree::UnrankedPattern < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
+	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
+		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+	}
+
 	/**
 	 * Parsing from a sequence of xml tokens helper.
 	 *
diff --git a/alib2data/src/tree/xml/unranked/UnrankedTree.h b/alib2data/src/tree/xml/unranked/UnrankedTree.h
index de52ad7738187fc18e01c46abfbf475f4bf19f47..1e74f3353623d3a30e1ee717b9d5619f717b7dae 100644
--- a/alib2data/src/tree/xml/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/xml/unranked/UnrankedTree.h
@@ -46,6 +46,13 @@ struct xmlApi < tree::UnrankedTree < SymbolType > > {
 		return xmlTagName;
 	}
 
+	/**
+	 * \brief Tests whether the token stream starts with this type
+	 *
+	 * \params input the iterator to sequence of xml tokens to test
+	 *
+	 * \returns true if the token stream iterator points to opening tag named with xml tag name of this type, false otherwise.
+	 */
 	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
 		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
 	}