* some fixes for custom model element support
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/BuildpathChange.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/BuildpathChange.java
index 8a7309a..c2f8a03 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/BuildpathChange.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/BuildpathChange.java
@@ -277,11 +277,11 @@
 								rootIDs, null, // inside original project
 								false, // don't retrieve exported roots
 								false, null); /* no reverse map */
-						pkgFragmentRoots = new ProjectFragment[accumulatedRoots
+						pkgFragmentRoots = new IProjectFragment[accumulatedRoots
 								.size()];
 						accumulatedRoots.copyInto(pkgFragmentRoots);
 					} catch (ModelException e) {
-						pkgFragmentRoots = new ProjectFragment[] {};
+						pkgFragmentRoots = new IProjectFragment[] {};
 					}
 				}
 				addBuildpathDeltas(delta, pkgFragmentRoots,
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NameLookup.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NameLookup.java
index 3ad3855..0fec100 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NameLookup.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NameLookup.java
@@ -220,7 +220,7 @@
 					// are actual packages
 					ProjectElementInfo.addNames(pkgName, this.isPackageCache);
 				} else {
-					if (existing instanceof ProjectFragment) {
+					if (existing instanceof IProjectFragment) {
 						if (!existing.equals(root))
 							this.scriptFolders
 									.put(pkgName, new IProjectFragment[] {
@@ -332,7 +332,7 @@
 		}
 		Object value = this.scriptFolders.get(pkgName);
 		if (value != null) {
-			if (value instanceof ProjectFragment) {
+			if (value instanceof IProjectFragment) {
 				return findSourceModule(pkgName, cuName,
 						(IProjectFragment) value);
 			} else {
@@ -448,7 +448,7 @@
 						if (defaultPkgRoot == null) {
 							return null;
 						}
-						if (defaultPkgRoot instanceof ProjectFragment
+						if (defaultPkgRoot instanceof IProjectFragment
 								&& defaultPkgRoot.equals(root))
 							return ((IProjectFragment) root)
 									.getScriptFolder(Path.EMPTY);
@@ -495,7 +495,7 @@
 				if (pkgName != null
 						&& Util.startsWithIgnoreCase(pkgName, splittedName)) {
 					Object value = this.scriptFolders.valueTable[i];
-					if (value instanceof ProjectFragment) {
+					if (value instanceof IProjectFragment) {
 						IScriptFolder pkg = ((IProjectFragment) value)
 								.getScriptFolder(toPath(pkgName));
 						if (oneFragment == null) {
@@ -537,7 +537,7 @@
 			Object value = this.scriptFolders.get(splittedName);
 			if (value == null)
 				return null;
-			if (value instanceof ProjectFragment) {
+			if (value instanceof IProjectFragment) {
 				return new IScriptFolder[] { ((IProjectFragment) value)
 						.getScriptFolder(toPath(splittedName)) };
 			} else {
@@ -861,7 +861,7 @@
 				if (pkgName != null
 						&& Util.startsWithIgnoreCase(pkgName, splittedName)) {
 					Object value = this.scriptFolders.valueTable[i];
-					if (value instanceof ProjectFragment) {
+					if (value instanceof IProjectFragment) {
 						IProjectFragment root = (IProjectFragment) value;
 						requestor.acceptScriptFolder(root
 								.getScriptFolder(toPath(pkgName)));
@@ -880,7 +880,7 @@
 		} else {
 			String[] splittedName = Util.splitOn('.', name, 0, name.length());
 			Object value = this.scriptFolders.get(splittedName);
-			if (value instanceof ProjectFragment) {
+			if (value instanceof IProjectFragment) {
 				requestor.acceptScriptFolder(((IProjectFragment) value)
 						.getScriptFolder(toPath(splittedName)));
 			} else {
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectElementInfo.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectElementInfo.java
index 207f830..02987c6 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectElementInfo.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectElementInfo.java
@@ -276,7 +276,7 @@
 						// are actual packages
 						addNames(pkgName, isPackageCache);
 					} else {
-						if (existing instanceof ProjectFragment) {
+						if (existing instanceof IProjectFragment) {
 							fragmentsCache.put(pkgName, new IProjectFragment[] {
 									(IProjectFragment) existing, root });
 						} else {
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptFolder.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptFolder.java
index 95cf8dc..9263e0a 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptFolder.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptFolder.java
@@ -322,7 +322,7 @@
 		if (this.isRootFolder()) {
 			return ModelElementInfo.NO_NON_SCRIPT_RESOURCES;
 		} else {
-			if (getProjectFragment() instanceof ProjectFragment) {
+			if (getProjectFragment() instanceof IProjectFragment) {
 				return ((ScriptFolderInfo) getElementInfo())
 						.getForeignResources(getResource(),
 								(IProjectFragment) getProjectFragment());
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptProject.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptProject.java
index 9cd80ea..8ca1d1e 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptProject.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptProject.java
@@ -2707,6 +2707,22 @@
 				break;
 			}
 		}
+		// Check for all fragments for custom elements
+		try {
+			IProjectFragment[] allProjectFragments = getAllProjectFragments();
+			for (IProjectFragment fragment : allProjectFragments) {
+				if (fragment.isExternal()) {
+					IPath path = fragment.getPath();
+					if (path.isPrefixOf(elementPath)) {
+						return true;
+					}
+				}
+			}
+		} catch (ModelException e) {
+			if (DLTKCore.DEBUG) {
+				e.printStackTrace();
+			}
+		}
 		return false;
 	}