Index: trunk/sources/HeuristicLab.Core/3.3/Cloner.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/Cloner.cs	(revision 3372)
+++ 	(revision )
@@ -1,63 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// A helper class which is used to create deep clones of object graphs.
-  /// </summary>
-  public sealed class Cloner {
-    private Dictionary<IDeepCloneable, IDeepCloneable> mapping;
-
-    /// <summary>
-    /// Creates a new Cloner instance.
-    /// </summary>
-    public Cloner() {
-      mapping = new Dictionary<IDeepCloneable, IDeepCloneable>(new ReferenceEqualityComparer<IDeepCloneable>());
-    }
-
-    /// <summary>
-    /// Creates a deep clone of a given deeply cloneable object.
-    /// </summary>
-    /// <param name="item">The object which should be cloned.</param>
-    /// <returns>A clone of the given object.</returns>
-    public IDeepCloneable Clone(IDeepCloneable obj) {
-      if (obj == null) return null;
-      IDeepCloneable clone;
-      if (mapping.TryGetValue(obj, out clone))
-        return clone;
-      else
-        return obj.Clone(this);
-    }
-    /// <summary>
-    /// Registers a new clone for a given deeply cloneable object.
-    /// </summary>
-    /// <param name="item">The original object.</param>
-    /// <param name="clone">The clone of the original object.</param>
-    public void RegisterClonedObject(IDeepCloneable item, IDeepCloneable clone) {
-      mapping.Add(item, clone);
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Core/3.3/DeepCloneable.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/DeepCloneable.cs	(revision 3372)
+++ 	(revision )
@@ -1,60 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// Represents a base class for all deeply cloneable objects.
-  /// </summary>
-  [StorableClass]
-  public abstract class DeepCloneable : IDeepCloneable {
-    protected DeepCloneable() { }
-    [StorableConstructor]
-    protected DeepCloneable(bool deserializing) { }
-
-    /// <summary>
-    /// Creates a deep clone of this instance.
-    /// </summary>
-    /// <remarks>
-    /// This method is the entry point for creating a deep clone of a whole object graph.
-    /// </remarks>
-    /// <returns>A clone of this instance.</returns>
-    public object Clone() {
-      return Clone(new Cloner());
-    }
-
-    /// <summary>
-    /// Creates a deep clone of this instance.
-    /// </summary>
-    /// <remarks>This method should not be called directly. It is used for creating clones of
-    /// objects which are contained in the object that is currently cloned.</remarks>
-    /// <param name="cloner">The cloner which is responsible for keeping track of all already
-    /// cloned objects.</param>
-    /// <returns>A clone of this instance.</returns>
-    public virtual IDeepCloneable Clone(Cloner cloner) {
-      DeepCloneable clone = (DeepCloneable)Activator.CreateInstance(this.GetType());
-      cloner.RegisterClonedObject(this, clone);
-      return clone;
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Core/3.3/Engine.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/Engine.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/Engine.cs	(revision 3376)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Threading;
+using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
Index: trunk/sources/HeuristicLab.Core/3.3/ExecutionContext.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/ExecutionContext.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/ExecutionContext.cs	(revision 3376)
@@ -22,9 +22,10 @@
 using System;
 using HeuristicLab.Collections;
+using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Core {
   [StorableClass]
-  public sealed class ExecutionContext : DeepCloneable, IExecutionContext, IAtomicOperation {
+  public sealed class ExecutionContext : IDeepCloneable, IExecutionContext, IAtomicOperation {
     [Storable]
     private IParameterizedItem parameterizedItem;
@@ -62,5 +63,8 @@
     }
 
-    public override IDeepCloneable Clone(Cloner cloner) {
+    public object Clone() {
+      return Clone(new Cloner());
+    }
+    public IDeepCloneable Clone(Cloner cloner) {
       ExecutionContext clone = new ExecutionContext();
       cloner.RegisterClonedObject(this, clone);
Index: trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 3376)
@@ -100,5 +100,4 @@
   <ItemGroup>
     <Compile Include="Attributes\ItemAttribute.cs" />
-    <Compile Include="Cloner.cs" />
     <Compile Include="Attributes\CreatableAttribute.cs" />
     <None Include="HeuristicLabCorePlugin.cs.frame" />
@@ -120,5 +119,4 @@
     <Compile Include="Interfaces\ILookupParameter.cs" />
     <Compile Include="ItemArray.cs" />
-    <Compile Include="DeepCloneable.cs" />
     <Compile Include="Engine.cs" />
     <Compile Include="Interfaces\IScope.cs" />
@@ -141,5 +139,4 @@
     <Compile Include="VariableCollection.cs" />
     <Compile Include="ScopeList.cs" />
-    <Compile Include="Interfaces\IDeepCloneable.cs" />
     <Compile Include="NamedItemCollection.cs" />
     <Compile Include="Interfaces\INamedItem.cs" />
Index: trunk/sources/HeuristicLab.Core/3.3/Interfaces/IDeepCloneable.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/Interfaces/IDeepCloneable.cs	(revision 3372)
+++ 	(revision )
@@ -1,34 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-
-namespace HeuristicLab.Core {
-  public interface IDeepCloneable : ICloneable {
-    /// <summary>
-    /// Creates a deep clone of this instance.
-    /// </summary>
-    /// <param name="cloner">The cloner which is responsible for keeping track of all already
-    /// cloned objects.</param>
-    /// <returns>A clone of this instance.</returns>
-    IDeepCloneable Clone(Cloner cloner);
-  }
-}
Index: trunk/sources/HeuristicLab.Core/3.3/Interfaces/IExecutionContext.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/Interfaces/IExecutionContext.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/Interfaces/IExecutionContext.cs	(revision 3376)
@@ -21,4 +21,5 @@
 
 using HeuristicLab.Collections;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Core {
Index: trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperation.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperation.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperation.cs	(revision 3376)
@@ -20,4 +20,6 @@
 #endregion
 
+using HeuristicLab.Common;
+
 namespace HeuristicLab.Core {
   /// <summary>
Index: trunk/sources/HeuristicLab.Core/3.3/Item.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/Item.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/Item.cs	(revision 3376)
@@ -22,4 +22,5 @@
 using System;
 using System.Drawing;
+using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -30,5 +31,5 @@
   [StorableClass]
   [Item("Item", "Base class for all HeuristicLab items.")]
-  public abstract class Item : DeepCloneable, IItem {
+  public abstract class Item : IDeepCloneable, IItem {
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -58,6 +59,17 @@
     }
     [StorableConstructor]
-    protected Item(bool deserializing) : base(deserializing) { }
+    protected Item(bool deserializing) { }
 
+
+    /// <summary>
+    /// Creates a deep clone of this instance.
+    /// </summary>
+    /// <remarks>
+    /// This method is the entry point for creating a deep clone of a whole object graph.
+    /// </remarks>
+    /// <returns>A clone of this instance.</returns>
+    public object Clone() {
+      return Clone(new Cloner());
+    }
 
     /// <summary>
@@ -66,6 +78,7 @@
     /// <param name="clonedObjects">Dictionary of all already cloned objects. (Needed to avoid cycles.)</param>
     /// <returns>The cloned object as <see cref="Variable"/>.</returns>
-    public override IDeepCloneable Clone(Cloner cloner) {
-      Item clone = (Item)base.Clone(cloner);
+    public virtual IDeepCloneable Clone(Cloner cloner) {
+      Item clone = (Item)Activator.CreateInstance(this.GetType());
+      cloner.RegisterClonedObject(this, clone);
       clone.readOnlyView = readOnlyView;
       return clone;
Index: trunk/sources/HeuristicLab.Core/3.3/ItemArray.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/ItemArray.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/ItemArray.cs	(revision 3376)
@@ -28,4 +28,5 @@
 using System.Drawing;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 using HeuristicLab.Common.Resources;
 using HeuristicLab.Collections;
Index: trunk/sources/HeuristicLab.Core/3.3/ItemCollection.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/ItemCollection.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/ItemCollection.cs	(revision 3376)
@@ -25,4 +25,5 @@
 using System.Linq;
 using HeuristicLab.Collections;
+using HeuristicLab.Common;
 using HeuristicLab.Common.Resources;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
Index: trunk/sources/HeuristicLab.Core/3.3/ItemList.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/ItemList.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/ItemList.cs	(revision 3376)
@@ -28,7 +28,7 @@
 using System.Drawing;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 using HeuristicLab.Common.Resources;
 using HeuristicLab.Collections;
-
 
 namespace HeuristicLab.Core {
Index: trunk/sources/HeuristicLab.Core/3.3/ItemSet.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/ItemSet.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/ItemSet.cs	(revision 3376)
@@ -28,7 +28,7 @@
 using System.Drawing;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 using HeuristicLab.Common.Resources;
 using HeuristicLab.Collections;
-
 
 namespace HeuristicLab.Core {
Index: trunk/sources/HeuristicLab.Core/3.3/OperationCollection.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/OperationCollection.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/OperationCollection.cs	(revision 3376)
@@ -20,11 +20,13 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Core {
   [StorableClass]
-  public sealed class OperationCollection : DeepCloneable, IList<IOperation>, IOperation {
+  public sealed class OperationCollection : IDeepCloneable, IList<IOperation>, IOperation {
     [Storable]
     private IList<IOperation> operations;
@@ -50,6 +52,10 @@
     }
 
-    public override IDeepCloneable Clone(Cloner cloner) {
-      OperationCollection clone = (OperationCollection)base.Clone(cloner);
+    public object Clone() {
+      return Clone(new Cloner());
+    }
+    public IDeepCloneable Clone(Cloner cloner) {
+      OperationCollection clone = (OperationCollection)Activator.CreateInstance(this.GetType());
+      cloner.RegisterClonedObject(this, clone);
       clone.operations = new List<IOperation>(this.Select(x => (IOperation)cloner.Clone(x)));
       clone.parallel = parallel;
Index: trunk/sources/HeuristicLab.Core/3.3/ParameterizedNamedItem.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/ParameterizedNamedItem.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/ParameterizedNamedItem.cs	(revision 3376)
@@ -23,4 +23,5 @@
 using System.Linq;
 using HeuristicLab.Collections;
+using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
Index: trunk/sources/HeuristicLab.Core/3.3/Scope.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/Scope.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/Scope.cs	(revision 3376)
@@ -21,4 +21,5 @@
 
 using HeuristicLab.Collections;
+using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
Index: trunk/sources/HeuristicLab.Core/3.3/ScopeList.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/ScopeList.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/ScopeList.cs	(revision 3376)
@@ -22,4 +22,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
Index: trunk/sources/HeuristicLab.Core/3.3/VariableCollection.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/VariableCollection.cs	(revision 3372)
+++ trunk/sources/HeuristicLab.Core/3.3/VariableCollection.cs	(revision 3376)
@@ -22,4 +22,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
