Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesAlgorithm.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesAlgorithm.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesAlgorithm.cs	(revision 17035)
@@ -21,6 +21,8 @@
 #endregion
 
+using System;
 using System.Linq;
 using System.Threading;
+using HeuristicLab.Algorithms.DataAnalysis.GradientBoostedTrees;
 using HeuristicLab.Analysis;
 using HeuristicLab.Common;
@@ -48,5 +50,5 @@
     private const string LossFunctionParameterName = "LossFunction";
     private const string UpdateIntervalParameterName = "UpdateInterval";
-    private const string CreateSolutionParameterName = "CreateSolution";
+    private const string ModelCreationParameterName = "ModelCreation";
     #endregion
 
@@ -79,6 +81,6 @@
       get { return (IFixedValueParameter<IntValue>)Parameters[UpdateIntervalParameterName]; }
     }
-    public IFixedValueParameter<BoolValue> CreateSolutionParameter {
-      get { return (IFixedValueParameter<BoolValue>)Parameters[CreateSolutionParameterName]; }
+    private IFixedValueParameter<EnumValue<ModelCreation>> ModelCreationParameter {
+      get { return (IFixedValueParameter<EnumValue<ModelCreation>>)Parameters[ModelCreationParameterName]; }
     }
     #endregion
@@ -113,7 +115,7 @@
       set { MParameter.Value.Value = value; }
     }
-    public bool CreateSolution {
-      get { return CreateSolutionParameter.Value.Value; }
-      set { CreateSolutionParameter.Value.Value = value; }
+    public ModelCreation ModelCreation {
+      get { return ModelCreationParameter.Value.Value; }
+      set { ModelCreationParameter.Value.Value = value; }
     }
     #endregion
@@ -146,5 +148,5 @@
       Parameters.Add(new FixedValueParameter<IntValue>(SeedParameterName, "The random seed used to initialize the new pseudo random number generator.", new IntValue(0)));
       Parameters.Add(new FixedValueParameter<BoolValue>(SetSeedRandomlyParameterName, "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true)));
-      Parameters.Add(new FixedValueParameter<IntValue>(MaxSizeParameterName, "Maximal size of the tree learned in each step (prefer smaller sizes if possible)", new IntValue(10)));
+      Parameters.Add(new FixedValueParameter<IntValue>(MaxSizeParameterName, "Maximal size of the tree learned in each step (prefer smaller sizes (3 to 10) if possible)", new IntValue(10)));
       Parameters.Add(new FixedValueParameter<DoubleValue>(RParameterName, "Ratio of training rows selected randomly in each step (0 < R <= 1)", new DoubleValue(0.5)));
       Parameters.Add(new FixedValueParameter<DoubleValue>(MParameterName, "Ratio of variables selected randomly in each step (0 < M <= 1)", new DoubleValue(0.5)));
@@ -152,6 +154,6 @@
       Parameters.Add(new FixedValueParameter<IntValue>(UpdateIntervalParameterName, "", new IntValue(100)));
       Parameters[UpdateIntervalParameterName].Hidden = true;
-      Parameters.Add(new FixedValueParameter<BoolValue>(CreateSolutionParameterName, "Flag that indicates if a solution should be produced at the end of the run", new BoolValue(true)));
-      Parameters[CreateSolutionParameterName].Hidden = true;
+      Parameters.Add(new FixedValueParameter<EnumValue<ModelCreation>>(ModelCreationParameterName, "Defines the results produced at the end of the run (Surrogate => Less disk space, lazy recalculation of model)", new EnumValue<ModelCreation>(ModelCreation.Model)));
+      Parameters[ModelCreationParameterName].Hidden = true;
 
       var lossFunctions = ApplicationManager.Manager.GetInstances<ILossFunction>();
@@ -164,4 +166,6 @@
       // BackwardsCompatibility3.4
       #region Backwards compatible code, remove with 3.5
+
+      #region LossFunction
       // parameter type has been changed
       var lossFunctionParam = Parameters[LossFunctionParameterName] as ConstrainedValueParameter<StringValue>;
@@ -182,4 +186,17 @@
       }
       #endregion
+
+      #region CreateSolution
+      // parameter type has been changed
+      if (Parameters.ContainsKey("CreateSolution")) {
+        var createSolutionParam = Parameters["CreateSolution"] as FixedValueParameter<BoolValue>;
+        Parameters.Remove(createSolutionParam);
+
+        ModelCreation value = createSolutionParam.Value.Value ? ModelCreation.Model : ModelCreation.QualityOnly;
+        Parameters.Add(new FixedValueParameter<EnumValue<ModelCreation>>(ModelCreationParameterName, "Defines the results produced at the end of the run (Surrogate => Less disk space, lazy recalculation of model)", new EnumValue<ModelCreation>(value)));
+        Parameters[ModelCreationParameterName].Hidden = true;
+      }
+      #endregion
+      #endregion
     }
 
@@ -248,6 +265,10 @@
 
       // produce solution 
-      if (CreateSolution) {
-        var model = state.GetModel();
+      if (ModelCreation == ModelCreation.SurrogateModel || ModelCreation == ModelCreation.Model) {
+        IRegressionModel model = state.GetModel();
+
+        if (ModelCreation == ModelCreation.SurrogateModel) {
+          model = new GradientBoostedTreesModelSurrogate(problemData, (uint)Seed, lossFunction, Iterations, MaxSize, R, M, Nu, (GradientBoostedTreesModel)model);
+        }
 
         // for logistic regression we produce a classification solution
@@ -271,4 +292,8 @@
           Results.Add(new Result("Solution", new GradientBoostedTreesSolution(model, problemData)));
         }
+      } else if (ModelCreation == ModelCreation.QualityOnly) {
+        //Do nothing
+      } else {
+        throw new NotImplementedException("Selected parameter for CreateSolution isn't implemented yet");
       }
     }
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesAlgorithmStatic.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesAlgorithmStatic.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesAlgorithmStatic.cs	(revision 17035)
@@ -101,11 +101,5 @@
 
       public IRegressionModel GetModel() {
-#pragma warning disable 618
-        var model = new GradientBoostedTreesModel(models, weights);
-#pragma warning restore 618
-        // we don't know the number of iterations here but the number of weights is equal 
-        // to the number of iterations + 1 (for the constant model)
-        // wrap the actual model in a surrogate that enables persistence and lazy recalculation of the model if necessary
-        return new GradientBoostedTreesModelSurrogate(problemData, randSeed, lossFunction, weights.Count - 1, maxSize, r, m, nu, model);
+        return new GradientBoostedTreesModel(models, weights);
       }
       public IEnumerable<KeyValuePair<string, double>> GetVariableRelevance() {
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesModel.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesModel.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesModel.cs	(revision 17035)
@@ -36,23 +36,20 @@
     // BackwardsCompatibility3.4 for allowing deserialization & serialization of old models
     #region Backwards compatible code, remove with 3.5
-    private bool isCompatibilityLoaded = false; // only set to true if the model is deserialized from the old format, needed to make sure that information is serialized again if it was loaded from the old format
 
     [Storable(Name = "models")]
     private IList<IRegressionModel> __persistedModels {
       set {
-        this.isCompatibilityLoaded = true;
         this.models.Clear();
         foreach (var m in value) this.models.Add(m);
       }
-      get { if (this.isCompatibilityLoaded) return models; else return null; }
+      get { return models; }
     }
     [Storable(Name = "weights")]
     private IList<double> __persistedWeights {
       set {
-        this.isCompatibilityLoaded = true;
         this.weights.Clear();
         foreach (var w in value) this.weights.Add(w);
       }
-      get { if (this.isCompatibilityLoaded) return weights; else return null; }
+      get { return weights; }
     }
     #endregion
@@ -77,7 +74,6 @@
       this.weights = new List<double>(original.weights);
       this.models = new List<IRegressionModel>(original.models.Select(m => cloner.Clone(m)));
-      this.isCompatibilityLoaded = original.isCompatibilityLoaded;
     }
-    [Obsolete("The constructor of GBTModel should not be used directly anymore (use GBTModelSurrogate instead)")]
+
     internal GradientBoostedTreesModel(IEnumerable<IRegressionModel> models, IEnumerable<double> weights)
       : base(string.Empty, "Gradient boosted tree model", string.Empty) {
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/ModelCreation.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/ModelCreation.cs	(revision 17035)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/ModelCreation.cs	(revision 17035)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * and the BEACON Center for the Study of Evolution in Action.
+ * 
+ * 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 HEAL.Attic;
+
+namespace HeuristicLab.Algorithms.DataAnalysis.GradientBoostedTrees {
+
+  /// <summary>
+  /// Defines what part of the Model should be stored.
+  /// QualityOnly - no solution will be created.
+  /// SurrogateModel - only the parameters will be stored, the model is calculated during deserialization
+  /// Model - the complete model will be stored (consider the amount of memory needed)
+  /// </summary>
+  [StorableType("EE55C357-C4B3-4662-B40B-D1D06A851809")]
+  public enum ModelCreation {
+    QualityOnly,
+    SurrogateModel,
+    Model
+  }
+}
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj	(revision 17035)
@@ -217,4 +217,5 @@
     <Compile Include="GradientBoostedTrees\LossFunctions\SquaredErrorLoss.cs" />
     <Compile Include="GradientBoostedTrees\GradientBoostedTreesSolution.cs" />
+    <Compile Include="GradientBoostedTrees\ModelCreation.cs" />
     <Compile Include="GradientBoostedTrees\RegressionTreeBuilder.cs" />
     <Compile Include="GradientBoostedTrees\RegressionTreeModel.cs" />
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/CheckedItemCollectionView.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/CheckedItemCollectionView.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/CheckedItemCollectionView.cs	(revision 17035)
@@ -34,4 +34,6 @@
   [Content(typeof(ReadOnlyCheckedItemCollection<>), true)]
   public partial class CheckedItemCollectionView<T> : ItemCollectionView<T> where T : class, IItem {
+    private bool suppressCheckedEvents;
+
     public new ICheckedItemCollection<T> Content {
       get { return (ICheckedItemCollection<T>)base.Content; }
@@ -84,13 +86,22 @@
         doubleClick = false;
       } else {
+        bool check = e.NewValue == CheckState.Checked;
         var checkedItem = (T)itemsListView.Items[e.Index].Tag;
-        bool check = e.NewValue == CheckState.Checked;
-        if (Content.ItemChecked(checkedItem) != check) {
-          if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check);
-          else e.NewValue = e.CurrentValue;
-        }
+        if (Content.ItemChecked(checkedItem) == check) return;
+
+        suppressCheckedEvents = true;
+        try {
+          if (itemsListView.SelectedIndices.Count > 1
+            && itemsListView.SelectedIndices.Contains(e.Index)) {
+            if (!ReadOnly && !Locked) Content.SetItemCheckedState(itemsListView.SelectedItems.Cast<ListViewItem>().Select(x => (T)x.Tag), check);
+            else e.NewValue = e.CurrentValue;
+          } else {
+            if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check);
+            else e.NewValue = e.CurrentValue;
+          }
+        } finally { suppressCheckedEvents = false; }
       }
     }
-    protected void itemsListView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
+    protected void itemsListView_MouseDown(object sender, MouseEventArgs e) {
       if (e.Clicks > 1)
         doubleClick = true;
@@ -103,5 +114,5 @@
         Invoke(new CollectionItemsChangedEventHandler<T>(Content_CheckedItemsChanged), sender, e);
       else {
-        UpdateCheckedItemState(e.Items);
+        if (!suppressCheckedEvents) UpdateCheckedItemState(e.Items);
         SetNumberOfCheckItems();
       }
@@ -130,11 +141,14 @@
 
     private void UpdateCheckedItemState(IEnumerable<T> items) {
-      foreach (T item in items) {
-        foreach (ListViewItem listViewItem in GetListViewItemsForItem(item)) {
-          var isChecked = Content.ItemChecked(item);
-          if (listViewItem.Checked != isChecked)
-            listViewItem.Checked = isChecked;
+      itemsListView.BeginUpdate();
+      try {
+        foreach (T item in items) {
+          foreach (ListViewItem listViewItem in GetListViewItemsForItem(item)) {
+            var isChecked = Content.ItemChecked(item);
+            if (listViewItem.Checked != isChecked)
+              listViewItem.Checked = isChecked;
+          }
         }
-      }
+      } finally { itemsListView.EndUpdate(); itemsListView.Refresh(); }
     }
   }
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/CheckedItemListView.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/CheckedItemListView.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/CheckedItemListView.cs	(revision 17035)
@@ -37,4 +37,6 @@
   [Content(typeof(ReadOnlyCheckedItemList<>), true)]
   public partial class CheckedItemListView<T> : ItemListView<T> where T : class, IItem {
+    private bool suppressCheckedEvents;
+
     public new ICheckedItemList<T> Content {
       get { return (ICheckedItemList<T>)base.Content; }
@@ -86,10 +88,19 @@
         doubleClick = false;
       } else {
-        var checkedItem = (T)itemsListView.Items[e.Index].Tag;
         bool check = e.NewValue == CheckState.Checked;
-        if (Content.ItemChecked(checkedItem) != check) {
-          if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check);
-          else e.NewValue = e.CurrentValue;
-        }
+        if (Content.ItemChecked(e.Index) == check) return;
+
+        suppressCheckedEvents = true;
+        try {
+          if (itemsListView.SelectedIndices.Count > 1
+            && itemsListView.SelectedIndices.Contains(e.Index)) {
+            if (!ReadOnly && !Locked) Content.SetItemCheckedState(itemsListView.SelectedIndices.Cast<int>(), check);
+            else e.NewValue = e.CurrentValue;
+          } else {
+            var checkedItem = (T)itemsListView.Items[e.Index].Tag;
+            if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check);
+            else e.NewValue = e.CurrentValue;
+          }
+        } finally { suppressCheckedEvents = false; }
       }
     }
@@ -139,5 +150,5 @@
         Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CheckedItemsChanged), sender, e);
       else {
-        UpdateCheckedItemState(e.Items);
+        if (!suppressCheckedEvents) UpdateCheckedItemState(e.Items);
         SetNumberOfCheckItems();
       }
@@ -175,9 +186,12 @@
 
     private void UpdateCheckedItemState(IEnumerable<IndexedItem<T>> items) {
-      foreach (var item in items) {
-        var isChecked = Content.ItemChecked(item.Value);
-        if (itemsListView.Items[item.Index].Checked != isChecked)
-          itemsListView.Items[item.Index].Checked = isChecked;
-      }
+      itemsListView.BeginUpdate();
+      try {
+        foreach (var item in items) {
+          var isChecked = Content.ItemChecked(item.Value);
+          if (itemsListView.Items[item.Index].Checked != isChecked)
+            itemsListView.Items[item.Index].Checked = isChecked;
+        }
+      } finally { itemsListView.EndUpdate(); itemsListView.Refresh(); }
     }
   }
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/Clipboard.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/Clipboard.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/Clipboard.cs	(revision 17035)
@@ -155,7 +155,12 @@
       foreach (string filename in items) {
         try {
-          T item = (T)ContentManager.Load(filename);
+          T item = null;
+          if (HeuristicLab.Persistence.Default.Xml.XmlParser.CanOpen(filename)) {
+            item = HeuristicLab.Persistence.Default.Xml.XmlParser.Deserialize<T>(filename);
+          } else {
+            item = (T)new ProtoBufSerializer().Deserialize(filename);
+          }
           OnItemLoaded(item, progressBar.Maximum / items.Length);
-        } catch(Exception) {
+        } catch (Exception) {
           // ignore if loading a clipboad item fails.
         }
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 17035)
@@ -375,4 +375,9 @@
       <Private>False</Private>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
+      <Project>{102bc7d3-0ef9-439c-8f6d-96ff0fdb8e1b}</Project>
+      <Name>HeuristicLab.Persistence-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs	(revision 17035)
@@ -20,5 +20,4 @@
 #endregion
 
-using System.Security.AccessControl;
 using System.Windows.Forms;
 
@@ -154,4 +153,9 @@
       this.itemsListView.DoubleClick += new System.EventHandler(this.itemsListView_DoubleClick);
       this.itemsListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.itemsListView_KeyDown);
+      this.itemsListView.Layout += new System.Windows.Forms.LayoutEventHandler(this.itemsListView_Layout);
+      //
+      // listViewColumnHeader
+      //
+      this.listViewColumnHeader.Width = 190;
       // 
       // imageList
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemArrayView.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemArrayView.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemArrayView.cs	(revision 17035)
@@ -237,5 +237,4 @@
                                (Content != null) && !Content.IsReadOnly && !ReadOnly;
       removeButton.Enabled = itemsListView.SelectedItems.Count > 0 && (Content != null) && !Content.IsReadOnly && !ReadOnly;
-      AdjustListViewColumnSizes();
 
       if (showDetailsCheckBox.Checked) {
@@ -330,4 +329,8 @@
       }
     }
+    protected virtual void itemsListView_Layout(object sender, LayoutEventArgs e) {
+      if (itemsListView.Columns.Count == 1)
+        AdjustListViewColumnSizes();
+    }
     #endregion
 
@@ -453,5 +456,6 @@
         foreach (ListViewItem listViewItem in GetListViewItemsForItem(item))
           UpdateListViewItemText(listViewItem);
-        AdjustListViewColumnSizes();
+        if (itemsListView.Columns.Count > 1)
+          AdjustListViewColumnSizes();
       }
     }
@@ -460,7 +464,12 @@
     #region Helpers
     protected virtual void AdjustListViewColumnSizes() {
-      if (itemsListView.Items.Count > 0) {
-        for (int i = 0; i < itemsListView.Columns.Count; i++)
-          itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
+      if (itemsListView.Columns.Count == 1) {
+        if (itemsListView.Columns[0].Width != itemsListView.ClientSize.Width)
+          itemsListView.Columns[0].Width = itemsListView.ClientSize.Width;
+      } else {
+        if (itemsListView.Items.Count > 0) {
+          for (int i = 0; i < itemsListView.Columns.Count; i++)
+            itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
+        }
       }
     }
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs	(revision 17035)
@@ -20,5 +20,4 @@
 #endregion
 
-using System.Security.AccessControl;
 using System.Windows.Forms;
 
@@ -107,4 +106,9 @@
       this.itemsListView.DoubleClick += new System.EventHandler(this.itemsListView_DoubleClick);
       this.itemsListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.itemsListView_KeyDown);
+      this.itemsListView.Layout += new System.Windows.Forms.LayoutEventHandler(this.itemsListView_Layout);
+      // 
+      // columnHeader1
+      // 
+      this.columnHeader1.Width = 240;
       // 
       // imageList
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs	(revision 17035)
@@ -221,5 +221,4 @@
     protected virtual void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {
       removeButton.Enabled = (Content != null) && !Content.IsReadOnly && !ReadOnly && itemsListView.SelectedItems.Count > 0;
-      AdjustListViewColumnSizes();
       if (showDetailsCheckBox.Checked) {
         if (itemsListView.SelectedItems.Count == 1) {
@@ -327,4 +326,8 @@
       }
     }
+    protected virtual void itemsListView_Layout(object sender, LayoutEventArgs e) {
+      if (itemsListView.Columns.Count == 1)
+        AdjustListViewColumnSizes();
+    }
     #endregion
 
@@ -423,5 +426,6 @@
         foreach (ListViewItem listViewItem in GetListViewItemsForItem(item))
           UpdateListViewItemText(listViewItem);
-        AdjustListViewColumnSizes();
+        if (itemsListView.Columns.Count > 1)
+          AdjustListViewColumnSizes();
       }
     }
@@ -435,7 +439,12 @@
     }
     protected virtual void AdjustListViewColumnSizes() {
-      if (itemsListView.Items.Count > 0) {
-        for (int i = 0; i < itemsListView.Columns.Count; i++)
-          itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
+      if (itemsListView.Columns.Count == 1) {
+        if (itemsListView.Columns[0].Width != itemsListView.ClientSize.Width)
+          itemsListView.Columns[0].Width = itemsListView.ClientSize.Width;
+      } else {
+        if (itemsListView.Items.Count > 0) {
+          for (int i = 0; i < itemsListView.Columns.Count; i++)
+            itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
+        }
       }
     }
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs	(revision 17035)
@@ -155,4 +155,9 @@
       this.itemsListView.DoubleClick += new System.EventHandler(this.itemsListView_DoubleClick);
       this.itemsListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.itemsListView_KeyDown);
+      this.itemsListView.Layout += new System.Windows.Forms.LayoutEventHandler(this.itemsListView_Layout);
+      // 
+      // listViewColumnHeader
+      // 
+      this.listViewColumnHeader.Width = 190;
       // 
       // imageList
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemListView.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 17035)
@@ -242,6 +242,5 @@
       removeButton.Enabled = itemsListView.SelectedItems.Count > 0 &&
                              (Content != null) && !Content.IsReadOnly && !ReadOnly;
-      AdjustListViewColumnSizes();
-
+      
       if (showDetailsCheckBox.Checked) {
         if (itemsListView.SelectedItems.Count == 1) {
@@ -354,4 +353,8 @@
       }
     }
+    protected virtual void itemsListView_Layout(object sender, LayoutEventArgs e) {
+      if (itemsListView.Columns.Count == 1)
+        AdjustListViewColumnSizes();
+    }
     #endregion
 
@@ -494,5 +497,6 @@
         foreach (ListViewItem listViewItem in GetListViewItemsForItem(item))
           UpdateListViewItemText(listViewItem);
-        AdjustListViewColumnSizes();
+        if (itemsListView.Columns.Count > 1)
+          AdjustListViewColumnSizes();
       }
     }
@@ -501,7 +505,12 @@
     #region Helpers
     protected virtual void AdjustListViewColumnSizes() {
-      if (itemsListView.Items.Count > 0) {
-        for (int i = 0; i < itemsListView.Columns.Count; i++)
-          itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
+      if (itemsListView.Columns.Count == 1) {
+        if (itemsListView.Columns[0].Width != itemsListView.ClientSize.Width)
+          itemsListView.Columns[0].Width = itemsListView.ClientSize.Width;
+      } else {
+        if (itemsListView.Items.Count > 0) {
+          for (int i = 0; i < itemsListView.Columns.Count; i++)
+            itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
+        }
       }
     }
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/Plugin.cs.frame
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/Plugin.cs.frame	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/Plugin.cs.frame	(revision 17035)
@@ -35,4 +35,5 @@
   [PluginDependency("HeuristicLab.MainForm", "3.3")]
   [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabCoreViewsPlugin : PluginBase {
   }
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/CheckedItemCollection.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/CheckedItemCollection.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/CheckedItemCollection.cs	(revision 17035)
@@ -23,7 +23,7 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Collections;
 using HeuristicLab.Common;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -108,4 +108,21 @@
 
     /// <summary>
+    /// Sets the checked state of <paramref name="items"/> to <paramref name="checkedState"/>.
+    /// </summary>
+    /// <param name="items">The items to set the checked state for.</param>
+    /// <param name="checkedState">The new checked state of <paramref name="item"/></param>
+    public void SetItemCheckedState(IEnumerable<T> items, bool checkedState) {
+      var changed = new List<T>();
+      foreach (var item in items) {
+        if (!this.checkedState.TryGetValue(item, out bool currentState)) throw new ArgumentException();
+        if (currentState != checkedState) {
+          this.checkedState[item] = checkedState;
+          changed.Add(item);
+        }
+      }
+      if (changed.Count > 0) OnCheckedItemsChanged(changed);
+    }
+
+    /// <summary>
     /// Adds a new <paramref name="item"/> with the given <paramref name="checkedState"/>.
     /// </summary>
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/CheckedItemList.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/CheckedItemList.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/CheckedItemList.cs	(revision 17035)
@@ -23,7 +23,7 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Collections;
 using HeuristicLab.Common;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -111,12 +111,31 @@
     /// Sets the checked state of <paramref name="item"/> to <paramref name="checkedState"/>.
     /// </summary>
+    /// <remarks>
+    /// This method is slower than <see cref="SetItemCheckedState(int, bool)"/>.
+    /// </remarks>
     /// <param name="item">The item to set the checked state for.</param>
     /// <param name="checkedState">The new checked state of <paramref name="item"/></param>
     public void SetItemCheckedState(T item, bool checkedState) {
-      if (!this.checkedState.ContainsKey(item)) throw new ArgumentException();
-      if (this.checkedState[item] != checkedState) {
-        this.checkedState[item] = checkedState;
-        OnCheckedItemsChanged(new IndexedItem<T>[] { new IndexedItem<T>(IndexOf(item), item) });
-      }
+      SetItemCheckedState(IndexOf(item), checkedState);
+    }
+
+    /// <summary>
+    /// Sets the checked state of <paramref name="items"/> to <paramref name="checkedState"/>.
+    /// </summary>
+    /// <remarks>
+    /// This method is slower than <see cref="SetItemCheckedState(IEnumerable{int}, bool)"/>.
+    /// </remarks>
+    /// <param name="items">The items to set the checked state for.</param>
+    /// <param name="checkedState">The new checked state of <paramref name="item"/></param>
+    public void SetItemCheckedState(IEnumerable<T> items, bool checkedState) {
+      var changed = new List<IndexedItem<T>>();
+      foreach (var item in items) {
+        if (!this.checkedState.TryGetValue(item, out bool currentState)) throw new ArgumentException();
+        if (currentState != checkedState) {
+          this.checkedState[item] = checkedState;
+          changed.Add(new IndexedItem<T>(IndexOf(item), item));
+        }
+      }
+      if (changed.Count > 0) OnCheckedItemsChanged(changed);
     }
 
@@ -127,5 +146,28 @@
     /// <param name="checkedState">The new checked state of the item.</param>
     public void SetItemCheckedState(int itemIndex, bool checkedState) {
-      SetItemCheckedState(this[itemIndex], checkedState);
+      var item = list[itemIndex];
+      if (!this.checkedState.TryGetValue(item, out bool currentState)) throw new ArgumentException();
+      if (currentState != checkedState) {
+        this.checkedState[item] = checkedState;
+        OnCheckedItemsChanged(new IndexedItem<T>[] { new IndexedItem<T>(itemIndex, item) });
+      }
+    }
+
+    /// <summary>
+    /// Sets the checked state of all <paramref name="itemIndices"/> to <paramref name="checkedState"/>.
+    /// </summary>
+    /// <param name="itemIndices">The indices of all items to set the checked state for.</param>
+    /// <param name="checkedState">The new checked state of the item.</param>
+    public void SetItemCheckedState(IEnumerable<int> itemIndices, bool checkedState) {
+      var changed = new List<IndexedItem<T>>();
+      foreach (var index in itemIndices) {
+        var item = list[index];
+        if (!this.checkedState.TryGetValue(item, out bool currentState)) throw new ArgumentException();
+        if (currentState != checkedState) {
+          this.checkedState[item] = checkedState;
+          changed.Add(new IndexedItem<T>(index, item));
+        }
+      }
+      if (changed.Count > 0) OnCheckedItemsChanged(changed);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemCollection.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemCollection.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemCollection.cs	(revision 17035)
@@ -22,7 +22,7 @@
 using System;
 using System.Collections.Generic;
+using HEAL.Attic;
 using HeuristicLab.Collections;
 using HeuristicLab.Common;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -75,4 +75,8 @@
     }
 
+    public void SetItemCheckedState(IEnumerable<T> items, bool checkedState) {
+      CheckedItemCollection.SetItemCheckedState(items, checkedState);
+    }
+
     public void Add(T item, bool checkedState) {
       throw new NotSupportedException();
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemList.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemList.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemList.cs	(revision 17035)
@@ -22,7 +22,7 @@
 using System;
 using System.Collections.Generic;
+using HEAL.Attic;
 using HeuristicLab.Collections;
 using HeuristicLab.Common;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -72,6 +72,22 @@
     }
 
+    public bool ItemChecked(int itemIndex) {
+      return CheckedItemList.ItemChecked(itemIndex);
+    }
+
     public void SetItemCheckedState(T item, bool checkedState) {
       CheckedItemList.SetItemCheckedState(item, checkedState);
+    }
+
+    public void SetItemCheckedState(IEnumerable<T> items, bool checkedState) {
+      CheckedItemList.SetItemCheckedState(items, checkedState);
+    }
+
+    public void SetItemCheckedState(int itemIndex, bool checkedState) {
+      CheckedItemList.SetItemCheckedState(itemIndex, checkedState);
+    }
+
+    public void SetItemCheckedState(IEnumerable<int> itemIndices, bool checkedState) {
+      CheckedItemList.SetItemCheckedState(itemIndices, checkedState);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Interfaces/ICheckedItemCollection.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Interfaces/ICheckedItemCollection.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Interfaces/ICheckedItemCollection.cs	(revision 17035)
@@ -21,6 +21,6 @@
 
 using System.Collections.Generic;
+using HEAL.Attic;
 using HeuristicLab.Collections;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -31,4 +31,5 @@
     bool ItemChecked(T item);
     void SetItemCheckedState(T item, bool checkedState);
+    void SetItemCheckedState(IEnumerable<T> item, bool checkedState);
     void Add(T item, bool checkedState);
   }
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Interfaces/ICheckedItemList.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Interfaces/ICheckedItemList.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core/3.3/Interfaces/ICheckedItemList.cs	(revision 17035)
@@ -21,6 +21,6 @@
 
 using System.Collections.Generic;
+using HEAL.Attic;
 using HeuristicLab.Collections;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -30,5 +30,9 @@
     IEnumerable<IndexedItem<T>> CheckedItems { get; }
     bool ItemChecked(T item);
+    bool ItemChecked(int itemIndex);
     void SetItemCheckedState(T item, bool checkedState);
+    void SetItemCheckedState(IEnumerable<T> items, bool checkedState);
+    void SetItemCheckedState(int itemIndex, bool checkedState);
+    void SetItemCheckedState(IEnumerable<int> itemIndices, bool checkedState);
     void Add(T item, bool checkedState);
     void Insert(int index, T item, bool checkedState);
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Grammars/SymbolicExpressionGrammarBase.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Grammars/SymbolicExpressionGrammarBase.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Grammars/SymbolicExpressionGrammarBase.cs	(revision 17035)
@@ -23,7 +23,7 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HEAL.Attic;
 
 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding {
@@ -38,32 +38,30 @@
 
     #region properties for separation between implementation and persistence
-    private List<Action> afterDeserializationActions = new List<Action>();
+    private IEnumerable<ISymbol> storableSymbols;
     [Storable(Name = "Symbols")]
     private IEnumerable<ISymbol> StorableSymbols {
       get { return symbols.Values.ToArray(); }
-      set { afterDeserializationActions.Add(() => { foreach (var s in value) symbols.Add(s.Name, s); }); }
-    }
-
+      set { storableSymbols = value; }
+    }
+
+    private IEnumerable<KeyValuePair<ISymbol, Tuple<int, int>>> storableSymbolSubtreeCount;
     [Storable(Name = "SymbolSubtreeCount")]
     private IEnumerable<KeyValuePair<ISymbol, Tuple<int, int>>> StorableSymbolSubtreeCount {
       get { return symbolSubtreeCount.Select(x => new KeyValuePair<ISymbol, Tuple<int, int>>(GetSymbol(x.Key), x.Value)).ToArray(); }
-      set { afterDeserializationActions.Add(() => { foreach (var pair in value) symbolSubtreeCount.Add(pair.Key.Name, pair.Value); }); }
-    }
-
+      set { storableSymbolSubtreeCount = value; }
+    }
+
+    private IEnumerable<KeyValuePair<ISymbol, IEnumerable<ISymbol>>> storableAllowedChildSymbols;
     [Storable(Name = "AllowedChildSymbols")]
     private IEnumerable<KeyValuePair<ISymbol, IEnumerable<ISymbol>>> StorableAllowedChildSymbols {
       get { return allowedChildSymbols.Select(x => new KeyValuePair<ISymbol, IEnumerable<ISymbol>>(GetSymbol(x.Key), x.Value.Select(GetSymbol).ToArray())).ToArray(); }
-      set { afterDeserializationActions.Add(() => { foreach (var pair in value) allowedChildSymbols.Add(pair.Key.Name, pair.Value.Select(y => y.Name).ToList()); }); }
-    }
-
+      set { storableAllowedChildSymbols = value; }
+    }
+
+    private IEnumerable<KeyValuePair<Tuple<ISymbol, int>, IEnumerable<ISymbol>>> storableAllowedChildSymbolsPerIndex;
     [Storable(Name = "AllowedChildSymbolsPerIndex")]
     private IEnumerable<KeyValuePair<Tuple<ISymbol, int>, IEnumerable<ISymbol>>> StorableAllowedChildSymbolsPerIndex {
       get { return allowedChildSymbolsPerIndex.Select(x => new KeyValuePair<Tuple<ISymbol, int>, IEnumerable<ISymbol>>(Tuple.Create(GetSymbol(x.Key.Item1), x.Key.Item2), x.Value.Select(GetSymbol).ToArray())).ToArray(); }
-      set {
-        afterDeserializationActions.Add(() => {
-          foreach (var pair in value)
-            allowedChildSymbolsPerIndex.Add(Tuple.Create(pair.Key.Item1.Name, pair.Key.Item2), pair.Value.Select(y => y.Name).ToList());
-        });
-      }
+      set { storableAllowedChildSymbolsPerIndex = value; }
     }
     #endregion
@@ -91,4 +89,18 @@
 
       suppressEvents = false;
+    }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      foreach (var s in storableSymbols) symbols.Add(s.Name, s);
+      foreach (var pair in storableSymbolSubtreeCount) symbolSubtreeCount.Add(pair.Key.Name, pair.Value);
+      foreach (var pair in storableAllowedChildSymbols) allowedChildSymbols.Add(pair.Key.Name, pair.Value.Select(y => y.Name).ToList());
+      foreach (var pair in storableAllowedChildSymbolsPerIndex)
+        allowedChildSymbolsPerIndex.Add(Tuple.Create(pair.Key.Item1.Name, pair.Key.Item2), pair.Value.Select(y => y.Name).ToList());
+
+      storableSymbols = null;
+      storableSymbolSubtreeCount = null;
+      storableAllowedChildSymbols = null;
+      storableAllowedChildSymbolsPerIndex = null;
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.ExtLibs/HeuristicLab.Attic/1.0.0/HeuristicLab.Attic.csproj
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.ExtLibs/HeuristicLab.Attic/1.0.0/HeuristicLab.Attic.csproj	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.ExtLibs/HeuristicLab.Attic/1.0.0/HeuristicLab.Attic.csproj	(revision 17035)
@@ -61,5 +61,5 @@
   <ItemGroup>
     <PackageReference Include="HEAL.Attic">
-      <Version>1.0.0</Version>
+      <Version>1.1.0</Version>
     </PackageReference>
   </ItemGroup>
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Optimizer/3.3/Plugin.cs.frame
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Optimizer/3.3/Plugin.cs.frame	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Optimizer/3.3/Plugin.cs.frame	(revision 17035)
@@ -30,4 +30,5 @@
   [Plugin("HeuristicLab.Optimizer", "3.3.15.$WCREV$")]
   [PluginFile("HeuristicLab.Optimizer-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Attic", "1.0")]
   [PluginDependency("HeuristicLab.Clients.Access", "3.3")]
   [PluginDependency("HeuristicLab.Clients.Common", "3.3")]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Optimizer/3.3/StartPage.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Optimizer/3.3/StartPage.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Optimizer/3.3/StartPage.cs	(revision 17035)
@@ -23,8 +23,10 @@
 using System.Collections.Generic;
 using System.IO;
+using System.IO.Compression;
 using System.Linq;
 using System.Reflection;
 using System.Threading;
 using System.Windows.Forms;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -116,15 +118,10 @@
 
     private void LoadSample(string name, Assembly assembly, ListViewGroup group, int count) {
-      string path = Path.GetTempFileName();
-      try {
-        using (var stream = assembly.GetManifestResourceStream(name)) {
-          WriteStreamToTempFile(stream, path); // create a file in a temporary folder (persistence cannot load these files directly from the stream)
-          var item = (INamedItem)ContentManager.Load(path);
+      using (var stream = assembly.GetManifestResourceStream(name)) {
+        var serializer = new ProtoBufSerializer();
+        // TODO remove deflateStream with next release of HEAL.Attic
+        using (var deflateStream = new DeflateStream(stream, CompressionMode.Decompress, true)) {
+          var item = (NamedItem)serializer.Deserialize(deflateStream, false);
           OnSampleLoaded(item, group, 1.0 / count);
-        }
-      } catch (Exception) {
-      } finally {
-        if (File.Exists(path)) {
-          File.Delete(path); // make sure we remove the temporary file
         }
       }
@@ -198,12 +195,4 @@
       Properties.Settings.Default.Save();
     }
-
-    #region Helpers
-    private void WriteStreamToTempFile(Stream stream, string path) {
-      using (FileStream output = new FileStream(path, FileMode.Create, FileAccess.Write)) {
-        stream.CopyTo(output);
-      }
-    }
-    #endregion
   }
 }
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs	(revision 17035)
@@ -436,5 +436,5 @@
             il.Emit(System.Reflection.Emit.OpCodes.Mul); // x2*x2
             il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, 1.0);
-            il.Emit(System.Reflection.Emit.OpCodes.Mul); // 1+x2*x2
+            il.Emit(System.Reflection.Emit.OpCodes.Add); // 1+x2*x2
             il.Emit(System.Reflection.Emit.OpCodes.Call, sqrt);
             il.Emit(System.Reflection.Emit.OpCodes.Div);
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/CollectObjectGraphTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/CollectObjectGraphTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/CollectObjectGraphTest.cs	(revision 17035)
@@ -25,8 +25,8 @@
 using System.Linq;
 using System.Threading.Tasks;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
 using HeuristicLab.Common;
 using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.TestFunctions;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -35,4 +35,5 @@
   [TestClass]
   public class CollectObjectGraphTest {
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     private TestContext testContextInstance;
@@ -48,5 +49,5 @@
     [TestProperty("Time", "medium")]
     public void TestObjectGraphTraversal() {
-      GeneticAlgorithm ga = (GeneticAlgorithm)XmlParser.Deserialize(@"Test Resources\GA_SymbReg.hl");
+      GeneticAlgorithm ga = (GeneticAlgorithm)serializer.Deserialize(@"Test Resources\GA_SymbReg.hl");
       var objects = ga.GetObjectGraphObjects().ToList();
 
@@ -60,5 +61,5 @@
     [TestProperty("Time", "medium")]
     public void CollectGASample() {
-      GeneticAlgorithm ga = (GeneticAlgorithm)XmlParser.Deserialize(@"Test Resources\GA_SymbReg.hl");
+      GeneticAlgorithm ga = (GeneticAlgorithm)serializer.Deserialize(@"Test Resources\GA_SymbReg.hl");
 
       Stopwatch watch = new Stopwatch();
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/DeepCloneableCloningTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/DeepCloneableCloningTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/DeepCloneableCloningTest.cs	(revision 17035)
@@ -23,9 +23,9 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
 using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.PluginInfrastructure;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -34,4 +34,6 @@
   [TestClass]
   public class DeepCloneableCloningTest {
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     private TestContext testContextInstance;
     public TestContext TestContext {
@@ -66,5 +68,5 @@
     [TestProperty("Time", "long")]
     public void TestCloningFinishedExperiment() {
-      Experiment experiment = (Experiment)XmlParser.Deserialize(@"Test Resources\SamplesExperimentFinished.hl");
+      Experiment experiment = (Experiment)serializer.Deserialize(@"Test Resources\SamplesExperimentFinished.hl");
 
       Experiment clone = (Experiment)experiment.Clone(new Cloner());
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/GeneticAlgorithmTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/GeneticAlgorithmTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/GeneticAlgorithmTest.cs	(revision 17035)
@@ -21,8 +21,8 @@
 
 using System;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
 using HeuristicLab.Common;
 using HeuristicLab.Data;
-using HeuristicLab.Persistence.Default.Xml;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 
@@ -30,4 +30,5 @@
   [TestClass]
   public class GeneticAlgorithmTest {
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
     public GeneticAlgorithmTest() { }
 
@@ -45,5 +46,5 @@
     public void GeneticAlgorithmPerformanceTest() {
       ex = null;
-      GeneticAlgorithm ga = (GeneticAlgorithm)XmlParser.Deserialize(@"Test Resources\GA_TSP.hl");
+      GeneticAlgorithm ga = (GeneticAlgorithm)serializer.Deserialize(@"Test Resources\GA_TSP.hl");
       ga.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(ga_ExceptionOccurred);
       ga.SetSeedRandomly.Value = false;
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/AlpsSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/AlpsSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/AlpsSampleTest.cs	(revision 17035)
@@ -22,8 +22,8 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.ALPS;
 using HeuristicLab.Encodings.PermutationEncoding;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Problems.DataAnalysis.Symbolic.Regression;
@@ -40,4 +40,6 @@
     private const string SymRegSampleFileName = "ALPSGP_SymReg";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -46,5 +48,5 @@
       var alpsGa = CreateAlpsGaTspSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, TspSampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(alpsGa, path);
+      serializer.Serialize(alpsGa, path);
     }
 
@@ -55,5 +57,5 @@
       var alpsGa = CreateAlpsGaSymRegSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SymRegSampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(alpsGa, path);
+      serializer.Serialize(alpsGa, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/EsGriewankSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/EsGriewankSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/EsGriewankSampleTest.cs	(revision 17035)
@@ -21,8 +21,8 @@
 
 using System.IO;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.EvolutionStrategy;
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.RealVectorEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.TestFunctions;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -33,4 +33,6 @@
     private const string SampleFileName = "ES_Griewank";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -39,5 +41,5 @@
       var es = CreateEsGriewankSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(es, path);
+      serializer.Serialize(es, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GABppSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GABppSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GABppSampleTest.cs	(revision 17035)
@@ -21,8 +21,7 @@
 
 using System.IO;
-using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
 using HeuristicLab.Encodings.PermutationEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.BinPacking3D;
 using HeuristicLab.Selection;
@@ -34,4 +33,6 @@
     private const string SampleFileName = "GA_BPP";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -40,5 +41,5 @@
       var ga = CreateGaBppSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ga, path);
+      serializer.Serialize(ga, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GAGroupingProblemSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GAGroupingProblemSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GAGroupingProblemSampleTest.cs	(revision 17035)
@@ -21,7 +21,7 @@
 
 using System.IO;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
 using HeuristicLab.Encodings.LinearLinkageEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.Programmable;
 using HeuristicLab.Selection;
@@ -32,4 +32,7 @@
   public class GAGroupingProblemSampleTest {
     private const string SampleFileName = "GA_Grouping";
+
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     #region Code
     private const string ProblemCode = @"
@@ -96,5 +99,5 @@
       var ga = CreateGaGroupingProblemSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ga, path);
+      serializer.Serialize(ga, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GATspSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GATspSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GATspSampleTest.cs	(revision 17035)
@@ -22,7 +22,7 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
 using HeuristicLab.Encodings.PermutationEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.Instances.TSPLIB;
 using HeuristicLab.Problems.TravelingSalesman;
@@ -35,4 +35,6 @@
     private const string SampleFileName = "GA_TSP";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -41,5 +43,5 @@
       var ga = CreateGaTspSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ga, path);
+      serializer.Serialize(ga, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GAVrpSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GAVrpSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GAVrpSampleTest.cs	(revision 17035)
@@ -22,6 +22,6 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.Instances;
 using HeuristicLab.Problems.Instances.VehicleRouting;
@@ -38,4 +38,6 @@
     private const string SampleFileName = "GA_VRP";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -44,5 +46,5 @@
       var ga = CreateGaVrpSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ga, path);
+      serializer.Serialize(ga, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPArtificialAntSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPArtificialAntSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPArtificialAntSampleTest.cs	(revision 17035)
@@ -22,7 +22,7 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.GeneticProgramming.ArtificialAnt;
 using HeuristicLab.Selection;
@@ -34,4 +34,6 @@
     private const string SampleFileName = "SGP_SantaFe";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -40,5 +42,5 @@
       var ga = CreateGpArtificialAntSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ga, path);
+      serializer.Serialize(ga, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPMultiplexerSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPMultiplexerSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPMultiplexerSampleTest.cs	(revision 17035)
@@ -21,7 +21,7 @@
 
 using System.IO;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Selection;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -32,4 +32,6 @@
     private const string SampleFileName = "GP_Multiplexer";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -38,5 +40,5 @@
       var ga = CreateGpMultiplexerSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ga, path);
+      serializer.Serialize(ga, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPRobocodeSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPRobocodeSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPRobocodeSampleTest.cs	(revision 17035)
@@ -22,8 +22,8 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.GeneticProgramming.Robocode;
 using HeuristicLab.Selection;
@@ -35,4 +35,6 @@
     private const string SampleFileName = "SGP_Robocode";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -41,5 +43,5 @@
       var ga = CreateGpRobocodeSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ga, path);
+      serializer.Serialize(ga, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPSymbolicClassificationSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPSymbolicClassificationSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPSymbolicClassificationSampleTest.cs	(revision 17035)
@@ -22,7 +22,7 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.DataAnalysis;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
@@ -37,4 +37,6 @@
     private const string SampleFileName = "SGP_SymbClass";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -43,5 +45,5 @@
       var ga = CreateGpSymbolicClassificationSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ga, path);
+      serializer .Serialize(ga, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPSymbolicRegressionSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPSymbolicRegressionSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPSymbolicRegressionSampleTest.cs	(revision 17035)
@@ -22,7 +22,7 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.DataAnalysis;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
@@ -37,4 +37,6 @@
     private const string SampleFileName = "SGP_SymbReg";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -43,5 +45,5 @@
       var ga = CreateGpSymbolicRegressionSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ga, path);
+      serializer.Serialize(ga, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPSymbolicRegressionSampleWithOSTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPSymbolicRegressionSampleWithOSTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPSymbolicRegressionSampleWithOSTest.cs	(revision 17035)
@@ -24,7 +24,7 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.DataAnalysis;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
@@ -40,4 +40,6 @@
     private const int seed = 12345;
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -46,5 +48,5 @@
       var osga = CreateGpSymbolicRegressionSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(osga, path);
+      serializer.Serialize(osga, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPTimeSeriesSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPTimeSeriesSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPTimeSeriesSampleTest.cs	(revision 17035)
@@ -21,7 +21,7 @@
 
 using System.IO;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis;
@@ -34,4 +34,6 @@
     private const string SampleFileName = "OSGP_TimeSeries";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -40,5 +42,5 @@
       var ga = CreateGpTimeSeriesSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ga, path);
+      serializer.Serialize(ga, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GaussianProcessRegressionSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GaussianProcessRegressionSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GaussianProcessRegressionSampleTest.cs	(revision 17035)
@@ -22,6 +22,6 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.DataAnalysis;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.DataAnalysis;
 using HeuristicLab.Problems.Instances.DataAnalysis;
@@ -33,4 +33,6 @@
     private const string SampleFileName = "GPR";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Samples.Create")]
@@ -39,5 +41,5 @@
       var gpr = CreateGaussianProcessRegressionSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(gpr, path);
+      serializer.Serialize(gpr, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GeSymbolicRegressionSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GeSymbolicRegressionSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GeSymbolicRegressionSampleTest.cs	(revision 17035)
@@ -22,6 +22,6 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Problems.Instances.DataAnalysis;
@@ -32,4 +32,7 @@
   [TestClass]
   public class GeSymbolicRegressionSampleTest {
+
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     #region artificial ant
     private const string GeArtificialAntSampleFileName = "GE_ArtificialAnt";
@@ -41,5 +44,5 @@
       var geaa = CreateGeArtificialAntSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, GeArtificialAntSampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(geaa, path);
+      serializer.Serialize(geaa, path);
     }
 
@@ -80,5 +83,5 @@
       var geSymbReg = CreateGeSymbolicRegressionSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, GeSymbolicRegressionSampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(geSymbReg, path);
+      serializer.Serialize(geSymbReg, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/IslandGaTspSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/IslandGaTspSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/IslandGaTspSampleTest.cs	(revision 17035)
@@ -22,8 +22,8 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
 using HeuristicLab.Encodings.PermutationEncoding;
 using HeuristicLab.Optimization.Operators;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.Instances.TSPLIB;
 using HeuristicLab.Problems.TravelingSalesman;
@@ -35,4 +35,5 @@
   public class UnitTest1 {
     private const string SampleFileName = "IslandGA_TSP";
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     [TestMethod]
@@ -42,5 +43,5 @@
       var ga = CreateIslandGaTspSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ga, path);
+      serializer.Serialize(ga, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/LocalSearchKnapsackSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/LocalSearchKnapsackSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/LocalSearchKnapsackSampleTest.cs	(revision 17035)
@@ -22,8 +22,8 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.LocalSearch;
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.BinaryVectorEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.Knapsack;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -33,4 +33,5 @@
   public class LocalSearchKnapsackSampleTest {
     private const string SampleFileName = "LS_Knapsack";
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     [TestMethod]
@@ -40,5 +41,5 @@
       var ls = CreateLocalSearchKnapsackSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ls, path);
+      serializer.Serialize(ls, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/OSESGriewankSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/OSESGriewankSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/OSESGriewankSampleTest.cs	(revision 17035)
@@ -21,9 +21,8 @@
 
 using System.IO;
-using HeuristicLab.Algorithms.EvolutionStrategy;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy;
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.RealVectorEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.TestFunctions;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -33,4 +32,5 @@
   public class OSESGriewankSampleTest {
     private const string SampleFileName = "OSES_Griewank";
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     [TestMethod]
@@ -40,5 +40,5 @@
       var es = CreateOSESGriewankSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(es, path);
+      serializer.Serialize(es, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/PsoRastriginSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/PsoRastriginSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/PsoRastriginSampleTest.cs	(revision 17035)
@@ -23,7 +23,7 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.ParticleSwarmOptimization;
 using HeuristicLab.Encodings.RealVectorEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.TestFunctions;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -33,4 +33,5 @@
   public class PsoRastriginSampleTest {
     private const string SampleFileName = "PSO_Rastrigin";
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     [TestMethod]
@@ -40,5 +41,5 @@
       var pso = CreatePsoRastriginSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(pso, path);
+      serializer.Serialize(pso, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/RAPGASchedulingSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/RAPGASchedulingSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/RAPGASchedulingSampleTest.cs	(revision 17035)
@@ -22,7 +22,7 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.RAPGA;
 using HeuristicLab.Encodings.ScheduleEncoding.JobSequenceMatrix;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.Scheduling;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -32,4 +32,5 @@
   public class RAPGASchedulingSampleTest {
     private const string SampleFileName = "RAPGA_JSSP";
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     [TestMethod]
@@ -39,5 +40,5 @@
       var ss = CreateRAPGASchedulingSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ss, path);
+      serializer.Serialize(ss, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/ScatterSearchVRPSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/ScatterSearchVRPSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/ScatterSearchVRPSampleTest.cs	(revision 17035)
@@ -22,6 +22,6 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.ScatterSearch;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.Instances.VehicleRouting;
 using HeuristicLab.Problems.VehicleRouting;
@@ -32,4 +32,5 @@
   public class ScatterSearchVRPSampleTest {
     private const string SampleFileName = "SS_VRP";
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     [TestMethod]
@@ -39,5 +40,5 @@
       var ss = CreateScatterSearchVRPSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ss, path);
+      serializer.Serialize(ss, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/SimulatedAnnealingRastriginSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/SimulatedAnnealingRastriginSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/SimulatedAnnealingRastriginSampleTest.cs	(revision 17035)
@@ -22,9 +22,9 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.SimulatedAnnealing;
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.RealVectorEncoding;
 using HeuristicLab.Optimization.Operators;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.TestFunctions;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -34,4 +34,5 @@
   public class SimulatedAnnealingRastriginSampleTest {
     private const string SampleFileName = "SA_Rastrigin";
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     [TestMethod]
@@ -41,5 +42,5 @@
       var sa = CreateSimulatedAnnealingRastriginSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(sa, path);
+      serializer.Serialize(sa, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/TabuSearchTspSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/TabuSearchTspSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/TabuSearchTspSampleTest.cs	(revision 17035)
@@ -22,7 +22,7 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.TabuSearch;
 using HeuristicLab.Encodings.PermutationEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.Instances.TSPLIB;
 using HeuristicLab.Problems.TravelingSalesman;
@@ -33,4 +33,5 @@
   public class TabuSearchTspSampleTest {
     private const string SampleFileName = "TS_TSP";
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     [TestMethod]
@@ -40,5 +41,5 @@
       var ts = CreateTabuSearchTspSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(ts, path);
+      serializer.Serialize(ts, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/TabuSearchVRPSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/TabuSearchVRPSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/TabuSearchVRPSampleTest.cs	(revision 17035)
@@ -22,6 +22,6 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.TabuSearch;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.Instances.VehicleRouting;
 using HeuristicLab.Problems.VehicleRouting;
@@ -33,4 +33,5 @@
   public class TabuSearchVRPSampleTest {
     private const string SampleFileName = "TS_VRP";
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     [TestMethod]
@@ -40,5 +41,5 @@
       var vrp = CreateTabuSearchVrpSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(vrp, path);
+      serializer.Serialize(vrp, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/VnsOpSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/VnsOpSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/VnsOpSampleTest.cs	(revision 17035)
@@ -22,8 +22,8 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.VariableNeighborhoodSearch;
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.IntegerVectorEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.Orienteering;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -33,4 +33,5 @@
   public class VnsOpSampleTest {
     private const string SampleFileName = "VNS_OP";
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     [TestMethod]
@@ -40,5 +41,5 @@
       var vns = CreateVnsOpSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(vns, path);
+      serializer.Serialize(vns, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/VnsTspSampleTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/VnsTspSampleTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/Samples/VnsTspSampleTest.cs	(revision 17035)
@@ -22,9 +22,9 @@
 using System.IO;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Algorithms.LocalSearch;
 using HeuristicLab.Algorithms.VariableNeighborhoodSearch;
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.PermutationEncoding;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Problems.TravelingSalesman;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -34,4 +34,5 @@
   public class VnsTspSampleTest {
     private const string SampleFileName = "VNS_TSP";
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
 
     [TestMethod]
@@ -41,5 +42,5 @@
       var vns = CreateVnsTspSample();
       string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
-      XmlGenerator.Serialize(vns, path);
+      serializer.Serialize(vns, path);
     }
     [TestMethod]
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/StorableTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/StorableTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab-3.3/StorableTest.cs	(revision 17035)
@@ -27,5 +27,4 @@
 using HEAL.Attic;
 using HeuristicLab.Common;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.PluginInfrastructure;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Algorithms.DataAnalysis-3.4/GradientBoostingTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Algorithms.DataAnalysis-3.4/GradientBoostingTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Algorithms.DataAnalysis-3.4/GradientBoostingTest.cs	(revision 17035)
@@ -237,5 +237,5 @@
       gbt.Iterations = 5000;
       gbt.MaxSize = 20;
-      gbt.CreateSolution = false;
+      gbt.ModelCreation = GradientBoostedTrees.ModelCreation.QualityOnly;
       #endregion
 
@@ -265,5 +265,5 @@
       gbt.Nu = 0.02;
       gbt.LossFunctionParameter.Value = gbt.LossFunctionParameter.ValidValues.First(l => l.ToString().Contains("Absolute"));
-      gbt.CreateSolution = false;
+      gbt.ModelCreation = GradientBoostedTrees.ModelCreation.QualityOnly;
       #endregion
 
@@ -293,5 +293,5 @@
       gbt.Nu = 0.005;
       gbt.LossFunctionParameter.Value = gbt.LossFunctionParameter.ValidValues.First(l => l.ToString().Contains("Relative"));
-      gbt.CreateSolution = false;
+      gbt.ModelCreation = GradientBoostedTrees.ModelCreation.QualityOnly;
       #endregion
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Persistence.Attic/PersistenceConsistencyChecks.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Persistence.Attic/PersistenceConsistencyChecks.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Persistence.Attic/PersistenceConsistencyChecks.cs	(revision 17035)
@@ -3,5 +3,4 @@
 using System.Linq;
 using HEAL.Attic;
-using HeuristicLab.PluginInfrastructure;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 
@@ -15,8 +14,8 @@
     public void CheckDuplicateGUIDs() {
       // easy to produce duplicate GUIDs with copy&paste
-
       var dict = new Dictionary<Guid, string>();
       var duplicates = new Dictionary<string, string>();
-      foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(object))) {
+      // using AppDomain instead of ApplicationManager so that NonDiscoverableTypes are also checked
+      foreach (Type type in AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes())) {
         var attr = StorableTypeAttribute.GetStorableTypeAttribute(type);
         if (attr == null)
@@ -35,4 +34,5 @@
         Console.WriteLine($"{kvp.Key} has same GUID as {kvp.Value}");
       }
+
       if (duplicates.Any()) Assert.Fail("Duplicate GUIDs found.");
     }
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Persistence.Attic/UseCases.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Persistence.Attic/UseCases.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Persistence.Attic/UseCases.cs	(revision 17035)
@@ -276,5 +276,4 @@
       for (int i = 0; i < REPS; i++) {
         var original = XmlParser.Deserialize(fileName);
-        byte[] buf;
         System.GC.Collect();
         var collection0 = System.GC.CollectionCount(0);
@@ -336,5 +335,5 @@
       var serializer = new ProtoBufSerializer();
       foreach (var fileName in Directory.EnumerateFiles(path, "*.hl")) {
-        var original = XmlParser.Deserialize(fileName);
+        var original = serializer.Deserialize(fileName);
         var ok = true;
         foreach (var t in original.GetObjectGraphObjects().Select(o => o.GetType())) {
@@ -371,5 +370,5 @@
       var serializer = new ProtoBufSerializer();
       foreach (var fileName in Directory.EnumerateFiles(path, "*.hl")) {
-        var original = XmlParser.Deserialize(fileName);
+        var original = serializer.Deserialize(fileName);
 
         var exec = original as IExecutable;
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GAQAPScriptTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GAQAPScriptTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GAQAPScriptTest.cs	(revision 17035)
@@ -22,5 +22,5 @@
 using System.IO;
 using System.Linq;
-using HeuristicLab.Persistence.Default.Xml;
+using HEAL.Attic;
 using HeuristicLab.Problems.Instances.QAPLIB;
 using HeuristicLab.Problems.QuadraticAssignment;
@@ -37,4 +37,6 @@
     private const string BestQualityVariableName = "bestQuality";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Scripts.Create")]
@@ -43,5 +45,5 @@
       var script = CreateGAQAPScript();
       string path = Path.Combine(ScriptingUtils.ScriptsDirectory, ScriptFileName + ScriptingUtils.ScriptFileExtension);
-      XmlGenerator.Serialize(script, path);
+      serializer.Serialize(script, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GUIAutomationScriptTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GUIAutomationScriptTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GUIAutomationScriptTest.cs	(revision 17035)
@@ -21,5 +21,5 @@
 
 using System.IO;
-using HeuristicLab.Persistence.Default.Xml;
+using HEAL.Attic;
 using HeuristicLab.Scripting;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -32,4 +32,6 @@
     private const string ScriptItemDescription = "A script that runs a genetic algorithm on a traveling salesman problem with 5 different settings for population sizes and with 10 repetitions, then opens a bubble chart of the results and chooses the appropriate values for x and y axis automatically";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Scripts.Create")]
@@ -38,5 +40,5 @@
       var script = CreateGUIAutomationScript();
       string path = Path.Combine(ScriptingUtils.ScriptsDirectory, ScriptFileName + ScriptingUtils.ScriptFileExtension);
-      XmlGenerator.Serialize(script, path);
+      serializer.Serialize(script, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchRFClassificationScriptTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchRFClassificationScriptTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchRFClassificationScriptTest.cs	(revision 17035)
@@ -22,5 +22,5 @@
 using System.IO;
 using System.Linq;
-using HeuristicLab.Persistence.Default.Xml;
+using HEAL.Attic;
 using HeuristicLab.Problems.DataAnalysis;
 using HeuristicLab.Problems.Instances.DataAnalysis;
@@ -38,4 +38,6 @@
     private const string BestSolutionVariableName = "bestSolution";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Scripts.Create")]
@@ -44,5 +46,5 @@
       var script = CreateGridSearchRFClassificationScript();
       string path = Path.Combine(ScriptingUtils.ScriptsDirectory, ScriptFileName + ScriptingUtils.ScriptFileExtension);
-      XmlGenerator.Serialize(script, path);
+      serializer.Serialize(script, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchRFRegressionScriptTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchRFRegressionScriptTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchRFRegressionScriptTest.cs	(revision 17035)
@@ -22,5 +22,5 @@
 using System.IO;
 using System.Linq;
-using HeuristicLab.Persistence.Default.Xml;
+using HEAL.Attic;
 using HeuristicLab.Problems.DataAnalysis;
 using HeuristicLab.Problems.Instances.DataAnalysis;
@@ -38,4 +38,6 @@
     private const string BestSolutionVariableName = "bestSolution";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Scripts.Create")]
@@ -44,5 +46,5 @@
       var script = CreateGridSearchRFRegressionScript();
       string path = Path.Combine(ScriptingUtils.ScriptsDirectory, ScriptFileName + ScriptingUtils.ScriptFileExtension);
-      XmlGenerator.Serialize(script, path);
+      serializer.Serialize(script, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchSVMClassificationScriptTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchSVMClassificationScriptTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchSVMClassificationScriptTest.cs	(revision 17035)
@@ -22,5 +22,5 @@
 using System.IO;
 using System.Linq;
-using HeuristicLab.Persistence.Default.Xml;
+using HEAL.Attic;
 using HeuristicLab.Problems.DataAnalysis;
 using HeuristicLab.Problems.Instances.DataAnalysis;
@@ -38,4 +38,6 @@
     private const string BestSolutionVariableName = "bestSolution";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Scripts.Create")]
@@ -44,5 +46,5 @@
       var script = CreateGridSearchSVMClassificationScript();
       string path = Path.Combine(ScriptingUtils.ScriptsDirectory, ScriptFileName + ScriptingUtils.ScriptFileExtension);
-      XmlGenerator.Serialize(script, path);
+      serializer.Serialize(script, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchSVMRegressionScriptTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchSVMRegressionScriptTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/GridSearchSVMRegressionScriptTest.cs	(revision 17035)
@@ -22,5 +22,5 @@
 using System.IO;
 using System.Linq;
-using HeuristicLab.Persistence.Default.Xml;
+using HEAL.Attic;
 using HeuristicLab.Problems.DataAnalysis;
 using HeuristicLab.Problems.Instances.DataAnalysis;
@@ -38,4 +38,6 @@
     private const string BestSolutionVariableName = "bestSolution";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Scripts.Create")]
@@ -44,5 +46,5 @@
       var script = CreateGridSearchSVMRegressionScript();
       string path = Path.Combine(ScriptingUtils.ScriptsDirectory, ScriptFileName + ScriptingUtils.ScriptFileExtension);
-      XmlGenerator.Serialize(script, path);
+      serializer.Serialize(script, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/OSGARastriginScriptTest.cs
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/OSGARastriginScriptTest.cs	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/OSGARastriginScriptTest.cs	(revision 17035)
@@ -21,6 +21,6 @@
 
 using System.IO;
+using HEAL.Attic;
 using HeuristicLab.Data;
-using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Scripting;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -38,4 +38,6 @@
     private const string BestQualityVariableName = "bestFitness";
 
+    private static readonly ProtoBufSerializer serializer = new ProtoBufSerializer();
+
     [TestMethod]
     [TestCategory("Scripts.Create")]
@@ -44,5 +46,5 @@
       var script = CreateOSGARastriginScript();
       string path = Path.Combine(ScriptingUtils.ScriptsDirectory, ScriptFileName + ScriptingUtils.ScriptFileExtension);
-      XmlGenerator.Serialize(script, path);
+      serializer.Serialize(script, path);
     }
 
Index: /branches/2925_AutoDiffForDynamicalModels/Test.cmd
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/Test.cmd	(revision 17034)
+++ /branches/2925_AutoDiffForDynamicalModels/Test.cmd	(revision 17035)
@@ -1,32 +1,2 @@
 @ECHO OFF
-
-SET /P BUILDBEFORETEST=Should the test project be rebuilt [n]:
-
-SET TESTCATEGORY=%~1
-
-IF "%TESTCATEGORY%"=="" SET TESTCATEGORY=Essential
-SET /P USERCATEGORY=Which category do you want to run  [%TESTCATEGORY%]:
-IF "%USERCATEGORY%" NEQ "" SET TESTCATEGORY=%USERCATEGORY%
-
-set /P TESTPLATFORM=Which platform to run the tests [x64]:
-IF "%TESTPLATFORM%"=="" SET TESTPLATFORM=x64
-
-FOR /F "tokens=1,3 delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0"') DO (
-  IF "%%A"=="MSBuildToolsPath" SET MSBUILDPATH=%%B)
-
-IF "%BUILDBEFORETEST%" NEQ "" (
-  ECHO Building tests project ...
-  %MSBUILDPATH%msbuild.exe "HeuristicLab 3.3 Tests.sln" /target:Rebuild /p:Configuration="Debug",Platform="%TESTPLATFORM%" /m:2 /nologo /verbosity:q /clp:ErrorsOnly
-)
-
-ECHO Test starting for category %TESTCATEGORY%...
-
-FOR /F "tokens=1,2,* delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VS7"') DO (
-  IF "%%A"=="14.0" (SET VSPATH=%%C) & GOTO :run_tests
-  IF "%%A"=="12.0" (SET VSPATH=%%C) & GOTO :run_tests
-)
-
-:run_tests
-"%VSPATH%Common7\IDE\CommonExtensions\Microsoft\TestWindow\VSTest.Console.exe" bin\HeuristicLab.Tests.dll /Framework:framework40 /Platform:%TESTPLATFORM% /TestCaseFilter:"TestCategory=%TESTCATEGORY%"
-
-PAUSE
+powershell.exe .\Test.ps1
Index: /branches/2925_AutoDiffForDynamicalModels/Test.ps1
===================================================================
--- /branches/2925_AutoDiffForDynamicalModels/Test.ps1	(revision 17035)
+++ /branches/2925_AutoDiffForDynamicalModels/Test.ps1	(revision 17035)
@@ -0,0 +1,159 @@
+﻿# find ms build
+$programFilesX86Dir = ($Env:ProgramFiles, ${Env:ProgramFiles(x86)})[[bool]${Env:ProgramFiles(x86)}]
+$locations = @(
+  [System.IO.Path]::Combine($programFilesX86Dir, "Microsoft Visual Studio", "2017", "Enterprise")
+  [System.IO.Path]::Combine($programFilesX86Dir, "Microsoft Visual Studio", "2017", "Community")
+  [System.IO.Path]::Combine($programFilesX86Dir, "Microsoft Visual Studio", "2017", "BuildTools")
+)
+
+$vstestPath = $undefined
+Foreach ($loc in $locations) {
+  $vstestloc = [System.IO.Path]::Combine($loc, "Common7", "IDE", "CommonExtensions", "Microsoft", "TestWindow", "vstest.console.exe")
+  If([System.IO.File]::Exists($vstestloc)) {
+    $vstestPath = $vstestloc
+    Break;
+  }
+}
+
+If ($vstestPath -eq $undefined) {
+  "Could not locate vstest.console.exe, ABORTING ..."
+  Return
+}
+
+$testcontainer = "HeuristicLab.Tests.dll"
+$input = Read-Host "Which container to test? [$($testcontainer)]"
+$testcontainer = ($testcontainer, $input)[[bool]$input]
+
+$testplatform = "x64"
+$input = Read-Host "Which platform to run the tests? [$($testplatform)]"
+$testplatform = ($testplatform, $input)[[bool]$input]
+
+$testcategory = "Essential"
+$input = Read-Host "Which category do you want to run? [$($testcategory)]"
+$testcategory = ($testcategory, $input)[[bool]$input]
+
+# query whether to build
+$input = Read-Host "Should the tests be rebuilt y/N?"
+$input = ([string]("n", $input)[[bool]$input]).ToLowerInvariant()
+$dobuild = $input -eq "y"
+
+If($dobuild) {
+
+  $msBuildPath = $undefined
+  Foreach ($loc in $locations) {
+    $msbuildloc64 = [System.IO.Path]::Combine($loc, "MSBuild", "15.0", "Bin", "amd64", "MSBuild.exe")
+    $msbuildloc32 = [System.IO.Path]::Combine($loc, "MSBuild", "15.0", "Bin", "MSBuild.exe")
+    If ([System.IO.File]::Exists($msbuildloc64)) {
+      $msBuildPath = $msbuildloc64
+      Break;
+    } ElseIf ([System.IO.File]::Exists($msbuildloc32)) {
+      $msBuildPath = $msbuildloc32
+      Break;
+    }
+  }
+  
+  If ($msBuildPath -eq $undefined) {
+    "Could not locate MSBuild, ABORTING ..."
+    Return
+  }
+
+  $curPath = $MyInvocation.MyCommand.Path
+  $curDir = Split-Path $curPath
+
+  $slnFiles = Get-ChildItem $curDir -Filter *Tests.sln
+
+  If ($slnFiles.Count -le 0) {
+    "No solutions found, ABORTING ..."
+    Return
+  }
+
+  $slnIndices = @()
+
+  If ($slnFiles.Count -eq 1) {
+    "Selecting the only solution found: `"{0}`"" -f $slnFiles[0].Name
+    $slnIndices += 0
+  } Else {
+    "Found the following solutions:"
+
+    ""
+
+    $slnFiles | % { $i = 0 } { ("  {0}. `"{1}`"" -f ($i + 1), $_.Name); $i++ }
+
+    ""
+
+    $success = $false
+
+    # query solution to build
+    $slnIndex = -1
+    Do {
+        $input = Read-Host "Which solution(s) to build? (e.g.: 1 2 3) { 1..$($slnFiles.Count) }"
+        $inputParts = $input -Split " "
+
+        Foreach ($part in $inputParts) {
+          If ($part -eq "") { Continue }
+
+          $success = [int]::TryParse($part, [ref]$slnIndex) -and ($slnIndex -gt 0) -and ($slnIndex -le $slnFiles.Count)
+
+          If ($success) {
+            $slnIndices += $slnIndex - 1
+          } Else {
+            $slnIndices = @()
+            Break
+          }
+        }
+    } While (-Not $success)
+
+    $slnIndices = $slnIndices | Select-Object -Unique
+  }
+
+
+  # query configuration to build
+  $config = "Release"
+  $input = Read-Host "Which configuration to build? [$($config)]"
+  $config = ($config, $input)[[bool]$input]
+
+  # query platform to build
+  $platform = "Any CPU"
+  $input = Read-Host "Which platform to build? [$($platform)]"
+  $platform = ($platform, $input)[[bool]$input]
+
+  # query clean desire
+  $clean = $false
+  Do {
+      $input = Read-Host "Would you like to clean before building? [y/N]"
+      $input = ([string]("n", $input)[[bool]$input]).ToLowerInvariant()
+      $success = $input -eq "n" -or ($clean = $input -eq "y")
+  } While (-Not $success)
+
+  ""
+
+  If ($clean) {
+    Foreach ($slnIndex in $slnIndices) {
+      $solution = $slnFiles[$slnIndex]
+      "Cleaning `"$($solution.Name)`" ..."
+      $args = @(
+        $solution.FullName,
+        "/t:Clean",
+        "/p:Configuration=`"$config`",Platform=`"$platform`"",
+        "/m", "/nologo", "/verbosity:q", "/clp:ErrorsOnly"
+      )
+      & $msBuildPath $args
+      "===== CLEAN FINISHED ====="
+    }
+  }
+
+  Foreach ($slnIndex in $slnIndices) {
+    $solution = $slnFiles[$slnIndex]
+    "Building `"$($solution.Name)`" ($config|$platform) ..."
+    $args = @(
+      $solution.FullName,
+      "/t:Restore,Build",
+      "/p:Configuration=`"$config`",Platform=`"$platform`"",
+      "/m", "/nologo", "/verbosity:q", "/clp:ErrorsOnly"
+    )
+    & $msBuildPath $args
+    "===== BUILD FINISHED ====="
+  }
+}
+
+& $vstestPath "bin\$testcontainer" /Framework:framework40 /Platform:$testplatform /TestCaseFilter:"TestCategory=$testcategory"
