Index: trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/Analyzers/MinAvgMaxSymbolicExpressionTreeSizeAnalyzer.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/Analyzers/MinAvgMaxSymbolicExpressionTreeSizeAnalyzer.cs	(revision 3683)
+++ trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/Analyzers/MinAvgMaxSymbolicExpressionTreeSizeAnalyzer.cs	(revision 3710)
@@ -33,4 +33,5 @@
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Interfaces;
 using System;
+using HeuristicLab.Optimization.Operators;
 
 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Analyzers {
@@ -43,5 +44,8 @@
     private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree";
     private const string SymbolicExpressionTreeSizeParameterName = "SymbolicExpressionTreeSize";
-    private const string SymbolicExpressionTreeSizesParameterName = "SymbolicExpressionTreeSizes";
+    private const string SymbolicExpressionTreeSizesParameterName = "Symbolic expression tree size";
+    private const string MinTreeSizeParameterName = "Min tree size";
+    private const string AverageTreeSizeParameterName = "Average tree size";
+    private const string MaxTreeSizeParameterName = "Max tree size";
     private const string ResultsParameterName = "Results";
 
@@ -59,9 +63,9 @@
       get { return (ValueLookupParameter<VariableCollection>)Parameters[ResultsParameterName]; }
     }
-    
+
     [Storable]
     private MinAverageMaxValueAnalyzer valueAnalyzer;
     [Storable]
-    private SymbolicExpressionTreeSizeCalculator sizeCalculator;
+    private UniformSubScopesProcessor subScopesProcessor;
 
     #endregion
@@ -73,20 +77,25 @@
       Parameters.Add(new ValueLookupParameter<VariableCollection>(ResultsParameterName, "The results collection where the analysis values should be stored."));
 
-      sizeCalculator = new SymbolicExpressionTreeSizeCalculator();
+      subScopesProcessor = new UniformSubScopesProcessor();
+      SymbolicExpressionTreeSizeCalculator sizeCalculator = new SymbolicExpressionTreeSizeCalculator();
       valueAnalyzer = new MinAverageMaxValueAnalyzer();
+
+      subScopesProcessor.Depth.Value = SymbolicExpressionTreeParameter.Depth;
       sizeCalculator.SymbolicExpressionTreeParameter.ActualName = SymbolicExpressionTreeParameter.Name;
-      sizeCalculator.SymbolicExpressionTreeParameter.Depth = SymbolicExpressionTreeParameter.Depth;
       sizeCalculator.SymbolicExpressionTreeSizeParameter.ActualName = SymbolicExpressionTreeSizeParameter.Name;
-      sizeCalculator.SymbolicExpressionTreeSizeParameter.Depth = SymbolicExpressionTreeSizeParameter.Depth;
       valueAnalyzer.ValueParameter.ActualName = sizeCalculator.SymbolicExpressionTreeSizeParameter.Name;
       valueAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeSizeParameter.Depth;
+      valueAnalyzer.AverageValueParameter.ActualName = AverageTreeSizeParameterName;
+      valueAnalyzer.CollectAverageValueInResultsParameter.Value = new BoolValue(false);
+      valueAnalyzer.MaxValueParameter.ActualName = MaxTreeSizeParameterName;
+      valueAnalyzer.CollectMaxValueInResultsParameter.Value = new BoolValue(false);
+      valueAnalyzer.MinValueParameter.ActualName = MinTreeSizeParameterName;
+      valueAnalyzer.CollectMinValueInResultsParameter.Value = new BoolValue(false);
       valueAnalyzer.ValuesParameter.ActualName = SymbolicExpressionTreeSizesParameter.Name;
-      valueAnalyzer.ResultsParameter.ActualName = ResultsParameter.Name;
-      valueAnalyzer.AverageValueParameter.ActualName = "Avg. Tree Size";
-      valueAnalyzer.MaxValueParameter.ActualName = "Max Tree Size";
-      valueAnalyzer.MinValueParameter.ActualName = "Min Tree Size";
 
-      OperatorGraph.InitialOperator = sizeCalculator;
-      sizeCalculator.Successor = valueAnalyzer;
+      OperatorGraph.InitialOperator = subScopesProcessor;
+      subScopesProcessor.Operator = sizeCalculator;
+      sizeCalculator.Successor = null;
+      subScopesProcessor.Successor = valueAnalyzer;
       valueAnalyzer.Successor = null;
 
@@ -119,6 +128,5 @@
     private void OnDepthParameterChanged() {
       valueAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
-      sizeCalculator.SymbolicExpressionTreeParameter.Depth = SymbolicExpressionTreeParameter.Depth;
-      sizeCalculator.SymbolicExpressionTreeSizeParameter.Depth = SymbolicExpressionTreeSizeParameter.Depth;
+      subScopesProcessor.Depth.Value = SymbolicExpressionTreeParameter.Depth;
     }
   }
Index: trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/Analyzers/SymbolicExpressionTreeSizeCalculator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/Analyzers/SymbolicExpressionTreeSizeCalculator.cs	(revision 3683)
+++ trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/Analyzers/SymbolicExpressionTreeSizeCalculator.cs	(revision 3710)
@@ -42,17 +42,17 @@
 
     #region parameter properties
-    public ScopeTreeLookupParameter<SymbolicExpressionTree> SymbolicExpressionTreeParameter {
-      get { return (ScopeTreeLookupParameter<SymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; }
+    public ILookupParameter<SymbolicExpressionTree> SymbolicExpressionTreeParameter {
+      get { return (ILookupParameter<SymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; }
     }
-    public ScopeTreeLookupParameter<DoubleValue> SymbolicExpressionTreeSizeParameter {
-      get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters[SymbolicExpressionTreeSizeParameterName]; }
+    public ILookupParameter<DoubleValue> SymbolicExpressionTreeSizeParameter {
+      get { return (ILookupParameter<DoubleValue>)Parameters[SymbolicExpressionTreeSizeParameterName]; }
     }
     #endregion
 
     #region properties
-    public ItemArray<SymbolicExpressionTree> SymbolicExpressionTree {
+    public SymbolicExpressionTree SymbolicExpressionTree {
       get { return SymbolicExpressionTreeParameter.ActualValue; }
     }
-    public ItemArray<DoubleValue> SymbolicExpressionTreeSize {
+    public DoubleValue SymbolicExpressionTreeSize {
       get { return SymbolicExpressionTreeSizeParameter.ActualValue; }
       set { SymbolicExpressionTreeSizeParameter.ActualValue = value; }
@@ -62,12 +62,11 @@
     public SymbolicExpressionTreeSizeCalculator()
       : base() {
-      Parameters.Add(new ScopeTreeLookupParameter<SymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression tree whose size should be calculated."));
-      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>(SymbolicExpressionTreeSizeParameterName, "The tree size of the symbolic expression tree."));
+      Parameters.Add(new LookupParameter<SymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression tree whose size should be calculated."));
+      Parameters.Add(new LookupParameter<DoubleValue>(SymbolicExpressionTreeSizeParameterName, "The tree size of the symbolic expression tree."));
     }
 
     public override IOperation Apply() {
-      ItemArray<SymbolicExpressionTree> trees = SymbolicExpressionTree;
-      SymbolicExpressionTreeSize = new ItemArray<DoubleValue>(from tree in trees
-                                                              select new DoubleValue(tree.Size));
+      SymbolicExpressionTree tree = SymbolicExpressionTree;
+      SymbolicExpressionTreeSize = new DoubleValue(tree.Size);
       return base.Apply();
     }
