Index: /stable/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/QueueSerializer.cs
===================================================================
--- /stable/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/QueueSerializer.cs	(revision 11415)
+++ /stable/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/QueueSerializer.cs	(revision 11415)
@@ -0,0 +1,78 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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;
+using System.Collections.Generic;
+using System.Reflection;
+using HeuristicLab.Persistence.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Persistence.Interfaces;
+
+namespace HeuristicLab.Persistence.Default.CompositeSerializers {
+
+  [StorableClass]
+  internal sealed class QueueSerializer : ICompositeSerializer {
+
+    [StorableConstructor]
+    private QueueSerializer(bool deserializing) { }
+    public QueueSerializer() { }
+
+    public int Priority {
+      get { return 100; }
+    }
+
+
+    public bool CanSerialize(Type type) {
+      return type == typeof(Queue) ||
+        type.IsGenericType &&
+        type.GetGenericTypeDefinition() == typeof(Queue<>);
+    }
+
+    public string JustifyRejection(Type type) {
+      return "not Queue or generic Queue<>";
+    }
+
+    public IEnumerable<Tag> CreateMetaInfo(object o) {
+      return new Tag[] { };
+    }
+
+    public IEnumerable<Tag> Decompose(object obj) {
+      foreach (object o in (IEnumerable)obj) {
+        yield return new Tag(null, o);
+      }
+    }
+
+    public object CreateInstance(Type type, IEnumerable<Tag> metaInfo) {
+      return Activator.CreateInstance(type, true);
+    }
+
+    public void Populate(object instance, IEnumerable<Tag> tags, Type type) {
+      MethodInfo addMethod = type.GetMethod("Enqueue");
+      try {
+        foreach (var tag in tags)
+          addMethod.Invoke(instance, new[] { tag.Value });
+      } catch (Exception e) {
+        throw new PersistenceException("Exception caught while trying to populate queue.", e);
+      }
+    }
+  }
+}
Index: /stable/HeuristicLab.Persistence/3.3/HeuristicLab.Persistence-3.3.csproj
===================================================================
--- /stable/HeuristicLab.Persistence/3.3/HeuristicLab.Persistence-3.3.csproj	(revision 11414)
+++ /stable/HeuristicLab.Persistence/3.3/HeuristicLab.Persistence-3.3.csproj	(revision 11415)
@@ -143,4 +143,5 @@
     <Compile Include="Default\CompositeSerializers\CompactNumberArray2StringSerializer.cs" />
     <Compile Include="Default\CompositeSerializers\ConcreteDictionarySerializer.cs" />
+    <Compile Include="Default\CompositeSerializers\QueueSerializer.cs" />
     <Compile Include="Default\CompositeSerializers\TupleSerializer.cs" />
     <Compile Include="Default\CompositeSerializers\HashSetSerializer.cs" />
Index: /stable/HeuristicLab.Tests/HeuristicLab.Persistence-3.3/UseCases.cs
===================================================================
--- /stable/HeuristicLab.Tests/HeuristicLab.Persistence-3.3/UseCases.cs	(revision 11414)
+++ /stable/HeuristicLab.Tests/HeuristicLab.Persistence-3.3/UseCases.cs	(revision 11415)
@@ -1516,4 +1516,15 @@
     }
 
+    [TestMethod]
+    [TestCategory("Persistence")]
+    [TestProperty("Time", "short")]
+    public void TestQueue() {
+      var q = new Queue<int>(new[] {1, 2, 3, 4, 0});
+      XmlGenerator.Serialize(q, tempFile);
+      var newQ = (Queue<int>)XmlParser.Deserialize(tempFile);
+      CollectionAssert.AreEqual(q, newQ);
+    }
+
+
 
     [ClassInitialize]
