diff --git a/src/Main/Base/Project/Dom/IModelCollection.cs b/src/Main/Base/Project/Dom/IModelCollection.cs
index 69f92760f6..7c6f5ece7a 100644
--- a/src/Main/Base/Project/Dom/IModelCollection.cs
+++ b/src/Main/Base/Project/Dom/IModelCollection.cs
@@ -7,44 +7,6 @@ using System.Linq;
namespace ICSharpCode.SharpDevelop.Dom
{
- ///
- /// Event handler for the event.
- ///
- ///
- /// We don't use the classic 'EventArgs' model for this event, because a EventArgs-class couldn't be covariant.
- ///
- public delegate void ModelCollectionChangedEventHandler(IReadOnlyCollection removedItems, IReadOnlyCollection addedItems);
-
- public class ModelCollectionChangedEvent
- {
- List> _handlers = new List>();
-
- public void AddHandler(ModelCollectionChangedEventHandler handler)
- {
- if (handler != null)
- _handlers.Add(handler);
- }
-
- public void RemoveHandler(ModelCollectionChangedEventHandler handler)
- {
- _handlers.Remove(handler);
- }
-
- public void Fire(IReadOnlyCollection removedItems, IReadOnlyCollection addedItems)
- {
- foreach (var handler in _handlers.ToArray()) {
- handler(removedItems, addedItems);
- }
- }
-
- public bool ContainsHandlers
- {
- get {
- return _handlers.Count > 0;
- }
- }
- }
-
///
/// A read-only collection that provides change notifications.
///
diff --git a/src/Main/Base/Project/Dom/ModelCollectionChangedEvent.cs b/src/Main/Base/Project/Dom/ModelCollectionChangedEvent.cs
new file mode 100644
index 0000000000..686330d4e3
--- /dev/null
+++ b/src/Main/Base/Project/Dom/ModelCollectionChangedEvent.cs
@@ -0,0 +1,52 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+namespace ICSharpCode.SharpDevelop.Dom
+{
+ ///
+ /// Event handler for the event.
+ ///
+ ///
+ /// We don't use the classic 'EventArgs' model for this event, because a EventArgs-class couldn't be covariant.
+ ///
+ public delegate void ModelCollectionChangedEventHandler(IReadOnlyCollection removedItems, IReadOnlyCollection addedItems);
+
+ ///
+ /// Helper class for implementations.
+ /// This is necessary because Delegate.Combine does not work with
+ /// co-/contravariant delegates.
+ ///
+ public class ModelCollectionChangedEvent
+ {
+ List> _handlers = new List>();
+
+ public void AddHandler(ModelCollectionChangedEventHandler handler)
+ {
+ if (handler != null)
+ _handlers.Add(handler);
+ }
+
+ public void RemoveHandler(ModelCollectionChangedEventHandler handler)
+ {
+ _handlers.Remove(handler);
+ }
+
+ public void Fire(IReadOnlyCollection removedItems, IReadOnlyCollection addedItems)
+ {
+ foreach (var handler in _handlers.ToArray()) {
+ handler(removedItems, addedItems);
+ }
+ }
+
+ public bool ContainsHandlers {
+ get {
+ return _handlers.Count > 0;
+ }
+ }
+ }
+}
+
+
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index 7ffe4a75db..8578f89080 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -111,6 +111,7 @@
+