Index: branches/2886_SymRegGrammarEnumeration/Test/GrammarEnumerationTest.cs
===================================================================
--- branches/2886_SymRegGrammarEnumeration/Test/GrammarEnumerationTest.cs	(revision 15974)
+++ branches/2886_SymRegGrammarEnumeration/Test/GrammarEnumerationTest.cs	(revision 16026)
@@ -44,5 +44,4 @@
     }
 
-
     private void EvaluateGrammarEnumeration() {
       // Evaluate results
@@ -55,5 +54,4 @@
       Assert.AreEqual(1.0, ((IRegressionSolution)alg.Results["Best solution (Training)"].Value).TestRSquared, eps, "Test quality too low!");
     }
-
 
     [TestMethod]
@@ -72,5 +70,5 @@
       TerminalSymbol addSymbol = alg.Grammar.Addition;
 
-      SymbolString targetSolution = new SymbolString(new[] {
+      SymbolList targetSolution = new SymbolList(new[] {
         constSymbol, varSymbol, varSymbol, varSymbol, mulSymbol, mulSymbol, mulSymbol,
         constSymbol, varSymbol, varSymbol, mulSymbol, mulSymbol, addSymbol,
@@ -132,5 +130,5 @@
 
       // c * sin(c x + c) + c * sin(c * x * x + c * x) + c
-      SymbolString targetSolution = new SymbolString(new[] {
+      SymbolList targetSolution = new SymbolList(new[] {
         varSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol,
         varSymbol, varSymbol, mulSymbol, constSymbol, mulSymbol, varSymbol, constSymbol, mulSymbol, addSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol, addSymbol,
@@ -165,5 +163,5 @@
 
       // c*sin(c*x + c) + c*sin(c*y*y + c) + c
-      SymbolString targetSolution = new SymbolString(new[] {
+      SymbolList targetSolution = new SymbolList(new[] {
         xSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol,
         ySymbol, ySymbol, mulSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol, addSymbol,
@@ -222,5 +220,5 @@
       TerminalSymbol logSymbol = alg.Grammar.Log;
 
-      SymbolString targetSolution = new SymbolString(new[] {
+      SymbolList targetSolution = new SymbolList(new[] {
         varSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, logSymbol, constSymbol, mulSymbol,
         varSymbol, varSymbol, mulSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, logSymbol, constSymbol, mulSymbol, addSymbol,
@@ -266,5 +264,5 @@
       TerminalSymbol addSymbol = alg.Grammar.Addition;
 
-      SymbolString targetSolution = new SymbolString(new[] {
+      SymbolList targetSolution = new SymbolList(new[] {
         constSymbol, varSymbol, mulSymbol, constSymbol, addSymbol, alg.Grammar.Sin,
         varSymbol, mulSymbol,
@@ -303,5 +301,5 @@
       // 30 * x * z * 1/(x*y*y - 10*y*y)
       // --> x z * c *     x y * y * c *  y y * c * + c + inv c +
-      SymbolString targetSolution = new SymbolString(new[] {
+      SymbolList targetSolution = new SymbolList(new[] {
         xSymbol, zSymbol, mulSymbol, constSymbol, mulSymbol,
         xSymbol, ySymbol, mulSymbol, ySymbol, mulSymbol, constSymbol, mulSymbol,
@@ -337,5 +335,5 @@
       TerminalSymbol addSymbol = alg.Grammar.Addition;
 
-      SymbolString targetSolution = new SymbolString(new[] {
+      SymbolList targetSolution = new SymbolList(new[] {
         xSymbol, xSymbol, mulSymbol, xSymbol, mulSymbol, xSymbol, mulSymbol, constSymbol, mulSymbol,
         xSymbol, xSymbol, mulSymbol, xSymbol, mulSymbol, constSymbol, mulSymbol, addSymbol,
@@ -376,5 +374,5 @@
 
       // x x mul c mul y y mul c mul add const add inv const mul const add
-      SymbolString targetSolution = new SymbolString(new[] {
+      SymbolList targetSolution = new SymbolList(new[] {
         xSymbol, xSymbol, mulSymbol, constSymbol, mulSymbol,
         ySymbol, ySymbol, mulSymbol, constSymbol, mulSymbol, addSymbol,
@@ -412,5 +410,5 @@
 
       // x x * x * const * y y * y * const * + y const * + x const * const +
-      SymbolString targetSolution = new SymbolString(new[] {
+      SymbolList targetSolution = new SymbolList(new[] {
         xSymbol, xSymbol, mulSymbol, xSymbol, mulSymbol, constSymbol, mulSymbol,
         ySymbol, ySymbol, mulSymbol, ySymbol, mulSymbol, constSymbol, mulSymbol, addSymbol,
Index: branches/2886_SymRegGrammarEnumeration/Test/TreeHashingTest.cs
===================================================================
--- branches/2886_SymRegGrammarEnumeration/Test/TreeHashingTest.cs	(revision 15974)
+++ branches/2886_SymRegGrammarEnumeration/Test/TreeHashingTest.cs	(revision 16026)
@@ -27,6 +27,6 @@
     [TestCategory("TreeHashing")]
     public void SimpleEqualityAddition() {
-      SymbolString s1 = new SymbolString(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
-      SymbolString s2 = new SymbolString(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
+      SymbolList s1 = new SymbolList(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
+      SymbolList s2 = new SymbolList(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
 
       int hash1 = grammar.Hasher.CalcHashCode(s1);
@@ -39,6 +39,6 @@
     [TestCategory("TreeHashing")]
     public void SimpleInequalityAddition() {
-      SymbolString s1 = new SymbolString(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
-      SymbolString s2 = new SymbolString(new[] { varB, varB, grammar.Addition, varB, grammar.Addition });
+      SymbolList s1 = new SymbolList(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
+      SymbolList s2 = new SymbolList(new[] { varB, varB, grammar.Addition, varB, grammar.Addition });
 
       int hash1 = grammar.Hasher.CalcHashCode(s1);
@@ -51,6 +51,6 @@
     [TestCategory("TreeHashing")]
     public void CommutativityAddition() {
-      SymbolString s1 = new SymbolString(new[] { varA, varB, grammar.Addition });
-      SymbolString s2 = new SymbolString(new[] { varB, varA, grammar.Addition });
+      SymbolList s1 = new SymbolList(new[] { varA, varB, grammar.Addition });
+      SymbolList s2 = new SymbolList(new[] { varB, varA, grammar.Addition });
 
       int hash1 = grammar.Hasher.CalcHashCode(s1);
@@ -63,6 +63,6 @@
     [TestCategory("TreeHashing")]
     public void AssociativityAddition() {
-      SymbolString s1 = new SymbolString(new[] { varA, varB, grammar.Addition, varA, grammar.Addition });
-      SymbolString s2 = new SymbolString(new[] { varA, varB, varA, grammar.Addition, grammar.Addition });
+      SymbolList s1 = new SymbolList(new[] { varA, varB, grammar.Addition, varA, grammar.Addition });
+      SymbolList s2 = new SymbolList(new[] { varA, varB, varA, grammar.Addition, grammar.Addition });
 
       int hash1 = grammar.Hasher.CalcHashCode(s1);
@@ -75,6 +75,6 @@
     [TestCategory("TreeHashing")]
     public void RepeatedAddition() {
-      SymbolString s1 = new SymbolString(new[] { varA, varA, grammar.Addition, varA, grammar.Addition });
-      SymbolString s2 = new SymbolString(new[] { varA });
+      SymbolList s1 = new SymbolList(new[] { varA, varA, grammar.Addition, varA, grammar.Addition });
+      SymbolList s2 = new SymbolList(new[] { varA });
 
       int hash1 = grammar.Hasher.CalcHashCode(s1);
@@ -87,6 +87,6 @@
     [TestCategory("TreeHashing")]
     public void ComplexInequality() {
-      SymbolString s1 = new SymbolString(new[] { varA, varA, varA, grammar.Multiplication, grammar.Multiplication });
-      SymbolString s2 = new SymbolString(new[] { varA, varA, varA, grammar.Multiplication, grammar.Addition });
+      SymbolList s1 = new SymbolList(new[] { varA, varA, varA, grammar.Multiplication, grammar.Multiplication });
+      SymbolList s2 = new SymbolList(new[] { varA, varA, varA, grammar.Multiplication, grammar.Addition });
 
       int hash1 = grammar.Hasher.CalcHashCode(s1);
@@ -99,6 +99,6 @@
     [TestCategory("TreeHashing")]
     public void NonterminalHashing() {
-      SymbolString s1 = new SymbolString(new Symbol[] { varA, varA, grammar.Expr, grammar.Addition, grammar.Addition });
-      SymbolString s2 = new SymbolString(new Symbol[] { varA, grammar.Expr, grammar.Addition });
+      SymbolList s1 = new SymbolList(new Symbol[] { varA, varA, grammar.Expr, grammar.Addition, grammar.Addition });
+      SymbolList s2 = new SymbolList(new Symbol[] { varA, grammar.Expr, grammar.Addition });
 
       int hash1 = grammar.Hasher.CalcHashCode(s1);
@@ -112,7 +112,7 @@
     public void InverseFactorCancelationSimple() {
       // 1/a * b * a * a
-      SymbolString s1 = new SymbolString(new Symbol[] { varA, grammar.Inv, varB, grammar.Multiplication, varA, grammar.Multiplication, varA, grammar.Multiplication });
+      SymbolList s1 = new SymbolList(new Symbol[] { varA, grammar.Inv, varB, grammar.Multiplication, varA, grammar.Multiplication, varA, grammar.Multiplication });
       // a * b
-      SymbolString s2 = new SymbolString(new Symbol[] { varA, varB, grammar.Multiplication });
+      SymbolList s2 = new SymbolList(new Symbol[] { varA, varB, grammar.Multiplication });
 
       int hash1 = grammar.Hasher.CalcHashCode(s1);
@@ -125,6 +125,6 @@
     [TestCategory("TreeHashing")]
     public void InverseFactorCancelationComplex() {
-      SymbolString s1 = new SymbolString(new Symbol[] { varA, grammar.Sin, varA, varA, grammar.Multiplication, varA, grammar.Addition, grammar.Sin, grammar.Addition });
-      SymbolString s2 = new SymbolString(new Symbol[] { varA, varA, varA, grammar.Multiplication, grammar.Addition, grammar.Sin, varA, grammar.Inv, varA, grammar.Sin, varA, grammar.Multiplication, grammar.Multiplication, grammar.Addition });
+      SymbolList s1 = new SymbolList(new Symbol[] { varA, grammar.Sin, varA, varA, grammar.Multiplication, varA, grammar.Addition, grammar.Sin, grammar.Addition });
+      SymbolList s2 = new SymbolList(new Symbol[] { varA, varA, varA, grammar.Multiplication, grammar.Addition, grammar.Sin, varA, grammar.Inv, varA, grammar.Sin, varA, grammar.Multiplication, grammar.Multiplication, grammar.Addition });
 
       int hash1 = grammar.Hasher.CalcHashCode(s1);
@@ -138,6 +138,6 @@
     [TestCategory("TreeHashing")]
     public void SimpleConst() {
-      SymbolString s1 = new SymbolString(new Symbol[] { c, varA, grammar.Multiplication, c, grammar.Addition});
-      SymbolString s2 = new SymbolString(new Symbol[] { c, varA, grammar.Multiplication, c, varA, grammar.Multiplication, grammar.Addition, c, grammar.Addition });
+      SymbolList s1 = new SymbolList(new Symbol[] { c, varA, grammar.Multiplication, c, grammar.Addition});
+      SymbolList s2 = new SymbolList(new Symbol[] { c, varA, grammar.Multiplication, c, varA, grammar.Multiplication, grammar.Addition, c, grammar.Addition });
 
       int hash1 = grammar.Hasher.CalcHashCode(s1);
@@ -151,6 +151,6 @@
     [TestCategory("TreeHashing")]
     public void CompoundInverseCancellationToSingleInverse() {
-      SymbolString s1 = new SymbolString(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv, grammar.Inv, grammar.Inv });
-      SymbolString s2 = new SymbolString(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv });
+      SymbolList s1 = new SymbolList(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv, grammar.Inv, grammar.Inv });
+      SymbolList s2 = new SymbolList(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv });
 
       int hash1 = grammar.CalcHashCode(s1);
@@ -163,6 +163,6 @@
     [TestCategory("TreeHashing")]
     public void CompoundInverseCancellationToDivisor() {
-      SymbolString s1 = new SymbolString(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv, grammar.Inv });
-      SymbolString s2 = new SymbolString(new Symbol[] { varA, varB, grammar.Addition });
+      SymbolList s1 = new SymbolList(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv, grammar.Inv });
+      SymbolList s2 = new SymbolList(new Symbol[] { varA, varB, grammar.Addition });
 
       int hash1 = grammar.CalcHashCode(s1);
@@ -176,7 +176,7 @@
     public void UncancelableCompoundInverse() {
       // 1 / ( 1/b + sin(a*c) )
-      SymbolString s1 = new SymbolString(new Symbol[] { varB, grammar.Inv, varA, varC, grammar.Multiplication, grammar.Sin, grammar.Addition, grammar.Inv });
+      SymbolList s1 = new SymbolList(new Symbol[] { varB, grammar.Inv, varA, varC, grammar.Multiplication, grammar.Sin, grammar.Addition, grammar.Inv });
       // b + sin(a*c)
-      SymbolString s2 = new SymbolString(new Symbol[] { varB, varA, varC, grammar.Multiplication, grammar.Sin, grammar.Addition });
+      SymbolList s2 = new SymbolList(new Symbol[] { varB, varA, varC, grammar.Multiplication, grammar.Sin, grammar.Addition });
 
       int hash1 = grammar.CalcHashCode(s1);
