diff --git a/org.eclipse.handly/src/org/eclipse/handly/model/impl/ElementDelta.java b/org.eclipse.handly/src/org/eclipse/handly/model/impl/ElementDelta.java
index 8b09087..d6ff418 100644
--- a/org.eclipse.handly/src/org/eclipse/handly/model/impl/ElementDelta.java
+++ b/org.eclipse.handly/src/org/eclipse/handly/model/impl/ElementDelta.java
@@ -1149,19 +1149,22 @@
                 delta = findDelta(element);
             }
 
-            switch (delta.hKind())
+            if (delta != null)
             {
-            case ADDED:
-            case REMOVED:
-                break; // do nothing
-            case CHANGED:
-                delta.hSetFlags(delta.hFlags() | F_MARKERS);
-                delta.hSetMarkerDeltas(markerDeltas);
-                break;
-            default: // empty delta
-                delta.hSetKind(CHANGED);
-                delta.hSetFlags(delta.hFlags() | F_MARKERS);
-                delta.hSetMarkerDeltas(markerDeltas);
+                switch (delta.hKind())
+                {
+                case ADDED:
+                case REMOVED:
+                    break; // do nothing
+                case CHANGED:
+                    delta.hSetFlags(delta.hFlags() | F_MARKERS);
+                    delta.hSetMarkerDeltas(markerDeltas);
+                    break;
+                default: // empty delta
+                    delta.hSetKind(CHANGED);
+                    delta.hSetFlags(delta.hFlags() | F_MARKERS);
+                    delta.hSetMarkerDeltas(markerDeltas);
+                }
             }
             return this;
         }
@@ -1191,19 +1194,22 @@
                 delta = findDelta(element);
             }
 
-            switch (delta.hKind())
+            if (delta != null)
             {
-            case ADDED:
-            case REMOVED:
-                break; // do nothing
-            case CHANGED:
-                delta.hSetFlags(delta.hFlags() | F_CONTENT);
-                delta.hAddResourceDelta(resourceDelta);
-                break;
-            default: // empty delta
-                delta.hSetKind(CHANGED);
-                delta.hSetFlags(delta.hFlags() | F_CONTENT);
-                delta.hAddResourceDelta(resourceDelta);
+                switch (delta.hKind())
+                {
+                case ADDED:
+                case REMOVED:
+                    break; // do nothing
+                case CHANGED:
+                    delta.hSetFlags(delta.hFlags() | F_CONTENT);
+                    delta.hAddResourceDelta(resourceDelta);
+                    break;
+                default: // empty delta
+                    delta.hSetKind(CHANGED);
+                    delta.hSetFlags(delta.hFlags() | F_CONTENT);
+                    delta.hAddResourceDelta(resourceDelta);
+                }
             }
             return this;
         }
