simplify looping by not using visitor pattern
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/tasks/TaskScanner.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/tasks/TaskScanner.java
index 6bf6d48..d539254 100644
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/tasks/TaskScanner.java
+++ b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/tasks/TaskScanner.java
@@ -21,8 +21,6 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.IResourceVisitor;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.Platform;
@@ -31,6 +29,9 @@
 import org.eclipse.core.runtime.content.IContentType;
 import org.eclipse.wst.sse.core.internal.Logger;
 
+/**
+ * Dispatcher for scanning based on deltas and requested projects
+ */
 class TaskScanner {
 	private static final boolean _debug = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.wst.sse.core/tasks")); //$NON-NLS-1$ //$NON-NLS-2$
 	private static final boolean _debugContentTypeDetection = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.wst.sse.core/tasks/detection")); //$NON-NLS-1$ //$NON-NLS-2$
@@ -97,31 +98,25 @@
 		if (scanMonitor.isCanceled())
 			return;
 		try {
-			IResourceVisitor innerScanner = new IResourceVisitor() {
-				public boolean visit(IResource visitee) throws CoreException {
-					if ((visitee.getType() & IResource.FOLDER) > 0 || (visitee.getType() & IResource.PROJECT) > 0) {
-						SubProgressMonitor childMonitor = new SubProgressMonitor(scanMonitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
-						IResource[] children = ((IContainer) visitee).members();
-						childMonitor.beginTask("", children.length);
-						for (int i = children.length - 1; i >= 0; i--) {
-							internalScan(project, children[i], new SubProgressMonitor(childMonitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
-						}
-						childMonitor.done();
+			String name = resource.getName();
+			if (name.length() != 0 && name.charAt(0) != '.') {
+				if ((resource.getType() & IResource.FOLDER) > 0 || (resource.getType() & IResource.PROJECT) > 0) {
+					SubProgressMonitor childMonitor = new SubProgressMonitor(scanMonitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
+					IResource[] children = ((IContainer) resource).members();
+					childMonitor.beginTask("", children.length);
+					for (int i = children.length - 1; i >= 0; i--) {
+						internalScan(project, children[i], new SubProgressMonitor(childMonitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
 					}
-					else if ((visitee.getType() & IResource.FILE) > 0) {
-						scanFile(project, (IFile) visitee, scanMonitor);
-						scanMonitor.worked(1);
-					}
-					else {
-						scanMonitor.worked(1);
-					}
-					String name = visitee.getName();
-					return name.length() != 0 && name.charAt(0) != '.';
+					childMonitor.done();
 				}
-			};
-
-			scanMonitor.beginTask("", 1);
-			resource.accept(innerScanner);
+				else if ((resource.getType() & IResource.FILE) > 0) {
+					scanFile(project, (IFile) resource, scanMonitor);
+					scanMonitor.worked(1);
+				}
+				else {
+					scanMonitor.worked(1);
+				}
+			}
 			scanMonitor.done();
 		}
 		catch (CoreException e) {
@@ -132,40 +127,35 @@
 	void internalScan(IResourceDelta delta, final IProgressMonitor monitor) {
 		if (monitor.isCanceled())
 			return;
-		IResourceDeltaVisitor visitor = new IResourceDeltaVisitor() {
-			public boolean visit(IResourceDelta fileDelta) throws CoreException {
-				if (monitor.isCanceled())
-					return false;
-				IResource resource = fileDelta.getResource();
-				if ((resource.getType() & IResource.FOLDER) > 0 || (resource.getType() & IResource.PROJECT) > 0) {
-					IResourceDelta[] children = fileDelta.getAffectedChildren();
-					String name = fileDelta.getFullPath().lastSegment();
-					if (name.length() != 0 && name.charAt(0) != '.' && children.length > 0) {
-						SubProgressMonitor childMonitor = new SubProgressMonitor(monitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
-						childMonitor.beginTask("", children.length);
-						for (int i = 0; i < children.length; i++) {
-							internalScan(children[i], new SubProgressMonitor(childMonitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
-						}
-						childMonitor.done();
+		try {
+			String name = delta.getFullPath().lastSegment();
+			IResource resource = delta.getResource();
+			if ((resource.getType() & IResource.FOLDER) > 0 || (resource.getType() & IResource.PROJECT) > 0) {
+				IResourceDelta[] children = delta.getAffectedChildren();
+				if (name.length() != 0 && name.charAt(0) != '.' && children.length > 0) {
+					SubProgressMonitor childMonitor = new SubProgressMonitor(monitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
+					childMonitor.beginTask("", children.length);
+					for (int i = children.length - 1; i >= 0; i--) {
+						internalScan(children[i], new SubProgressMonitor(childMonitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
 					}
-					else {
-						monitor.worked(1);
-					}
+					childMonitor.done();
 				}
-				else if ((resource.getType() & IResource.FILE) > 0) {
-					if ((fileDelta.getKind() & IResourceDelta.ADDED) > 0 || ((fileDelta.getKind() & IResourceDelta.CHANGED) > 0 && (fileDelta.getFlags() & IResourceDelta.CONTENT) > 0)) {
-						IFile file = (IFile) resource;
-						scanFile(file.getProject(), file, monitor);
-					}
+				else {
 					monitor.worked(1);
 				}
-				return false;
 			}
-		};
-		try {
-			delta.accept(visitor);
+			else if (name.length() != 0 && name.charAt(0) != '.' && (resource.getType() & IResource.FILE) > 0) {
+				if ((delta.getKind() & IResourceDelta.ADDED) > 0 || ((delta.getKind() & IResourceDelta.CHANGED) > 0 && (delta.getFlags() & IResourceDelta.CONTENT) > 0)) {
+					IFile file = (IFile) resource;
+					scanFile(file.getProject(), file, monitor);
+				}
+				monitor.worked(1);
+			}
+			else {
+				monitor.worked(1);
+			}
 		}
-		catch (CoreException e) {
+		catch (Exception e) {
 			monitor.done();
 			Logger.logException(e);
 		}