From 97ce0a37f75da6e5f92cc22b4320fc11ca061c4c Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Thu, 14 Jun 2018 22:25:15 +0200
Subject: [PATCH] remove tree features

---
 alib2data/src/tree/TreeFeatures.h             | 50 -------------------
 alib2data/src/tree/ranked/PostfixRankedTree.h | 27 ++++++----
 .../ranked/PrefixRankedBarNonlinearPattern.h  | 35 +++++++------
 .../src/tree/ranked/PrefixRankedBarPattern.h  | 29 ++++++-----
 .../src/tree/ranked/PrefixRankedBarTree.h     | 27 ++++++----
 .../ranked/PrefixRankedNonlinearPattern.h     | 35 +++++++------
 .../src/tree/ranked/PrefixRankedPattern.h     | 29 ++++++-----
 alib2data/src/tree/ranked/PrefixRankedTree.h  | 25 ++++++----
 .../src/tree/ranked/RankedNonlinearPattern.h  | 27 ++++++----
 alib2data/src/tree/ranked/RankedPattern.h     | 27 ++++++----
 alib2data/src/tree/ranked/RankedTree.h        | 28 ++++++-----
 alib2data/src/tree/unranked/PrefixBarTree.h   | 30 ++++++-----
 .../tree/unranked/UnrankedNonlinearPattern.h  | 28 ++++++-----
 alib2data/src/tree/unranked/UnrankedPattern.h | 28 ++++++-----
 alib2data/src/tree/unranked/UnrankedTree.h    | 28 ++++++-----
 15 files changed, 234 insertions(+), 219 deletions(-)
 delete mode 100644 alib2data/src/tree/TreeFeatures.h

diff --git a/alib2data/src/tree/TreeFeatures.h b/alib2data/src/tree/TreeFeatures.h
deleted file mode 100644
index 28cbc533ea..0000000000
--- a/alib2data/src/tree/TreeFeatures.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * TreeFeatures.h
- *
- *  Created on: Nov 16, 2014
- *      Author: Stepan Plachy
- */
-
-#ifndef TREE_FEATURES_H_
-#define TREE_FEATURES_H_
-
-#include <common/DefaultSymbolType.h>
-#include <common/DefaultRankType.h>
-
-namespace tree {
-
-class Tree;
-class TreeBase;
-
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class RankedTree;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class RankedPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class RankedNonlinearPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedTree;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedBarTree;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedNonlinearPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedBarPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedBarNonlinearPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PostfixRankedTree;
-template < class SymbolType = DefaultSymbolType >
-class UnrankedTree;
-template < class SymbolType = DefaultSymbolType >
-class UnrankedPattern;
-template < class SymbolType = DefaultSymbolType >
-class UnrankedNonlinearPattern;
-template < class SymbolType = DefaultSymbolType >
-class PrefixBarTree;
-
-} /* namespace tree */
-
-#endif /* TREE_FEATURES_H_ */
diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.h b/alib2data/src/tree/ranked/PostfixRankedTree.h
index 1dc8e04963..5940556bbd 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.h
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.h
@@ -24,6 +24,16 @@
 #ifndef POSTFIX_RANKED_TREE_H_
 #define POSTFIX_RANKED_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PostfixRankedTree;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,16 +45,17 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "RankedTree.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -206,12 +217,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "RankedTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PostfixRankedTree < SymbolType, RankType >::PostfixRankedTree ( ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PostfixRankedTree, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, GeneralAlphabet > ( std::move ( alphabet ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
index fbe4ea5311..51d97524a8 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_BAR_NONLINEAR_PATTERN_H_
 #define PREFIX_RANKED_BAR_NONLINEAR_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedBarNonlinearPattern;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,20 +45,25 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <alphabet/BarSymbol.h>
 #include <alphabet/VariablesBarSymbol.h>
 #include <alphabet/WildcardSymbol.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "PrefixRankedBarTree.h"
+#include "PrefixRankedBarPattern.h"
+#include "RankedTree.h"
+#include "RankedPattern.h"
+#include "RankedNonlinearPattern.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -374,16 +389,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "PrefixRankedBarTree.h"
-#include "PrefixRankedBarPattern.h"
-#include "RankedTree.h"
-#include "RankedPattern.h"
-#include "RankedNonlinearPattern.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedBarNonlinearPattern < SymbolType, RankType >::PrefixRankedBarNonlinearPattern ( ext::set < common::ranked_symbol < SymbolType, RankType > > bars, common::ranked_symbol < SymbolType, RankType > variablesBar, common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedBarNonlinearPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, std::tuple < GeneralAlphabet, NonlinearAlphabet, BarSymbols >, common::ranked_symbol < SymbolType, RankType >, component::Value, std::tuple < SubtreeWildcard, VariablesBarSymbol > > ( std::move ( alphabet ), std::move ( nonlinearVariables ), std::move ( bars ), std::move ( subtreeWildcard ), std::move ( variablesBar ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
index 342800c38c..2290109be6 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_BAR_PATTERN_H_
 #define PREFIX_RANKED_BAR_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedBarPattern;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,20 +45,22 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <alphabet/BarSymbol.h>
 #include <alphabet/VariablesBarSymbol.h>
 #include <alphabet/WildcardSymbol.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "RankedPattern.h"
+#include "PrefixRankedBarTree.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -303,13 +315,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "RankedPattern.h"
-#include "PrefixRankedBarTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedBarPattern < SymbolType, RankType >::PrefixRankedBarPattern ( ext::set < common::ranked_symbol < SymbolType, RankType > > bars, common::ranked_symbol < SymbolType, RankType > variablesBar, common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedBarPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, std::tuple < GeneralAlphabet, BarSymbols >, common::ranked_symbol < SymbolType, RankType >, component::Value, std::tuple < SubtreeWildcard, VariablesBarSymbol > > ( std::move ( alphabet ), std::move ( bars ), std::move ( subtreeWildcard ), std::move ( variablesBar ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
index 8273f36475..e9b3080caa 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_BAR_TREE_H_
 #define PREFIX_RANKED_BAR_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedBarTree;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,18 +45,19 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <alphabet/BarSymbol.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "RankedTree.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -249,12 +260,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "RankedTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedBarTree < SymbolType, RankType >::PrefixRankedBarTree ( ext::set < common::ranked_symbol < SymbolType, RankType > > bars, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedBarTree, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, std::tuple < GeneralAlphabet, BarSymbols > > ( std::move ( alphabet ), std::move ( bars ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
index c9fc012a9a..762b8b5302 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_NONLINEAR_PATTERN_H_
 #define PREFIX_RANKED_NONLINEAR_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedNonlinearPattern;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,17 +45,22 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <alphabet/WildcardSymbol.h>
 
 #include <core/normalize.hpp>
 
 #include <string/LinearString.h>
+#include <tree/common/TreeNormalize.h>
+
+#include "PrefixRankedTree.h"
+#include "PrefixRankedPattern.h"
+#include "RankedTree.h"
+#include "RankedPattern.h"
+#include "RankedNonlinearPattern.h"
 
 namespace tree {
 
@@ -288,16 +303,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "PrefixRankedTree.h"
-#include "PrefixRankedPattern.h"
-#include "RankedTree.h"
-#include "RankedPattern.h"
-#include "RankedNonlinearPattern.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedNonlinearPattern < SymbolType, RankType >::PrefixRankedNonlinearPattern ( common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedNonlinearPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, std::tuple < GeneralAlphabet, NonlinearAlphabet >, common::ranked_symbol < SymbolType, RankType >, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( nonlinearVariables ), std::move ( subtreeWildcard ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h
index 4336b3c93a..dac0854400 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_PATTERN_H_
 #define PREFIX_RANKED_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedPattern;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,18 +45,20 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <alphabet/WildcardSymbol.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "RankedPattern.h"
+#include "PrefixRankedTree.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -237,13 +249,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "RankedPattern.h"
-#include "PrefixRankedTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedPattern < SymbolType, RankType >::PrefixRankedPattern ( common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, GeneralAlphabet, common::ranked_symbol < SymbolType, RankType >, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( subtreeWildcard ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h
index a53b660469..be4c8fdcf2 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_TREE_H_
 #define PREFIX_RANKED_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedTree;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,15 +45,16 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "RankedTree.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -212,12 +223,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "RankedTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedTree < SymbolType, RankType >::PrefixRankedTree ( ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedTree, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, GeneralAlphabet > ( std::move ( alphabet ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
index 85e7b80cbf..8280c0ae2b 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -24,6 +24,16 @@
 #ifndef RANKED_NONLINEAR_PATTERN_H_
 #define RANKED_NONLINEAR_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class RankedNonlinearPattern;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -35,13 +45,14 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include "../unranked/UnrankedNonlinearPattern.h"
 
 namespace tree {
 
@@ -260,12 +271,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../unranked/UnrankedNonlinearPattern.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 RankedNonlinearPattern < SymbolType, RankType >::RankedNonlinearPattern ( common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::tree < common::ranked_symbol < SymbolType, RankType > > pattern ) : core::Components < RankedNonlinearPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, std::tuple < GeneralAlphabet, NonlinearAlphabet >, common::ranked_symbol < SymbolType, RankType >, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( nonlinearVariables ), std::move ( subtreeWildcard ) ), m_content ( std::move ( pattern ) ) {
 	checkAlphabet ( m_content );
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index 20cf26a314..46d6c27d29 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -24,6 +24,16 @@
 #ifndef RANKED_PATTERN_H_
 #define RANKED_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class RankedPattern;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -35,13 +45,14 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include "../unranked/UnrankedPattern.h"
 
 namespace tree {
 
@@ -230,12 +241,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../unranked/UnrankedPattern.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 RankedPattern < SymbolType, RankType >::RankedPattern ( common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::tree < common::ranked_symbol < SymbolType, RankType > > pattern ) : core::Components < RankedPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, GeneralAlphabet, common::ranked_symbol < SymbolType, RankType >, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( subtreeWildcard ) ), m_content ( std::move ( pattern ) ) {
 	checkAlphabet ( m_content );
diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h
index f9a09bc1c3..3e211ba48f 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -24,6 +24,16 @@
 #ifndef RANKED_TREE_H_
 #define RANKED_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class RankedTree;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -35,14 +45,15 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeBase.h"
-#include "../TreeException.h"
-#include "../common/TreeAuxiliary.h"
+#include <tree/TreeBase.h>
+#include <tree/TreeException.h>
+#include <tree/common/TreeAuxiliary.h>
 
+#include <core/normalize.hpp>
 #include <tree/common/TreeNormalize.h>
 
-#include <core/normalize.hpp>
+#include "../unranked/UnrankedTree.h"
+#include "PostfixRankedTree.h"
 
 namespace tree {
 
@@ -216,13 +227,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../unranked/UnrankedTree.h"
-#include "PostfixRankedTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 RankedTree < SymbolType, RankType >::RankedTree ( ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::tree < common::ranked_symbol < SymbolType, RankType > > tree ) : core::Components < RankedTree, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, GeneralAlphabet > ( std::move ( alphabet ) ), m_content ( std::move ( tree ) ) {
 	checkAlphabet ( m_content );
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h
index f1c803cb02..38ed95cf4f 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -24,6 +24,15 @@
 #ifndef PREFIX_BAR_TREE_H_
 #define PREFIX_BAR_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType >
+class PrefixBarTree;
+
+} /* namespace tree */
+
 #include <sstream>
 #include <alib/algorithm>
 #include <alib/deque>
@@ -34,15 +43,16 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../TreeFeatures.h"
-#include "../TreeBase.h"
-#include "../TreeException.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
-
 #include <alphabet/BarSymbol.h>
 
+#include <tree/TreeBase.h>
+#include <tree/TreeException.h>
+#include <tree/common/TreeAuxiliary.h>
+
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include "UnrankedTree.h"
 
 #include <string/LinearString.h>
 
@@ -58,7 +68,7 @@ class BarSymbol;
  * The bars represent end mark of all subtrees in the notation.
  *
  * \details
- * T = (A, B \in A, C),
+ * T = ( A, B \in A, C ),
  * A (Alphabet) = finite set of unranked symbols,
  * B (Bar) = unranked symbol representing bar,
  * C (Content) = linear representation of the tree content
@@ -238,12 +248,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "UnrankedTree.h"
-
-namespace tree {
-
 template < class SymbolType >
 PrefixBarTree < SymbolType >::PrefixBarTree ( SymbolType bar, ext::set < SymbolType > alphabet, ext::vector < SymbolType > data ) : core::Components < PrefixBarTree, ext::set < SymbolType >, component::Set, GeneralAlphabet, SymbolType, component::Value, BarSymbol > ( std::move ( alphabet ), std::move ( bar ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
index 7321f6db9b..26604dc827 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -24,6 +24,15 @@
 #ifndef UNRANKED_NONLINEAR_PATTERN_H_
 #define UNRANKED_NONLINEAR_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType >
+class UnrankedNonlinearPattern;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -34,13 +43,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeBase.h>
+#include <tree/TreeException.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include <tree/ranked/RankedNonlinearPattern.h>
 
 namespace tree {
 
@@ -53,7 +63,7 @@ class NonlinearAlphabet;
  * Nonlinear tree pattern represented in its natural representation. The representation is so called unranked, therefore it consists of unranked symbols. Additionally the pattern contains a special wildcard symbol representing any subtree and nonlinear variables each to represent same subtree (in the particular occurrence in a tree).
  *
  * \details
- * T = (A, C, W \in ( A \minus B ), V \in ( A \minus B) ),
+ * T = ( A, C, W \in A, V \in A ),
  * A (Alphabet) = finite set of symbols,
  * C (Content) = pattern in its natural representation
  * W (Wildcard) = special symbol representing any subtree
@@ -250,12 +260,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../ranked/RankedNonlinearPattern.h"
-
-namespace tree {
-
 template < class SymbolType >
 UnrankedNonlinearPattern < SymbolType >::UnrankedNonlinearPattern ( SymbolType subtreeWildcard, ext::set < SymbolType > nonlinearVariables, ext::set < SymbolType > alphabet, ext::tree < SymbolType > pattern ) : core::Components < UnrankedNonlinearPattern, ext::set < SymbolType >, component::Set, std::tuple < GeneralAlphabet, NonlinearAlphabet >, SymbolType, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( nonlinearVariables ), std::move ( subtreeWildcard ) ), m_content ( std::move ( pattern ) ) {
 	checkAlphabet ( m_content );
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h
index 1fd8290864..cf2995cb9f 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -24,6 +24,15 @@
 #ifndef UNRANKED_PATTERN_H_
 #define UNRANKED_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType >
+class UnrankedPattern;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -34,13 +43,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeBase.h>
+#include <tree/TreeException.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include "../ranked/RankedPattern.h"
 
 namespace tree {
 
@@ -52,7 +62,7 @@ class SubtreeWildcard;
  * Tree pattern represented in its natural representation. The representation is so called unranked, therefore it consists of unranked symbols. Additionally the pattern contains a special wildcard symbol representing any subtree and nonlinear variables each to represent same subtree (in the particular occurrence in a tree).
  *
  * \details
- * T = (A, C, W \in ( A \minus B ), V \in ( A \minus B) ),
+ * T = ( A, C, W \in A, V \in A ),
  * A (Alphabet) = finite set of symbols,
  * C (Content) = pattern in its natural representation
  * W (Wildcard) = special symbol representing any subtree
@@ -221,12 +231,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../ranked/RankedPattern.h"
-
-namespace tree {
-
 template < class SymbolType >
 UnrankedPattern < SymbolType >::UnrankedPattern ( SymbolType subtreeWildcard, ext::set < SymbolType > alphabet, ext::tree < SymbolType > pattern ) : core::Components < UnrankedPattern, ext::set < SymbolType >, component::Set, GeneralAlphabet, SymbolType, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( subtreeWildcard ) ), m_content ( std::move ( pattern ) ) {
 	checkAlphabet ( m_content );
diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h
index 35c77d48d6..86c3c9b6c9 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -24,6 +24,15 @@
 #ifndef UNRANKED_TREE_H_
 #define UNRANKED_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType >
+class UnrankedTree;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -34,13 +43,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../TreeFeatures.h"
-#include "../TreeBase.h"
-#include "../TreeException.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeBase.h>
+#include <tree/TreeException.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include "../ranked/RankedTree.h"
 
 namespace tree {
 
@@ -51,7 +61,7 @@ class GeneralAlphabet;
  * Tree pattern represented in its natural representation. The representation is so called unranked, therefore it consists of unranked symbols. Additionally the pattern contains a special wildcard symbol representing any subtree and nonlinear variables each to represent same subtree (in the particular occurrence in a tree).
  *
  * \details
- * T = (A, C, W \in ( A \minus B ) ),
+ * T = ( A, C, W \in A ),
  * A (Alphabet) = finite set of symbols,
  * C (Content) = pattern in its natural representation
  * W (Wildcard) = special symbol representing any subtree
@@ -199,12 +209,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../ranked/RankedTree.h"
-
-namespace tree {
-
 template < class SymbolType >
 UnrankedTree < SymbolType >::UnrankedTree ( ext::set < SymbolType > alphabet, ext::tree < SymbolType > tree ) : core::Components < UnrankedTree, ext::set < SymbolType >, component::Set, GeneralAlphabet > ( std::move ( alphabet ) ), m_content ( std::move ( tree ) ) {
 	checkAlphabet ( m_content );
-- 
GitLab