Index: branches/HeuristicLab.DebugEngine/CopyAssemblies.cmd
===================================================================
--- branches/HeuristicLab.DebugEngine/CopyAssemblies.cmd	(revision 4743)
+++ branches/HeuristicLab.DebugEngine/CopyAssemblies.cmd	(revision 4743)
@@ -0,0 +1,4 @@
+set target=C:\Program Files\HeuristicLab 3.3
+
+@echo Copying assemblies
+copy "HeuristicLab.DebugEngine-3.3.dll" "%target%"
Index: branches/HeuristicLab.DebugEngine/DebugEngine.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/DebugEngine.cs	(revision 4743)
+++ branches/HeuristicLab.DebugEngine/DebugEngine.cs	(revision 4743)
@@ -0,0 +1,86 @@
+﻿using System;
+using System.Collections.Generic;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.DebugEngine {
+
+  [StorableClass]
+  [Item("Debug Engine", "Engine for debugging algorithms.")]
+  public class DebugEngine : Engine {
+    private IOperator currentOperator;
+
+    [StorableConstructor]
+    protected DebugEngine(bool deserializing) : base(deserializing) { }
+    protected DebugEngine(DebugEngine original, Cloner cloner) : base(original, cloner) { }
+    public DebugEngine()
+      : base() {
+    }
+
+    public new Stack<IOperation> ExecutionStack {
+      get { return base.ExecutionStack; }
+    }
+
+    public IAtomicOperation CurrentOperation { get; private set; }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new DebugEngine(this, cloner);
+    }
+
+    /// <summary>
+    /// Deals with the next operation, if it is an <see cref="AtomicOperation"/> it is executed,
+    /// if it is a <see cref="CompositeOperation"/> its single operations are pushed on the execution stack.
+    /// </summary>
+    /// <remarks>If an error occurs during the execution the operation is aborted and the operation
+    /// is pushed on the stack again.<br/>
+    /// If the execution was successful <see cref="EngineBase.OnOperationExecuted"/> is called.</remarks>
+    protected override void ProcessNextOperation() {
+      currentOperator = null;
+      IOperation next = ExecutionStack.Pop();
+      OperationCollection coll = next as OperationCollection;
+      while (coll != null) {
+        for (int i = coll.Count - 1; i >= 0; i--) {
+          ExecutionStack.Push(coll[i]);
+        }
+        next = ExecutionStack.Count > 0 ? ExecutionStack.Pop() : null;
+        coll = next as OperationCollection;
+      }
+      IAtomicOperation operation = next as IAtomicOperation;
+      if (operation != null) {
+        try {
+          currentOperator = operation.Operator;
+          CurrentOperation = operation;
+          if (operation.Operator.Breakpoint) {
+            Log.LogMessage(string.Format("Breakpoint: Before {0}", operation.Operator.Name != string.Empty ? operation.Operator.Name : operation.Operator.ItemName));
+            Pause();
+          }
+          ExecutionStack.Push(operation.Operator.Execute((IExecutionContext)operation));
+        } catch (Exception ex) {
+          OnExceptionOccurred(new OperatorExecutionException(operation.Operator, ex));
+          Pause();
+        }
+      } else {
+        CurrentOperation = null;
+      }
+    }
+
+    public override void Pause() {
+      base.Pause();
+      if (currentOperator != null) currentOperator.Abort();
+    }
+    public override void Stop() {
+      base.Stop();
+      if (currentOperator != null) currentOperator.Abort();
+    }
+
+    public virtual void Step() {
+      OnStarted();
+      var lastUpdateTime = DateTime.Now;
+      if (ExecutionStack.Count > 0)
+        ProcessNextOperation();
+      ExecutionTime += DateTime.Now - lastUpdateTime;
+      OnPaused();
+    }
+  }
+}
Index: branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs	(revision 4743)
+++ branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs	(revision 4743)
@@ -0,0 +1,214 @@
+﻿namespace HeuristicLab.DebugEngine {
+  partial class DebugEngineView {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DebugEngineView));
+      this.label1 = new System.Windows.Forms.Label();
+      this.executionTimeTextBox = new System.Windows.Forms.TextBox();
+      this.logView = new HeuristicLab.Core.Views.LogView();
+      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+      this.executionStackTreeView = new System.Windows.Forms.TreeView();
+      this.label2 = new System.Windows.Forms.Label();
+      this.label3 = new System.Windows.Forms.Label();
+      this.scopeTreeView = new System.Windows.Forms.TreeView();
+      this.stepButton = new System.Windows.Forms.Button();
+      this.updateButton = new System.Windows.Forms.Button();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // label1
+      // 
+      this.label1.AutoSize = true;
+      this.label1.Location = new System.Drawing.Point(3, 9);
+      this.label1.Name = "label1";
+      this.label1.Size = new System.Drawing.Size(83, 13);
+      this.label1.TabIndex = 0;
+      this.label1.Text = "Execution Time:";
+      // 
+      // executionTimeTextBox
+      // 
+      this.executionTimeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.executionTimeTextBox.Location = new System.Drawing.Point(92, 6);
+      this.executionTimeTextBox.Name = "executionTimeTextBox";
+      this.executionTimeTextBox.ReadOnly = true;
+      this.executionTimeTextBox.Size = new System.Drawing.Size(366, 20);
+      this.executionTimeTextBox.TabIndex = 1;
+      // 
+      // logView
+      // 
+      this.logView.Caption = "Log View";
+      this.logView.Content = null;
+      this.logView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.logView.Location = new System.Drawing.Point(0, 0);
+      this.logView.Name = "logView";
+      this.logView.ReadOnly = false;
+      this.logView.Size = new System.Drawing.Size(515, 175);
+      this.logView.TabIndex = 2;
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.splitContainer1.Location = new System.Drawing.Point(3, 32);
+      this.splitContainer1.Name = "splitContainer1";
+      this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer1.Panel1
+      // 
+      this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.Controls.Add(this.logView);
+      this.splitContainer1.Size = new System.Drawing.Size(515, 341);
+      this.splitContainer1.SplitterDistance = 162;
+      this.splitContainer1.TabIndex = 3;
+      // 
+      // splitContainer2
+      // 
+      this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer2.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer2.Name = "splitContainer2";
+      // 
+      // splitContainer2.Panel1
+      // 
+      this.splitContainer2.Panel1.Controls.Add(this.executionStackTreeView);
+      this.splitContainer2.Panel1.Controls.Add(this.label2);
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.label3);
+      this.splitContainer2.Panel2.Controls.Add(this.scopeTreeView);
+      this.splitContainer2.Size = new System.Drawing.Size(515, 162);
+      this.splitContainer2.SplitterDistance = 258;
+      this.splitContainer2.TabIndex = 0;
+      // 
+      // executionStackTreeView
+      // 
+      this.executionStackTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.executionStackTreeView.Location = new System.Drawing.Point(3, 16);
+      this.executionStackTreeView.Name = "executionStackTreeView";
+      this.executionStackTreeView.Size = new System.Drawing.Size(252, 143);
+      this.executionStackTreeView.TabIndex = 2;
+      this.executionStackTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.executionStackTreeView_NodeMouseDoubleClick);
+      // 
+      // label2
+      // 
+      this.label2.AutoSize = true;
+      this.label2.Location = new System.Drawing.Point(3, 0);
+      this.label2.Name = "label2";
+      this.label2.Size = new System.Drawing.Size(85, 13);
+      this.label2.TabIndex = 1;
+      this.label2.Text = "Execution Stack";
+      // 
+      // label3
+      // 
+      this.label3.AutoSize = true;
+      this.label3.Location = new System.Drawing.Point(3, 0);
+      this.label3.Name = "label3";
+      this.label3.Size = new System.Drawing.Size(63, 13);
+      this.label3.TabIndex = 1;
+      this.label3.Text = "Scope Tree";
+      // 
+      // scopeTreeView
+      // 
+      this.scopeTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.scopeTreeView.Location = new System.Drawing.Point(3, 16);
+      this.scopeTreeView.Name = "scopeTreeView";
+      this.scopeTreeView.Size = new System.Drawing.Size(247, 143);
+      this.scopeTreeView.TabIndex = 0;
+      // 
+      // stepButton
+      // 
+      this.stepButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.stepButton.Image = ((System.Drawing.Image)(resources.GetObject("stepButton.Image")));
+      this.stepButton.Location = new System.Drawing.Point(494, 3);
+      this.stepButton.Name = "stepButton";
+      this.stepButton.Size = new System.Drawing.Size(24, 24);
+      this.stepButton.TabIndex = 4;
+      this.stepButton.UseVisualStyleBackColor = true;
+      this.stepButton.Click += new System.EventHandler(this.stepButton_Click);
+      // 
+      // updateButton
+      // 
+      this.updateButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.updateButton.Image = ((System.Drawing.Image)(resources.GetObject("updateButton.Image")));
+      this.updateButton.Location = new System.Drawing.Point(464, 3);
+      this.updateButton.Name = "updateButton";
+      this.updateButton.Size = new System.Drawing.Size(24, 24);
+      this.updateButton.TabIndex = 5;
+      this.updateButton.UseVisualStyleBackColor = true;
+      this.updateButton.Click += new System.EventHandler(this.updateButton_Click);
+      // 
+      // DebugEngineView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.Controls.Add(this.updateButton);
+      this.Controls.Add(this.stepButton);
+      this.Controls.Add(this.splitContainer1);
+      this.Controls.Add(this.executionTimeTextBox);
+      this.Controls.Add(this.label1);
+      this.Name = "DebugEngineView";
+      this.Size = new System.Drawing.Size(521, 376);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel1.PerformLayout();
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      this.splitContainer2.Panel2.PerformLayout();
+      this.splitContainer2.ResumeLayout(false);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label label1;
+    private System.Windows.Forms.TextBox executionTimeTextBox;
+    private Core.Views.LogView logView;
+    private System.Windows.Forms.SplitContainer splitContainer1;
+    private System.Windows.Forms.SplitContainer splitContainer2;
+    private System.Windows.Forms.Label label2;
+    private System.Windows.Forms.Label label3;
+    private System.Windows.Forms.TreeView scopeTreeView;
+    private System.Windows.Forms.TreeView executionStackTreeView;
+    private System.Windows.Forms.Button stepButton;
+    private System.Windows.Forms.Button updateButton;
+
+  }
+}
Index: branches/HeuristicLab.DebugEngine/DebugEngineView.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/DebugEngineView.cs	(revision 4743)
+++ branches/HeuristicLab.DebugEngine/DebugEngineView.cs	(revision 4743)
@@ -0,0 +1,161 @@
+﻿
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+namespace HeuristicLab.DebugEngine {
+  /// <summary>
+  /// Base class for editors of engines.
+  /// </summary>
+  [View("DebugEngine View")]
+  [Content(typeof(DebugEngine), true)]
+  public partial class DebugEngineView : ItemView {
+    /// <summary>
+    /// Gets or sets the current engine.
+    /// </summary>
+    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="EditorBase"/>.</remarks>
+    public new DebugEngine Content {
+      get { return (DebugEngine)base.Content; }
+      set { base.Content = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="EngineBaseEditor"/>.
+    /// </summary>
+    public DebugEngineView() {
+      InitializeComponent();
+    }
+
+    /// <summary>
+    /// Removes the event handlers from the underlying <see cref="IEngine"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void DeregisterContentEvents() {
+      Content.ExecutionTimeChanged -= new EventHandler(Content_ExecutionTimeChanged);
+      Content.ExecutionStateChanged -= new EventHandler(Content_ExecutionStateChanged);
+      base.DeregisterContentEvents();
+    }
+
+    /// <summary>
+    /// Adds event handlers to the underlying <see cref="IEngine"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ExecutionTimeChanged += new EventHandler(Content_ExecutionTimeChanged);
+      Content.ExecutionStateChanged += new EventHandler(Content_ExecutionStateChanged);
+    }
+
+    /// <summary>
+    /// Updates all controls with the latest data of the model.
+    /// </summary>
+    /// <remarks>Calls <see cref="EditorBase.UpdateControls"/> of base class <see cref="EditorBase"/>.</remarks>
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        logView.Content = null;
+        executionTimeTextBox.Text = "-";
+      } else {
+        logView.Content = Content.Log;
+        executionTimeTextBox.Text = Content.ExecutionTime.ToString();
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      if (Content == null) {
+        logView.Enabled = false;
+        executionTimeTextBox.Enabled = false;
+      } else {
+        logView.Enabled = true;
+        executionTimeTextBox.Enabled = true;
+      }
+    }
+
+    protected virtual void Content_ExecutionTimeChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ExecutionTimeChanged), sender, e);
+      else
+        executionTimeTextBox.Text = Content == null ? "-" : Content.ExecutionTime.ToString();
+    }
+
+    void Content_ExecutionStateChanged(object sender, EventArgs e) {
+      switch (Content.ExecutionState) {
+        case ExecutionState.Paused:
+        case ExecutionState.Stopped:
+        case ExecutionState.Prepared:
+          UpdateView(); break;
+      }
+    }
+
+    protected virtual void UpdateView() {
+      if (InvokeRequired) {
+        Invoke(new Action(UpdateView));
+      } else {
+        executionStackTreeView.Nodes.Clear();
+        AddOperations(executionStackTreeView.Nodes, Content.ExecutionStack.ToArray());
+        executionStackTreeView.ExpandAll();
+
+        scopeTreeView.Nodes.Clear();
+        if (Content.CurrentOperation != null) {
+          AddScope(scopeTreeView.Nodes, Content.CurrentOperation.Scope);
+        }
+        scopeTreeView.ExpandAll();
+      }
+    }
+
+    private void AddOperations(TreeNodeCollection nodes, IEnumerable<IOperation> operations) {
+      foreach (IOperation op in operations) {
+        if (op is IAtomicOperation) {
+          IAtomicOperation atom = op as IAtomicOperation;
+          TreeNode node = nodes.Add(atom.Operator.Name);
+          node.Tag = atom;
+          if (atom.Operator.Breakpoint)
+            node.ForeColor = Color.Red;
+        } else if (op is OperationCollection) {
+          OperationCollection ops = op as OperationCollection;
+          TreeNode node = executionStackTreeView.Nodes.Add(string.Format("{0} Operations", ops.Count));
+          node.Tag = op;
+          AddOperations(node.Nodes, ops);
+        }
+      }
+    }
+
+    private void AddScope(TreeNodeCollection nodes, IScope scope) {
+      TreeNode node = nodes.Add(scope.Name);
+      foreach (var var in scope.Variables) {
+        node.Nodes.Add(string.Format("{0}={1}", var.Name, var.Value.ToString()));
+      }
+      foreach (var subScope in scope.SubScopes) {
+        AddScope(node.Nodes, subScope);
+      }
+    }
+
+    private void stepButton_Click(object sender, EventArgs e) {
+      Content.Step();
+      UpdateView();
+    }
+
+    private void executionStackTreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) {
+      if (e.Node != null) {
+        IAtomicOperation op = e.Node.Tag as IAtomicOperation;
+        if (op != null) {
+          op.Operator.Breakpoint = !op.Operator.Breakpoint;
+          if (op.Operator.Breakpoint) {
+            e.Node.ForeColor = Color.Red;
+          } else {
+            e.Node.ForeColor = Color.Black;
+          }
+          executionStackTreeView.SelectedNode = null;
+        }
+      }
+    }
+
+    private void updateButton_Click(object sender, EventArgs e) {
+      UpdateView();
+    }
+  }
+}
Index: branches/HeuristicLab.DebugEngine/DebugEngineView.resx
===================================================================
--- branches/HeuristicLab.DebugEngine/DebugEngineView.resx	(revision 4743)
+++ branches/HeuristicLab.DebugEngine/DebugEngineView.resx	(revision 4743)
@@ -0,0 +1,151 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="stepButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALDQAA
+        Cw0B7QfALAAAAXxJREFUOE9j+P//PwM6Tuh5woZNHJsYhmaQIqABpkDMQowhWA0onPX8f/zkt/bohoDE
+        G+Y9/xXb8fANzHCsBuTOfPY/ofve/7gJr72QvQMSX3Xk/f/w9gdA/RCvYzUgY8rT//P2//4f1HDzL9CA
+        bJghIPGF+z78D264ht8AoIb/s/f9+t+59e9/t9LL/4H8PJAhIPFpW97/96++gN+AyK5H/6ds+/W/ZOnf
+        /wnT//63yT0LNgQk3rv6w3+v0hP4DQhsfvi/de17sGbjki//paOv/TeOXPYfJF43/91/l/wD+A3wqLr/
+        v2TuO7hmRZee/9I+qztA4vnT3vy3z9iO3wD70rv/A1uegW2GaF5ZDwpxkHj25Nf/LRLW4zfAIu/Of5uC
+        KzDNWbAoA4mn9r8GewdvNBpm3QZrlvJaXo6cGkHiYS0v/+sGz8NvgE7aDaCz1zSjJ2WQuF/1w/8avtPw
+        GyDlvbZF2nsFRoayy7r8S8Vjwn8QxusFYjIR1QwAADhfzufKNbAvAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="updateButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEAAA
+        CxABrSO9dQAAAkNJREFUOE+d0l1IU2EYB/AZXSR0GV10bRclXWRdRB8kk5TIMV3iFgWC1FhgZbNlBNY2
+        KqEwzbkMwpVzKyoWeswuXNOWy8yZ8zPXyMlcbbbvj+NZ24x/74JC7BjSgQfOxfv+zv95zpMFgKN60LW+
+        KH9X0ez8At/1xb8tGqc3B4KRjRuysz/lbM1rquBtpzirPRmg941Nrm6nxrpMQwmj9SOMU07cowZwsUkP
+        geRaoPxM/YnMObbilElubGnWdL43DY7/8NEMPEwSzhiDUR8Nauor5JoeFB6vTR0S1eSwAiaLTaPr7Iu7
+        /RHQqTSiyTR8iynMBBfRPxeFzuqB5LoGBwTnlKxAy0Nq+qXFRi4lEU8tgU4vIcSk4QgyMDsjeGILoE77
+        GvtLq8OswHlFKywON5zRBPxMCqHvaXjiSUx+o9H3OQz9sBfKRyM4WCYl9/+eA0feqJ/VvfqAkQUaMyEG
+        jnACE6T/t/MxdE8H0DbghrSlB3uKq0ZZgau3O7R1dw2J3rkYzK44qRiMJDplD6LD6kW9YRLCmmaUV4hp
+        VuD0ZfWmo2Jl9NYzM56OB/B8IoTHpG/NOy9uUnZUKtrBLZdCrzrJ3kJGJb+ykFepWDylaMMVbT/56hhq
+        1C9wTKZCftlZ3JHzEbbXsyJ/loMgOy81GO5zRbKhfSXV8QJRLYRVja4jvMMy7u4dGGzNZUVYt+t3r8Li
+        3KzMO7+EJyDFivwTWD601ZA1ASTJuuVJuhvycEFc8GuoawJWJNlL0gyTKv0vYOUu/AQZkMf/XhecFgAA
+        AABJRU5ErkJggg==
+</value>
+  </data>
+</root>
Index: branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.csproj
===================================================================
--- branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.csproj	(revision 4743)
+++ branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.csproj	(revision 4743)
@@ -0,0 +1,169 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{49F28045-7B5F-411B-8D59-16C846FA26E0}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.DebugEngine</RootNamespace>
+    <AssemblyName>HeuristicLab.DebugEngine-3.3</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <RunCodeAnalysis>false</RunCodeAnalysis>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\HeuristicLab.DebugEngine.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\HeuristicLab.DebugEngine.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <PlatformTarget>x64</PlatformTarget>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <PlatformTarget>x64</PlatformTarget>
+    <OutputPath>bin\x64\Release\</OutputPath>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Collections-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Collections-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Core.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.MainForm-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Persistence-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DebugEngine.cs" />
+    <Compile Include="DebugEngineView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="DebugEngineView.Designer.cs">
+      <DependentUpon>DebugEngineView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="DebugEngineView.resx">
+      <DependentUpon>DebugEngineView.cs</DependentUpon>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HeuristicLabDebugEnginePlugin.cs" />
+    <None Include="CopyAssemblies.cmd" />
+    <None Include="HeuristicLab.snk" />
+    <None Include="HeuristicLabDebugEnginePlugin.cs.frame" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+SubWCRev "%25ProjectDir%25\" "%25ProjectDir%25\Properties\AssemblyInfo.cs.frame" "%25ProjectDir%25\Properties\AssemblyInfo.cs"
+SubWCRev "%25ProjectDir%25\" "%25ProjectDir%25\HeuristicLabDebugEnginePlugin.cs.frame" "%25ProjectDir%25\HeuristicLabDebugEnginePlugin.cs"</PreBuildEvent>
+  </PropertyGroup>
+  <PropertyGroup>
+    <PostBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+set Platform=$(PlatformName)
+set Configuration=$(ConfigurationName)
+
+call CopyAssemblies.cmd</PostBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.sln
===================================================================
--- branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.sln	(revision 4743)
+++ branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.sln	(revision 4743)
@@ -0,0 +1,32 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.DebugEngine", "HeuristicLab.DebugEngine.csproj", "{49F28045-7B5F-411B-8D59-16C846FA26E0}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|x64.ActiveCfg = Debug|x64
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|x64.Build.0 = Debug|x64
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|x86.ActiveCfg = Debug|x86
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Debug|x86.Build.0 = Debug|x86
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|Any CPU.Build.0 = Release|Any CPU
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|x64.ActiveCfg = Release|x64
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|x64.Build.0 = Release|x64
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|x86.ActiveCfg = Release|x86
+		{49F28045-7B5F-411B-8D59-16C846FA26E0}.Release|x86.Build.0 = Release|x86
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: branches/HeuristicLab.DebugEngine/HeuristicLabDebugEnginePlugin.cs.frame
===================================================================
--- branches/HeuristicLab.DebugEngine/HeuristicLabDebugEnginePlugin.cs.frame	(revision 4743)
+++ branches/HeuristicLab.DebugEngine/HeuristicLabDebugEnginePlugin.cs.frame	(revision 4743)
@@ -0,0 +1,38 @@
+﻿#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 HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.DebugEngine {
+
+  [Plugin("HeuristicLab.DebugEngine", "3.3.0.$WCREV$")]
+  [PluginFile("HeuristicLab.DebugEngine-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Parameters", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]  
+  public class HeuristicLabAnalysisFitnessLandscapePlugin : PluginBase { }
+}
Index: branches/HeuristicLab.DebugEngine/Properties/AssemblyInfo.cs.frame
===================================================================
--- branches/HeuristicLab.DebugEngine/Properties/AssemblyInfo.cs.frame	(revision 4743)
+++ branches/HeuristicLab.DebugEngine/Properties/AssemblyInfo.cs.frame	(revision 4743)
@@ -0,0 +1,37 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.DebugEngine")]
+[assembly: AssemblyDescription("HeuristicLab engine for debugging")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2010 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("34e1ec7e-0124-4f76-b8f8-42b9244d2b09")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.3.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
+
