Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode.Views/3.3/BattleRunnerDialog.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode.Views/3.3/BattleRunnerDialog.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode.Views/3.3/BattleRunnerDialog.cs	(revision 10046)
@@ -1,3 +1,24 @@
-﻿using System.IO;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.IO;
 using System.Windows.Forms;
 using HeuristicLab.Common;
@@ -40,5 +61,5 @@
       if (string.IsNullOrEmpty(robocodePath)) {
         e.Cancel = true;
-        errorProvider.SetError(robocodePathTextBox, "Robocode Directory has to be set");
+        errorProvider.SetError(robocodePathTextBox, "Robocode directory has to be set");
         robocodePathTextBox.SelectAll();
         return;
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Grammar.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Grammar.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Grammar.cs	(revision 10046)
@@ -59,4 +59,5 @@
       var ifThenElseStat = new IfThenElseStat();
       var whileStat = new WhileStat();
+      whileStat.Enabled = false;
 
       var logicalExpr = new LogicalExpression();
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Disjunction.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Disjunction.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Disjunction.cs	(revision 10046)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -53,4 +54,7 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
+      if (children.Count() < 2)
+        throw new ArgumentException("Expected at leaset 2 children.", "children");
+
       string result = string.Join(" || ", children.Select(c => ((CodeNode)c.Symbol).Interpret(c, c.Subtrees)));
       return Prefix + result + Suffix;
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/Equal.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/Equal.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/Equal.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -49,15 +51,9 @@
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
       ISymbolicExpressionTreeNode lhs = null, rhs = null;
-      var enumerator = children.GetEnumerator();
-      int childCount = 0;
-      while (enumerator.MoveNext()) {
-        childCount++;
-        switch (childCount) {
-          case 1: lhs = enumerator.Current; break;
-          case 2: rhs = enumerator.Current; break;
-          default: throw new System.Exception("Unexpected number of children. Expected 2 children.");
-        }
-      }
-      if (childCount < 2) throw new System.Exception("Unexpected number of children. Expected 2 children.");
+      if (children.Count() != 2)
+        throw new Exception("Unexpected number of children. Expected 2 children.");
+
+      lhs = children.First();
+      rhs = children.Last();
 
       var result = new[] {
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/GreaterThan.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/GreaterThan.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/GreaterThan.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -49,15 +51,9 @@
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
       ISymbolicExpressionTreeNode lhs = null, rhs = null;
-      var enumerator = children.GetEnumerator();
-      int childCount = 0;
-      while (enumerator.MoveNext()) {
-        childCount++;
-        switch (childCount) {
-          case 1: lhs = enumerator.Current; break;
-          case 2: rhs = enumerator.Current; break;
-          default: throw new System.Exception("Unexpected number of children. Expected 2 children.");
-        }
-      }
-      if (childCount < 2) throw new System.Exception("Unexpected number of children. Expected 2 children.");
+      if (children.Count() != 2)
+        throw new Exception("Unexpected number of children. Expected 2 children.");
+
+      lhs = children.First();
+      rhs = children.Last();
 
       var result = new[] {
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/GreaterThanOrEqual.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/GreaterThanOrEqual.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/GreaterThanOrEqual.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -49,15 +51,9 @@
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
       ISymbolicExpressionTreeNode lhs = null, rhs = null;
-      var enumerator = children.GetEnumerator();
-      int childCount = 0;
-      while (enumerator.MoveNext()) {
-        childCount++;
-        switch (childCount) {
-          case 1: lhs = enumerator.Current; break;
-          case 2: rhs = enumerator.Current; break;
-          default: throw new System.Exception("Unexpected number of children. Expected 2 children.");
-        }
-      }
-      if (childCount < 2) throw new System.Exception("Unexpected number of children. Expected 2 children.");
+      if (children.Count() != 2)
+        throw new Exception("Unexpected number of children. Expected 2 children.");
+
+      lhs = children.First();
+      rhs = children.Last();
 
       var result = new[] {
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/LessThan.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/LessThan.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/LessThan.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -49,15 +51,9 @@
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
       ISymbolicExpressionTreeNode lhs = null, rhs = null;
-      var enumerator = children.GetEnumerator();
-      int childCount = 0;
-      while (enumerator.MoveNext()) {
-        childCount++;
-        switch (childCount) {
-          case 1: lhs = enumerator.Current; break;
-          case 2: rhs = enumerator.Current; break;
-          default: throw new System.Exception("Unexpected number of children. Expected 2 children.");
-        }
-      }
-      if (childCount < 2) throw new System.Exception("Unexpected number of children. Expected 2 children.");
+      if (children.Count() != 2)
+        throw new Exception("Unexpected number of children. Expected 2 children.");
+
+      lhs = children.First();
+      rhs = children.Last();
 
       var result = new[] {
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/LessThanOrEqual.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/LessThanOrEqual.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Logical Comparators/LessThanOrEqual.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -49,15 +51,9 @@
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
       ISymbolicExpressionTreeNode lhs = null, rhs = null;
-      var enumerator = children.GetEnumerator();
-      int childCount = 0;
-      while (enumerator.MoveNext()) {
-        childCount++;
-        switch (childCount) {
-          case 1: lhs = enumerator.Current; break;
-          case 2: rhs = enumerator.Current; break;
-          default: throw new System.Exception("Unexpected number of children. Expected 2 children.");
-        }
-      }
-      if (childCount < 2) throw new System.Exception("Unexpected number of children. Expected 2 children.");
+      if (children.Count() != 2)
+        throw new Exception("Unexpected number of children. Expected 2 children.");
+
+      lhs = children.First();
+      rhs = children.Last();
 
       var result = new[] {
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/LogicalExpression.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/LogicalExpression.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/LogicalExpression.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -48,8 +50,9 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("LogicalExpression was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in LogicalExpression.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is LogicalValue || symbol is Conjunction || symbol is Disjunction || symbol is Negation))
         throw new System.Exception("LogicalExpression was given a child of type " + symbol.GetType() +
@@ -59,8 +62,5 @@
                                            + " or " + typeof(Negation) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("LogicalExpression was given more than one child.");
-
-      return result;
+      return Prefix + ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees) + Suffix;
     }
   }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/LogicalValue.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/LogicalValue.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/LogicalValue.cs	(revision 10046)
@@ -52,5 +52,5 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      return ((BooleanTreeNode)node).Value.ToString().ToLower();
+      return Prefix + ((BooleanTreeNode)node).Value.ToString().ToLower() + Suffix;
     }
   }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Negation.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Negation.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Logical Expressions/Negation.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -52,8 +54,9 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("Negation was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in Negation.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is LogicalValue || symbol is Conjunction || symbol is Disjunction || symbol is Negation || symbol is ILogicalComparator))
         throw new System.Exception("Negation was given a child of type " + symbol.GetType() +
@@ -64,8 +67,5 @@
                                            + " or " + typeof(ILogicalComparator) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("LogicalExpression was given more than one child.");
-
-      return Prefix + result + Suffix;
+      return Prefix + ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees) + Suffix;
     }
   }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Numerical Expressions/NumericalExpression.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Numerical Expressions/NumericalExpression.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Numerical Expressions/NumericalExpression.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -48,8 +50,9 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("NumericalExpression was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in NumericalExpression.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is Number || symbol is INumericalMethod || symbol is INumericalOperator))
         throw new System.Exception("NumericalExpression was given a child of type " + symbol.GetType() +
@@ -58,8 +61,5 @@
                                            + " or " + typeof(INumericalOperator) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("NumericalExpression was given more than one child.");
-
-      return result;
+      return Prefix + ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees) + Suffix;
     }
   }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Statements/IfThenElseStat.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Statements/IfThenElseStat.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Statements/IfThenElseStat.cs	(revision 10046)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -51,20 +52,17 @@
       ISymbolicExpressionTreeNode condition = null, truePart = null, falsePart = null;
       string[] parts = new string[3];
-      var enumerator = children.GetEnumerator();
-      int childCount = 0;
-      while (enumerator.MoveNext()) {
-        childCount++;
-        switch (childCount) {
-          case 1: condition = enumerator.Current; break;
-          case 2: truePart = enumerator.Current; break;
-          case 3: falsePart = enumerator.Current; break;
-          default: throw new ArgumentException("Unexpected number of children. Expected a maximum of 3 children.");
-        }
-      }
-      if (childCount < 2) throw new ArgumentException("Unexpected number of children. Expected at least 2 children.");
+
+      if (children.Count() < 2 || children.Count() > 3)
+        throw new Exception("Unexpected number of children. Expected 2 or 3 children.");
+
+      var childLst = children.ToList();
+      condition = childLst[0];
+      truePart = childLst[1];
+      if (childLst.Count == 3)
+        falsePart = childLst[2];
 
       parts[0] = ((CodeNode)condition.Symbol).Interpret(condition, condition.Subtrees);
       parts[1] = ((CodeNode)truePart.Symbol).Interpret(truePart, truePart.Subtrees);
-      if (childCount == 3) parts[2] = ((CodeNode)falsePart.Symbol).Interpret(falsePart, falsePart.Subtrees);
+      if (childLst.Count == 3) parts[2] = ((CodeNode)falsePart.Symbol).Interpret(falsePart, falsePart.Subtrees);
 
       string result = "if (" + parts[0] + ") {" + parts[1] + "}";
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/Ahead.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/Ahead.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/Ahead.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -52,15 +54,14 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("Ahead was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in Ahead.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is NumericalExpression))
-        throw new System.Exception("Ahead was given a child of type " + symbol.GetType() +
+        throw new Exception("Ahead was given a child of type " + symbol.GetType() +
             ". The expected child must be of type " + typeof(NumericalExpression) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("Ahead was given more than one child.");
-
+      string result = ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees);
       return Prefix + result + Suffix;
     }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/Back.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/Back.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/Back.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -52,15 +54,14 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("Back was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in Back.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is NumericalExpression))
-        throw new System.Exception("Back was given a child of type " + symbol.GetType() +
+        throw new Exception("Back was given a child of type " + symbol.GetType() +
             ". The expected child must be of type " + typeof(NumericalExpression) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("Back was given more than one child.");
-
+      string result = ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees);
       return Prefix + result + Suffix;
     }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/Fire.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/Fire.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/Fire.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -52,15 +54,14 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("Fire was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in Fire.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is ShotPower))
-        throw new System.Exception("Fire was given a child of type " + symbol.GetType() +
+        throw new Exception("Fire was given a child of type " + symbol.GetType() +
             ". The expected child must be of type " + typeof(ShotPower) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("Fire was given more than one child.");
-
+      string result = ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees);
       return Prefix + result + Suffix;
     }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnGunLeft.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnGunLeft.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnGunLeft.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -52,15 +54,14 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("TurnGunLeft was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in TurnGunLeft.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is NumericalExpression))
-        throw new System.Exception("TurnGunLeft was given a child of type " + symbol.GetType() +
+        throw new Exception("TurnGunLeft was given a child of type " + symbol.GetType() +
             ". The expected child must be of type " + typeof(NumericalExpression) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("TurnGunLeft was given more than one child.");
-
+      string result = ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees);
       return Prefix + result + Suffix;
     }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnGunRight.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnGunRight.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnGunRight.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -52,15 +54,14 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("TurnGunRight was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in TurnGunRight.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is NumericalExpression))
-        throw new System.Exception("TurnGunRight was given a child of type " + symbol.GetType() +
+        throw new Exception("TurnGunRight was given a child of type " + symbol.GetType() +
             ". The expected child must be of type " + typeof(NumericalExpression) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("TurnGunRight was given more than one child.");
-
+      string result = ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees);
       return Prefix + result + Suffix;
     }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnLeft.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnLeft.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnLeft.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -52,15 +54,14 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("TurnLeft was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in TurnLeft.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is NumericalExpression))
         throw new System.Exception("TurnLeft was given a child of type " + symbol.GetType() +
             ". The expected child must be of type " + typeof(NumericalExpression) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("TurnLeft was given more than one child.");
-
+      string result = ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees);
       return Prefix + result + Suffix;
     }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnRadarLeft.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnRadarLeft.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnRadarLeft.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -52,15 +54,14 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("TurnRadarLeft was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in TurnRadarLeft.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is NumericalExpression))
-        throw new System.Exception("TurnRadarLeft was given a child of type " + symbol.GetType() +
+        throw new Exception("TurnRadarLeft was given a child of type " + symbol.GetType() +
             ". The expected child must be of type " + typeof(NumericalExpression) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("TurnRadarLeft was given more than one child.");
-
+      string result = ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees);
       return Prefix + result + Suffix;
     }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnRadarRight.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnRadarRight.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnRadarRight.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -52,15 +54,14 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("TurnRadarRight was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in TurnRadarRight.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is NumericalExpression))
-        throw new System.Exception("TurnRadarRight was given a child of type " + symbol.GetType() +
+        throw new Exception("TurnRadarRight was given a child of type " + symbol.GetType() +
             ". The expected child must be of type " + typeof(NumericalExpression) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("TurnRadarRight was given more than one child.");
-
+      string result = ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees);
       return Prefix + result + Suffix;
     }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnRight.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnRight.cs	(revision 10045)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Symbols/Void Methods/TurnRight.cs	(revision 10046)
@@ -20,5 +20,7 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -52,15 +54,14 @@
 
     public override string Interpret(ISymbolicExpressionTreeNode node, IEnumerable<ISymbolicExpressionTreeNode> children) {
-      var enumerator = children.GetEnumerator();
-      if (!enumerator.MoveNext()) throw new System.Exception("TurnRight was not given a child.");
+      if (children.Count() != 1)
+        throw new ArgumentException("Expected 1 child in TurnRight.", "children");
 
-      var symbol = enumerator.Current.Symbol;
+      var exprTree = children.Single();
+      var symbol = exprTree.Symbol;
       if (!(symbol is NumericalExpression))
         throw new System.Exception("TurnRight was given a child of type " + symbol.GetType() +
             ". The expected child must be of type " + typeof(NumericalExpression) + ".");
 
-      string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees);
-      if (enumerator.MoveNext()) throw new System.Exception("TurnRight was given more than one child.");
-
+      string result = ((CodeNode)symbol).Interpret(exprTree, exprTree.Subtrees);
       return Prefix + result + Suffix;
     }
