Index: branches/XmlTextReaderBranch/HeuristicLab.Core/CompositeOperation.cs
===================================================================
--- branches/XmlTextReaderBranch/HeuristicLab.Core/CompositeOperation.cs	(revision 122)
+++ branches/XmlTextReaderBranch/HeuristicLab.Core/CompositeOperation.cs	(revision 123)
@@ -84,8 +84,15 @@
       base.Populate(reader, restoredObjects);
 
-      reader.ReadToDescendant("Operations");
-      while(reader.IsStartElement()) 
-        AddOperation((IOperation)PersistenceManager.Restore(reader, restoredObjects));
-      reader.ReadEndElement();
+      if(reader.Name != "Operations") throw new XmlException("Expected: \"Operations\", found: \""+reader.Name+"\"");
+      if(!reader.IsEmptyElement) {
+        reader.Read();
+        while(reader.IsStartElement()) {
+          AddOperation((IOperation)PersistenceManager.Restore(reader, restoredObjects));
+          reader.Skip();
+        }
+        reader.ReadEndElement();
+      } else {
+        reader.Read();
+      }
     }
     #endregion
Index: branches/XmlTextReaderBranch/HeuristicLab.Core/ConstrainedItemBase.cs
===================================================================
--- branches/XmlTextReaderBranch/HeuristicLab.Core/ConstrainedItemBase.cs	(revision 122)
+++ branches/XmlTextReaderBranch/HeuristicLab.Core/ConstrainedItemBase.cs	(revision 123)
@@ -111,6 +111,9 @@
       if(reader.Name == "Constraints") {
         myConstraints.Clear();
-        while(reader.IsStartElement())
+        reader.Read();
+        while(reader.IsStartElement()) {
           AddConstraint((IConstraint)PersistenceManager.Restore(reader, restoredObjects));
+          reader.Skip();
+        }
         reader.ReadEndElement();
       }
Index: branches/XmlTextReaderBranch/HeuristicLab.Core/OperatorGroup.cs
===================================================================
--- branches/XmlTextReaderBranch/HeuristicLab.Core/OperatorGroup.cs	(revision 122)
+++ branches/XmlTextReaderBranch/HeuristicLab.Core/OperatorGroup.cs	(revision 123)
@@ -111,13 +111,27 @@
       myName = reader["Name"];
       base.Populate(reader, restoredObjects);
-
-      reader.ReadToDescendant("SubGroups");
-      while(reader.IsStartElement()) 
-        AddSubGroup((IOperatorGroup)PersistenceManager.Restore(reader, restoredObjects));
-      reader.ReadEndElement();
-      reader.ReadToDescendant("Operators");
-      while(reader.IsStartElement())
-        AddOperator((IOperator)PersistenceManager.Restore(reader, restoredObjects));
-      reader.ReadEndElement();
+      reader.Read();
+      if(reader.Name != "SubGroups") throw new XmlException("Expected: \"SubGroups\", found: \"" + reader.Name + "\"");
+      if(!reader.IsEmptyElement) {
+        reader.Read();
+        while(reader.IsStartElement()) {
+          AddSubGroup((IOperatorGroup)PersistenceManager.Restore(reader, restoredObjects));
+          reader.Skip();
+        }
+        reader.ReadEndElement();
+      } else {
+        reader.Read();
+      }
+      if(reader.Name != "Operators") throw new XmlException("Expected: \"Operators\", found: \"" + reader.Name + "\"");
+      if(!reader.IsEmptyElement) {
+        reader.Read();
+        while(reader.IsStartElement()) {
+          AddOperator((IOperator)PersistenceManager.Restore(reader, restoredObjects));
+          reader.Skip();
+        }
+        reader.ReadEndElement();
+      } else {
+        reader.Read();
+      }
     }
     #endregion
Index: branches/XmlTextReaderBranch/HeuristicLab.Core/OperatorLibrary.cs
===================================================================
--- branches/XmlTextReaderBranch/HeuristicLab.Core/OperatorLibrary.cs	(revision 122)
+++ branches/XmlTextReaderBranch/HeuristicLab.Core/OperatorLibrary.cs	(revision 123)
@@ -58,5 +58,7 @@
     public override void Populate(XmlReader reader, IDictionary<Guid,IStorable> restoredObjects) {
       base.Populate(reader, restoredObjects);
+      reader.Read();
       myGroup = (IOperatorGroup)PersistenceManager.Restore(reader, "OperatorGroup", restoredObjects);
+      reader.Read();
     }
     #endregion
