diff --git "a/org.eclipse.ajdt.core.tests/AllCoreTests - No UI \050Andrew\051.launch" "b/org.eclipse.ajdt.core.tests/AllCoreTests - No UI \050Andrew\051.launch"
index f06faf3..5ed42b5 100644
--- "a/org.eclipse.ajdt.core.tests/AllCoreTests - No UI \050Andrew\051.launch"
+++ "b/org.eclipse.ajdt.core.tests/AllCoreTests - No UI \050Andrew\051.launch"
@@ -12,7 +12,7 @@
 <booleanAttribute key="clearwslog" value="false"/>
 <stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
 <booleanAttribute key="default" value="false"/>
-<stringAttribute key="deselected_workspace_plugins" value="org.eclipse.contribution.xref.ui.tests,org.eclipse.ajdt.ui.tests,org.eclipse.contribution.visualiser.tests,org.eclipse.contribution.xref.core.tests,org.eclipse.ajdt.ui.visual.tests,org.eclipse.ajdt.ui"/>
+<stringAttribute key="deselected_workspace_plugins" value="org.eclipse.contribution.xref.ui.tests,org.eclipse.contribution.visualiser.tests,org.eclipse.ajdt.ui.tests,org.eclipse.contribution.xref.core.tests,org.eclipse.ajdt.ui.visual.tests,org.eclipse.ajdt.ui"/>
 <booleanAttribute key="includeOptional" value="true"/>
 <stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
@@ -32,7 +32,7 @@
 <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XX:MaxPermSize=128m -Xmx1024m"/>
 <stringAttribute key="pde.version" value="3.3"/>
 <stringAttribute key="product" value="org.eclipse.equinox.p2.director.app.product"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.equinox.p2.extensionlocation.source,org.apache.ant.source,javax.servlet.source,org.eclipse.equinox.frameworkadmin.equinox,org.eclipse.jdt.junit.source,org.apache.commons.el.source,org.eclipse.ui.ide,org.eclipse.equinox.security,org.eclipse.debug.ui.source,org.eclipse.equinox.p2.touchpoint.eclipse.source,org.eclipse.ui.ide.application,org.eclipse.equinox.p2.exemplarysetup.source,org.eclipse.core.expressions,org.eclipse.ant.core.source,org.eclipse.update.ui,org.eclipse.pde.ui.source,org.eclipse.mylyn.commons.core,org.eclipse.help.appserver,javax.servlet,org.eclipse.equinox.preferences.source,org.junit4.source,org.apache.lucene.source,org.eclipse.equinox.common.source,org.eclipse.equinox.p2.console.source,org.eclipse.core.boot,org.eclipse.ant.ui,org.sat4j.pb,org.eclipse.mylyn.monitor.ui,org.eclipse.ui.editors,org.eclipse.ui.browser,org.eclipse.mylyn.java.tasks,org.eclipse.equinox.p2.reconciler.dropins,org.eclipse.debug.core,org.eclipse.jsch.core,org.apache.jasper.source,org.eclipse.equinox.common,org.eclipse.jdt.doc.user,org.eclipse.equinox.p2.metadata.source,org.eclipse.core.commands,org.eclipse.ecf.filetransfer,org.eclipse.equinox.p2.ui,org.junit4,org.eclipse.equinox.registry.source,org.eclipse.equinox.simpleconfigurator.manipulator,org.eclipse.pde.api.tools,org.eclipse.ui.views,org.eclipse.pde.runtime,org.eclipse.help.base.source,org.mortbay.jetty,org.eclipse.search,org.eclipse.equinox.http.jetty,org.eclipse.ecf.identity,org.eclipse.team.core.source,org.eclipse.jdt.junit.runtime.source,org.eclipse.ui.net,org.eclipse.ltk.ui.refactoring.source,org.eclipse.equinox.http.servlet.source,org.eclipse.jdt.debug.ui,org.eclipse.equinox.p2.metadata.generator,org.junit.source,org.eclipse.help.webapp.source,org.eclipse.equinox.frameworkadmin.equinox.source,org.eclipse.equinox.p2.updatesite,org.eclipse.cvs.source,org.eclipse.ui.views.log,org.eclipse.jsch.ui,org.eclipse.equinox.jsp.jasper.registry,org.eclipse.pde,org.eclipse.ecf,org.eclipse.text.source,org.eclipse.osgi.services.source,org.eclipse.core.resources.compatibility.source,org.eclipse.pde.ui.templates,org.objectweb.asm,javax.servlet.jsp.source,org.eclipse.mylyn.resources.ui,org.eclipse.equinox.app,org.eclipse.pde.source,org.eclipse.equinox.p2.director.app.source,org.eclipse.equinox.simpleconfigurator.manipulator.source,org.eclipse.core.net.source,javax.servlet.jsp,com.ibm.icu,org.eclipse.ui.cheatsheets,org.eclipse.mylyn.bugzilla.core,org.eclipse.mylyn.bugzilla.ui,org.eclipse.mylyn.pde.ui,org.eclipse.core.filesystem,org.eclipse.jdt,org.eclipse.pde.api.tools.ui,org.eclipse.core.resources.source,org.objectweb.asm.source,org.eclipse.core.contenttype.source,org.eclipse.equinox.p2.director,org.eclipse.equinox.security.macosx,org.eclipse.ui.source,org.eclipse.cvs,org.eclipse.ui.presentations.r21,org.eclipse.platform.doc.user,org.eclipse.jdt.ui.source,org.eclipse.equinox.p2.console,org.eclipse.equinox.p2.updatesite.source,org.eclipse.equinox.launcher.carbon.macosx,org.eclipse.equinox.p2.exemplarysetup,org.eclipse.ui.workbench,org.eclipse.equinox.p2.touchpoint.eclipse,org.eclipse.ui.intro.universal,org.eclipse.equinox.p2.jarprocessor,org.eclipse.pde.api.tools.ui.source,org.eclipse.pde.p2.ui.source,org.eclipse.jdt.launching,org.eclipse.ui.console,org.eclipse.equinox.p2.directorywatcher,org.eclipse.equinox.preferences,org.eclipse.ui.net.source,org.eclipse.ui.presentations.r21.source,org.eclipse.pde.doc.user,org.eclipse.mylyn.commons.ui,org.eclipse.swt,org.eclipse.equinox.p2.artifact.repository.source,org.eclipse.equinox.security.ui,org.eclipse.equinox.jsp.jasper,org.eclipse.equinox.registry,org.eclipse.ui,org.eclipse.equinox.security.macosx.source,org.eclipse.platform.doc.isv,org.eclipse.ui.carbon,org.eclipse.ui.views.properties.tabbed.source,org.eclipse.pde.ui,org.eclipse.mylyn.commons.net,org.eclipse.ui.workbench.texteditor.source,org.eclipse.core.databinding.source,org.eclipse.jface.databinding.source,org.eclipse.pde.core.source,org.eclipse.osgi.source,org.eclipse.mylyn.team.ui,org.eclipse.equinox.p2.extensionlocation,org.eclipse.ui.views.log.source,org.eclipse.equinox.p2.core,org.eclipse.equinox.p2.reconciler.dropins.source,org.eclipse.equinox.p2.touchpoint.natives,org.eclipse.core.jobs.source,org.eclipse.equinox.jsp.jasper.source,org.eclipse.help.appserver.source,org.eclipse.ltk.core.refactoring,org.eclipse.swt.carbon.macosx.source,org.eclipse.ui.navigator.source,org.eclipse.equinox.http.servlet,org.eclipse.platform.source,org.eclipse.team.cvs.ssh2,org.eclipse.core.contenttype,org.eclipse.pde.build,org.eclipse.pde.junit.runtime,org.eclipse.help,org.eclipse.compare,org.eclipse.ui.ide.application.source,org.eclipse.debug.ui,org.eclipse.equinox.security.source,org.eclipse.equinox.p2.engine.source,org.eclipse.update.scheduler.source,org.eclipse.update.scheduler,org.eclipse.ui.workbench.source,org.eclipse.mylyn.help.ui,org.eclipse.help.webapp,org.eclipse.team.cvs.ssh2.source,org.eclipse.mylyn.team.cvs,org.eclipse.core.filesystem.macosx,org.eclipse.team.core,org.apache.commons.lang,org.eclipse.jdt.launching.macosx.source,org.junit,org.eclipse.mylyn.tasks.bugs,org.eclipse.osgi.util.source,org.eclipse.equinox.p2.metadata.repository.source,org.eclipse.core.runtime.compatibility.registry.source,org.eclipse.team.ui.source,org.eclipse.equinox.p2.metadata.generator.source,org.eclipse.equinox.p2.ui.sdk,org.apache.lucene.analysis,org.eclipse.jdt.debug.ui.source,org.eclipse.jface.text.source,org.apache.commons.logging.source,org.eclipse.platform,org.eclipse.core.jobs,org.eclipse.ui.editors.source,org.eclipse.compare.source,org.eclipse.update.core.source,org.eclipse.ui.workbench.compatibility,org.eclipse.ui.navigator.resources.source,org.eclipse.jdt.core.source,org.eclipse.mylyn.tasks.ui,org.eclipse.core.filebuffers.source,org.eclipse.ui.views.properties.tabbed,org.eclipse.ui.intro.universal.source,org.eclipse.equinox.p2.engine,org.eclipse.ui.views.source,org.eclipse.equinox.p2.updatechecker.source,org.eclipse.team.cvs.ui,org.mortbay.jetty.source,org.eclipse.ecf.provider.filetransfer,org.eclipse.equinox.p2.artifact.repository,org.eclipse.core.resources,org.eclipse.jdt.core,org.eclipse.core.net,org.eclipse.core.databinding.beans.source,org.eclipse.pde.core,org.eclipse.core.runtime,org.apache.ant,org.apache.lucene,org.eclipse.equinox.p2.core.source,org.eclipse.ui.ide.source,org.eclipse.jdt.doc.isv,org.eclipse.core.runtime.compatibility.registry,org.eclipse.equinox.security.ui.source,org.eclipse.mylyn.ide.ui,org.eclipse.core.databinding,org.eclipse.mylyn.tasks.core,org.eclipse.pde.runtime.source,org.eclipse.core.variables,org.apache.commons.codec,org.eclipse.team.cvs.core,org.eclipse.jdt.core.manipulation.source,org.eclipse.mylyn.compatibility,org.eclipse.equinox.launcher.source,org.eclipse.jdt.junit4.runtime.source,org.eclipse.equinox.app.source,org.apache.commons.httpclient,org.eclipse.ui.navigator,org.eclipse.jdt.debug.source,org.eclipse.core.variables.source,org.eclipse.equinox.p2.directorywatcher.source,org.eclipse.team.ui,org.eclipse.jdt.source,org.eclipse.equinox.launcher,org.eclipse.ant.ui.source,com.ibm.icu.source,org.eclipse.equinox.p2.metadata.repository,org.eclipse.ui.intro,org.eclipse.equinox.p2.garbagecollector,org.eclipse.jsch.core.source,org.eclipse.equinox.p2.metadata,org.eclipse.mylyn.ide.ant,org.apache.commons.logging,org.eclipse.team.cvs.core.source,org.eclipse.jface,org.eclipse.core.runtime.compatibility.source,org.eclipse.sdk,org.eclipse.rcp.source,org.eclipse.ltk.ui.refactoring,org.eclipse.core.runtime.compatibility.auth,org.eclipse.equinox.p2.director.app,org.eclipse.core.commands.source,org.eclipse.core.expressions.source,org.eclipse.ui.intro.source,org.eclipse.team.cvs.ssh.source,org.eclipse.update.core,org.eclipse.core.filebuffers,org.eclipse.core.resources.compatibility,org.eclipse.jdt.launching.macosx,org.eclipse.core.runtime.source,org.eclipse.osgi.util,org.eclipse.mylyn,org.eclipse.ui.workbench.texteditor,org.eclipse.team.cvs.ssh,org.eclipse.mylyn.context.ui,org.eclipse.jdt.core.manipulation,org.eclipse.jdt.junit4.runtime,org.eclipse.equinox.frameworkadmin,org.eclipse.pde.api.tools.source,org.eclipse.equinox.simpleconfigurator,org.eclipse.search.source,org.eclipse.pde.junit.runtime.source,org.eclipse.ui.cheatsheets.source,org.eclipse.swt.carbon.macosx,org.eclipse.update.ui.source,org.eclipse.jdt.debug,com.jcraft.jsch,org.eclipse.ui.browser.source,org.eclipse.pde.p2.ui,org.eclipse.pde.build.source,org.eclipse.equinox.simpleconfigurator.source,org.eclipse.equinox.p2.garbagecollector.source,org.eclipse.equinox.p2.updatechecker,org.eclipse.ui.carbon.source,org.eclipse.team.cvs.ui.source,org.eclipse.mylyn.bugzilla.ide,org.apache.jasper,org.eclipse.ui.workbench.compatibility.source,org.eclipse.ui.externaltools.source,org.eclipse.osgi.services,org.eclipse.help.ui.source,org.apache.lucene.analysis.source,org.eclipse.pde.ui.templates.source,org.eclipse.ui.forms.source,org.eclipse.help.base,org.eclipse.equinox.p2.jarprocessor.source,org.eclipse.core.databinding.beans,org.eclipse.equinox.p2.touchpoint.natives.source,org.eclipse.jface.databinding,org.eclipse.jdt.junit,org.eclipse.equinox.http.jetty.source,org.eclipse.jdt.launching.source,org.eclipse.ant.core,org.eclipse.ui.navigator.resources,org.eclipse.rcp,org.eclipse.osgi,org.eclipse.ecf.provider.filetransfer.ssl,org.eclipse.jsch.ui.source,org.eclipse.core.runtime.compatibility,org.apache.commons.el,org.eclipse.ui.console.source,org.sat4j.core,org.eclipse.equinox.p2.ui.sdk.source,org.eclipse.ltk.core.refactoring.source,org.eclipse.equinox.jsp.jasper.registry.source,org.eclipse.equinox.p2.director.source,org.eclipse.ui.externaltools,org.eclipse.jdt.junit.runtime,org.eclipse.help.ui,org.eclipse.ecf.ssl,org.eclipse.update.configurator,org.eclipse.help.source,org.eclipse.core.runtime.compatibility.auth.source,org.eclipse.jface.text,org.eclipse.equinox.http.registry,org.eclipse.equinox.http.registry.source,org.eclipse.core.filesystem.source,org.eclipse.text,org.eclipse.update.configurator.source,org.eclipse.equinox.frameworkadmin.source,org.eclipse.jdt.ui,org.eclipse.jface.source,org.eclipse.equinox.p2.ui.source,org.eclipse.ui.forms,org.eclipse.debug.core.source"/>
+<stringAttribute key="selected_target_plugins" value="org.eclipse.equinox.app.source,org.eclipse.osgi.util.source,org.eclipse.equinox.frameworkadmin.source,org.eclipse.core.databinding,org.apache.jasper.source,org.eclipse.team.ui,org.eclipse.debug.core,org.eclipse.mylyn.bugzilla.ui,org.eclipse.equinox.p2.engine,org.eclipse.jface.databinding,org.eclipse.pde.api.tools.ui,org.eclipse.help.ui.source,org.eclipse.core.variables.source,org.eclipse.equinox.launcher.carbon.macosx,org.junit,org.eclipse.equinox.frameworkadmin,org.eclipse.osgi,org.eclipse.ui.workbench.compatibility.source,org.eclipse.equinox.launcher,org.eclipse.swt,org.eclipse.mylyn,javax.servlet.jsp.source,org.eclipse.ecf.provider.filetransfer.ssl,org.eclipse.ecf.provider.filetransfer,javax.servlet,org.eclipse.equinox.jsp.jasper,org.eclipse.equinox.security.source,org.eclipse.core.resources.compatibility,org.eclipse.pde.api.tools.ui.source,org.eclipse.equinox.p2.updatechecker,org.eclipse.equinox.p2.garbagecollector,org.eclipse.ui.intro.universal,org.eclipse.pde.source,org.eclipse.jdt.launching.macosx,org.eclipse.core.runtime.compatibility.registry,org.eclipse.platform.doc.user,org.eclipse.equinox.p2.touchpoint.natives.source,org.eclipse.equinox.p2.touchpoint.natives,org.eclipse.mylyn.commons.ui,org.eclipse.mylyn.team.ui,org.eclipse.ui.browser.source,org.eclipse.mylyn.monitor.ui,org.eclipse.core.net,org.eclipse.equinox.p2.core,org.eclipse.core.commands.source,org.eclipse.ui.browser,org.apache.commons.logging,org.eclipse.equinox.security,org.eclipse.equinox.p2.metadata.source,org.eclipse.equinox.simpleconfigurator.source,org.eclipse.core.resources,org.eclipse.osgi.services,org.eclipse.equinox.security.macosx,org.eclipse.equinox.p2.exemplarysetup,org.eclipse.help.source,org.eclipse.help.base,org.eclipse.jsch.ui.source,org.eclipse.equinox.p2.ui.source,org.eclipse.ui.console.source,org.eclipse.rcp.source,org.eclipse.core.jobs,org.eclipse.equinox.p2.director.app,org.eclipse.equinox.p2.metadata.generator,org.eclipse.equinox.p2.console,org.eclipse.core.boot,org.eclipse.equinox.p2.jarprocessor,org.eclipse.equinox.registry.source,org.eclipse.core.resources.compatibility.source,org.eclipse.jdt.ui,org.eclipse.equinox.common,org.eclipse.equinox.http.servlet,org.eclipse.pde.ui.source,org.eclipse.ui.workbench.source,org.sat4j.pb,org.eclipse.ltk.core.refactoring.source,org.eclipse.swt.carbon.macosx,org.eclipse.equinox.p2.reconciler.dropins.source,org.eclipse.mylyn.resources.ui,org.eclipse.ant.core,org.eclipse.ui.navigator.source,org.eclipse.team.cvs.core.source,org.eclipse.ltk.core.refactoring,org.eclipse.ui.ide.source,org.eclipse.ui.views.log,org.eclipse.equinox.http.registry,org.apache.commons.httpclient,org.eclipse.help.appserver,org.eclipse.jface,org.eclipse.core.contenttype.source,org.eclipse.ui.navigator.resources,org.eclipse.ui.views.source,org.eclipse.equinox.security.ui.source,org.eclipse.mylyn.java.tasks,org.eclipse.equinox.p2.updatesite.source,javax.servlet.jsp,org.apache.commons.logging.source,org.eclipse.ui.intro.universal.source,org.eclipse.ui.source,org.apache.lucene,org.eclipse.pde.build,org.eclipse.ecf.identity,org.eclipse.pde.ui.templates,org.eclipse.equinox.p2.updatechecker.source,org.eclipse.update.ui.source,org.eclipse.core.filesystem.source,org.eclipse.update.scheduler.source,org.apache.lucene.analysis.source,org.eclipse.core.runtime.compatibility.source,org.eclipse.team.cvs.core,org.eclipse.text,org.eclipse.core.filesystem,org.eclipse.mylyn.commons.core,org.eclipse.ui.net,org.eclipse.equinox.registry,org.apache.lucene.analysis,org.eclipse.ui.workbench.compatibility,org.eclipse.pde.junit.runtime.source,org.eclipse.equinox.p2.ui,org.eclipse.ui.workbench.texteditor,org.eclipse.equinox.simpleconfigurator.manipulator,org.eclipse.equinox.http.jetty,org.eclipse.equinox.preferences,org.eclipse.pde.runtime.source,org.eclipse.ui.intro,org.eclipse.equinox.launcher.source,org.eclipse.mylyn.compatibility,org.eclipse.ui.workbench.texteditor.source,org.eclipse.equinox.preferences.source,org.eclipse.equinox.p2.ui.sdk,org.eclipse.core.net.source,org.eclipse.mylyn.help.ui,org.eclipse.core.runtime.source,org.eclipse.equinox.p2.ui.sdk.source,org.eclipse.ui.navigator,org.eclipse.swt.carbon.macosx.source,org.eclipse.team.core,org.eclipse.equinox.jsp.jasper.registry,org.eclipse.jdt.debug.ui.source,org.eclipse.ecf.ssl,org.eclipse.team.cvs.ui,org.eclipse.osgi.util,org.eclipse.equinox.p2.touchpoint.eclipse.source,org.eclipse.equinox.jsp.jasper.registry.source,org.apache.commons.el.source,org.eclipse.ui.cheatsheets.source,org.eclipse.core.databinding.beans,org.eclipse.mylyn.tasks.ui,org.eclipse.equinox.p2.metadata.repository.source,org.eclipse.update.configurator,org.eclipse.jdt.junit4.runtime.source,org.eclipse.mylyn.pde.ui,org.eclipse.cvs,org.eclipse.equinox.p2.directorywatcher,org.eclipse.equinox.p2.exemplarysetup.source,org.eclipse.equinox.security.ui,org.eclipse.pde.p2.ui,org.eclipse.core.filebuffers,org.eclipse.ui.externaltools.source,org.eclipse.rcp,org.eclipse.core.filesystem.macosx,org.eclipse.equinox.p2.metadata.generator.source,org.eclipse.ui.views.properties.tabbed,org.eclipse.core.runtime.compatibility,org.eclipse.core.resources.source,org.eclipse.platform.doc.isv,org.apache.ant.source,org.eclipse.ui,com.jcraft.jsch,org.apache.jasper,org.eclipse.pde.ui,org.eclipse.core.runtime,org.eclipse.equinox.http.servlet.source,org.eclipse.debug.ui.source,org.eclipse.core.jobs.source,org.eclipse.jdt.junit.runtime,org.eclipse.pde.build.source,org.eclipse.search,org.eclipse.help.webapp,org.eclipse.equinox.p2.director.app.source,org.eclipse.pde,org.eclipse.ui.ide.application.source,org.eclipse.equinox.p2.artifact.repository,org.apache.commons.lang,org.eclipse.equinox.p2.extensionlocation.source,org.apache.lucene.source,org.eclipse.core.runtime.compatibility.registry.source,org.eclipse.jdt.launching.macosx.source,org.eclipse.team.cvs.ssh2,org.eclipse.equinox.http.jetty.source,org.sat4j.core,org.eclipse.mylyn.bugzilla.ide,org.eclipse.help.webapp.source,org.eclipse.pde.ui.templates.source,org.eclipse.equinox.p2.reconciler.dropins,org.eclipse.equinox.p2.updatesite,org.eclipse.ant.ui,org.eclipse.ui.ide,org.eclipse.core.runtime.compatibility.auth,org.eclipse.jface.source,org.eclipse.jface.text.source,org.eclipse.ant.core.source,org.eclipse.osgi.services.source,org.eclipse.equinox.p2.extensionlocation,org.eclipse.jdt.core.manipulation.source,org.objectweb.asm.source,org.eclipse.ecf.filetransfer,org.eclipse.help,org.eclipse.ui.presentations.r21.source,org.eclipse.jdt.debug,org.eclipse.search.source,org.eclipse.ui.console,org.eclipse.team.cvs.ssh2.source,org.eclipse.jdt,org.eclipse.equinox.p2.core.source,org.eclipse.sdk,org.eclipse.team.ui.source,org.eclipse.equinox.p2.artifact.repository.source,org.eclipse.jsch.core.source,org.eclipse.ui.editors.source,org.eclipse.update.configurator.source,org.eclipse.jface.databinding.source,org.eclipse.core.expressions.source,org.eclipse.equinox.p2.jarprocessor.source,org.eclipse.text.source,org.eclipse.equinox.http.registry.source,org.eclipse.ui.intro.source,org.junit4,org.eclipse.equinox.p2.directorywatcher.source,org.eclipse.pde.core,org.eclipse.debug.ui,org.eclipse.equinox.simpleconfigurator.manipulator.source,org.eclipse.equinox.jsp.jasper.source,org.eclipse.mylyn.context.ui,org.apache.commons.codec,org.mortbay.jetty.source,org.eclipse.equinox.p2.metadata,org.eclipse.equinox.app,org.eclipse.update.ui,org.eclipse.jdt.ui.source,org.eclipse.ant.ui.source,org.eclipse.ui.carbon.source,org.eclipse.jface.text,org.eclipse.pde.p2.ui.source,org.eclipse.ltk.ui.refactoring,org.eclipse.team.cvs.ssh.source,org.eclipse.equinox.frameworkadmin.equinox.source,org.eclipse.pde.api.tools,org.eclipse.core.commands,com.ibm.icu,org.eclipse.equinox.frameworkadmin.equinox,org.eclipse.jdt.junit.source,org.eclipse.ui.externaltools,org.eclipse.ltk.ui.refactoring.source,com.ibm.icu.source,org.eclipse.core.contenttype,org.eclipse.equinox.common.source,org.eclipse.equinox.simpleconfigurator,org.eclipse.core.databinding.source,org.eclipse.jsch.core,org.eclipse.jdt.doc.isv,org.eclipse.jdt.junit4.runtime,org.eclipse.debug.core.source,org.eclipse.jdt.debug.source,org.junit4.source,org.eclipse.compare.source,org.eclipse.jdt.core.source,org.eclipse.jdt.core,org.eclipse.core.filebuffers.source,org.eclipse.ui.forms.source,org.eclipse.equinox.p2.touchpoint.eclipse,org.eclipse.equinox.p2.director,org.eclipse.jdt.launching,org.eclipse.mylyn.ide.ui,org.eclipse.core.runtime.compatibility.auth.source,org.apache.commons.el,org.eclipse.ui.presentations.r21,org.eclipse.jsch.ui,org.eclipse.help.base.source,org.junit.source,org.eclipse.osgi.source,org.eclipse.core.variables,org.eclipse.core.expressions,org.eclipse.mylyn.bugzilla.core,org.apache.ant,org.eclipse.equinox.p2.garbagecollector.source,org.eclipse.platform.source,org.eclipse.team.core.source,org.eclipse.update.core,org.objectweb.asm,org.eclipse.jdt.core.manipulation,org.eclipse.pde.core.source,org.eclipse.ui.editors,org.eclipse.ui.navigator.resources.source,org.eclipse.equinox.p2.metadata.repository,org.eclipse.pde.runtime,org.eclipse.update.scheduler,org.eclipse.jdt.junit,org.eclipse.core.databinding.beans.source,org.eclipse.team.cvs.ui.source,org.eclipse.ecf,org.eclipse.equinox.security.macosx.source,org.eclipse.jdt.junit.runtime.source,org.eclipse.jdt.doc.user,org.eclipse.update.core.source,org.eclipse.help.appserver.source,org.eclipse.pde.doc.user,org.eclipse.ui.ide.application,org.eclipse.equinox.p2.director.source,org.eclipse.cvs.source,org.eclipse.jdt.launching.source,org.eclipse.platform,org.eclipse.mylyn.ide.ant,org.eclipse.team.cvs.ssh,org.eclipse.ui.views.properties.tabbed.source,org.eclipse.pde.junit.runtime,org.eclipse.compare,org.eclipse.equinox.p2.engine.source,javax.servlet.source,org.eclipse.mylyn.tasks.core,org.eclipse.help.ui,org.eclipse.ui.views.log.source,org.eclipse.jdt.debug.ui,org.eclipse.ui.carbon,org.eclipse.mylyn.team.cvs,org.eclipse.mylyn.commons.net,org.eclipse.jdt.source,org.eclipse.equinox.p2.console.source,org.eclipse.ui.forms,org.eclipse.ui.views,org.eclipse.ui.net.source,org.eclipse.pde.api.tools.source,org.eclipse.ui.workbench,org.mortbay.jetty,org.eclipse.ui.cheatsheets,org.eclipse.mylyn.tasks.bugs"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
 <booleanAttribute key="useDefaultConfig" value="true"/>
diff --git a/org.eclipse.ajdt.core.tests/src/org/eclipse/ajdt/core/tests/AllCoreTests.java b/org.eclipse.ajdt.core.tests/src/org/eclipse/ajdt/core/tests/AllCoreTests.java
index add4ad8..644ec34 100644
--- a/org.eclipse.ajdt.core.tests/src/org/eclipse/ajdt/core/tests/AllCoreTests.java
+++ b/org.eclipse.ajdt.core.tests/src/org/eclipse/ajdt/core/tests/AllCoreTests.java
@@ -26,6 +26,7 @@
 import org.eclipse.ajdt.core.tests.builder.CoreOutputLocationManagerTest;
 import org.eclipse.ajdt.core.tests.codeconversion.AspectsConvertingParserTest;
 import org.eclipse.ajdt.core.tests.codeconversion.CodeCheckerTest;
+import org.eclipse.ajdt.core.tests.contentassist.ContentAssistTests;
 import org.eclipse.ajdt.core.tests.dom.rewrite.ASTRewritingPointcutDeclTest;
 import org.eclipse.ajdt.core.tests.javaelements.AspectElementTests;
 import org.eclipse.ajdt.core.tests.model.AJCodeElementTest;
@@ -110,7 +111,7 @@
 		// commenting out for now
 //        suite.addTest(new TestSuite(ProblemFinderTests.class));
 //        suite.addTest(new TestSuite(ProblemFinderTests2.class));
-		
+		suite.addTest(new TestSuite(ContentAssistTests.class));
 		return suite;
 	}
 }
diff --git a/org.eclipse.ajdt.core.tests/src/org/eclipse/ajdt/core/tests/codeconversion/AspectsConvertingParserTest.java b/org.eclipse.ajdt.core.tests/src/org/eclipse/ajdt/core/tests/codeconversion/AspectsConvertingParserTest.java
index 457e11e..cd11020 100644
--- a/org.eclipse.ajdt.core.tests/src/org/eclipse/ajdt/core/tests/codeconversion/AspectsConvertingParserTest.java
+++ b/org.eclipse.ajdt.core.tests/src/org/eclipse/ajdt/core/tests/codeconversion/AspectsConvertingParserTest.java
@@ -11,12 +11,9 @@
  *******************************************************************************/
 package org.eclipse.ajdt.core.tests.codeconversion;
 
-import java.util.List;
-
 import org.eclipse.ajdt.core.codeconversion.AspectsConvertingParser;
 import org.eclipse.ajdt.core.codeconversion.ConversionOptions;
 import org.eclipse.ajdt.core.tests.AJDTCoreTestCase;
-import org.eclipse.jdt.core.IType;
 
 public class AspectsConvertingParserTest extends AJDTCoreTestCase {
 
diff --git a/org.eclipse.ajdt.core.tests/src/org/eclipse/ajdt/core/tests/contentassist/ContentAssistTests.java b/org.eclipse.ajdt.core.tests/src/org/eclipse/ajdt/core/tests/contentassist/ContentAssistTests.java
new file mode 100644
index 0000000..31c4e82
--- /dev/null
+++ b/org.eclipse.ajdt.core.tests/src/org/eclipse/ajdt/core/tests/contentassist/ContentAssistTests.java
@@ -0,0 +1,221 @@
+package org.eclipse.ajdt.core.tests.contentassist;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.ajdt.core.AspectJCore;
+import org.eclipse.ajdt.core.javaelements.AJCompilationUnit;
+import org.eclipse.ajdt.core.tests.AJDTCoreTestCase;
+import org.eclipse.ajdt.internal.core.AJWorkingCopyOwner;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.CompletionProposal;
+import org.eclipse.jdt.core.CompletionRequestor;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.internal.core.JavaModelManager;
+
+/**
+ * Tests a whole bunch of ways that ITDs can show up in content assist
+ * @author andrew
+ *
+ */
+public class ContentAssistTests extends AJDTCoreTestCase {
+    AJCompilationUnit hasITDsUnit;
+    AJCompilationUnit usesITDsUnit;
+    
+    String hasITDsContents;
+    String usesITDsContents;
+    
+    protected void setUp() throws Exception {
+        super.setUp();
+        IProject proj = createPredefinedProject("ITDContentAssist");
+        
+        hasITDsUnit = (AJCompilationUnit) AspectJCore.create(proj.getFile("src/hasitds/HasITDs.aj"));
+        hasITDsUnit.becomeWorkingCopy(null);
+        JavaModelManager.getJavaModelManager().getPerWorkingCopyInfo(hasITDsUnit, true, false, null);
+        
+        usesITDsUnit = (AJCompilationUnit) AspectJCore.create(proj.getFile("src/uses/UsesITDs.aj"));
+        usesITDsUnit.becomeWorkingCopy(null);
+        JavaModelManager.getJavaModelManager().getPerWorkingCopyInfo(usesITDsUnit, true, false, null);
+        
+        hasITDsUnit.requestOriginalContentMode();
+        hasITDsContents = new String(hasITDsUnit.getContents());
+        hasITDsUnit.discardOriginalContentMode();
+
+        usesITDsUnit.requestOriginalContentMode();
+        usesITDsContents = new String(usesITDsUnit.getContents());
+        usesITDsUnit.discardOriginalContentMode();
+    }
+    
+    public void testITDField() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = hasITDsContents.indexOf("this.lis") + "this.lis".length();
+        hasITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 1 proposal, but found:\n" + requestor.toString(), 1, requestor.accepted.size());
+        assertEquals("Proposal should have been the 'list' field", 
+                "list", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+    }
+    
+    public void testITDFieldInField() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = hasITDsContents.indexOf("this.list.addAll") + "this.list.addAll".length();
+        hasITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 2 proposals, but found:\n" + requestor.toString(), 2, requestor.accepted.size());
+        assertEquals("Proposal should have been the 'addAll' method\n" + requestor.accepted.get(0), 
+                "addAll", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+        assertEquals("Proposal should have been the 'addAll' method\n" + requestor.accepted.get(1), 
+                "addAll", new String(((CompletionProposal) requestor.accepted.get(1)).getName())); 
+    }
+    
+    public void testITDMethod() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = hasITDsContents.indexOf("this.makeL") + "this.makeL".length();
+        hasITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 1 proposal, but found:\n" + requestor.toString(), 1, requestor.accepted.size());
+        assertEquals("Proposal should have been the 'makeList' method\n" + requestor.accepted.get(0),
+                "makeList", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+    }
+    
+    public void testITDConstructor() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = hasITDsContents.indexOf("new HasITDs(") + "new HasITDs(".length();
+        hasITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 2 proposals, but found:\n" + requestor.toString(), 2, requestor.accepted.size());
+
+        // the anonymous class decl
+        assertEquals("Signature of proposal should have been the 'HasITDs' constructor\n" + requestor.accepted.get(0), 
+                "HasITDs", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+        // the constructor
+        assertEquals("Proposal should have been the 'HasITDs' constructor\n" + requestor.accepted.get(1), 
+                "Lhasitds.HasITDs;", new String(((CompletionProposal) requestor.accepted.get(1)).getDeclarationSignature()));
+    }
+    
+    public void testFromDeclareParent() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = hasITDsContents.indexOf("this.insid") + "this.insid".length();
+        hasITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 1 proposal, but found:\n" + requestor.toString(), 1, requestor.accepted.size());
+
+        assertEquals("Signature of proposal should have been the 'Foo.inside' field\n" + requestor.accepted.get(0), 
+                "inside", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+    }
+
+    public void testFromITDOnDeclareParent() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = hasITDsContents.indexOf("this.valu") + "this.valu".length();
+        hasITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 1 proposal, but found:\n" + requestor.toString(), 1, requestor.accepted.size());
+
+        assertEquals("Signature of proposal should have been the 'Foo.value' field\n" + requestor.accepted.get(0), 
+                "value", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+    }
+    
+    
+    // the remaining tests try the same thing, but in a different class
+
+    public void testITDFieldInOtherClass() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = usesITDsContents.indexOf("h.lis") + "h.lis".length();
+        usesITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 1 proposal, but found:\n" + requestor.toString(), 1, requestor.accepted.size());
+        assertEquals("Proposal should have been the 'list' field", 
+                "list", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+    }
+    
+    public void testITDFieldInFieldInOtherClass() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = usesITDsContents.indexOf("h.list.addAl") + "h.list.addAl".length();
+        usesITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 2 proposals, but found:\n" + requestor.toString(), 2, requestor.accepted.size());
+        assertEquals("Proposal should have been the 'addAll' method\n" + requestor.accepted.get(0), 
+                "addAll", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+        assertEquals("Proposal should have been the 'addAll' method\n" + requestor.accepted.get(1), 
+                "addAll", new String(((CompletionProposal) requestor.accepted.get(1)).getName())); 
+    }
+    
+    public void testITDMethodInOtherClass() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = usesITDsContents.indexOf("h.makeL") + "h.makeL".length();
+        usesITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 1 proposal, but found:\n" + requestor.toString(), 1, requestor.accepted.size());
+        assertEquals("Proposal should have been the 'makeList' method\n" + requestor.accepted.get(0),
+                "makeList", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+    }
+    
+    public void testITDConstructorInOtherClass() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = usesITDsContents.indexOf("new HasITDs(") + "new HasITDs(".length();
+        usesITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 2 proposals, but found:\n" + requestor.toString(), 2, requestor.accepted.size());
+
+        // the anonymous class decl
+        assertEquals("Signature of proposal should have been the 'HasITDs' constructor\n" + requestor.accepted.get(0), 
+                "HasITDs", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+        // the constructor
+        assertEquals("Proposal should have been the 'HasITDs' constructor\n" + requestor.accepted.get(1), 
+                "Lhasitds.HasITDs;", new String(((CompletionProposal) requestor.accepted.get(1)).getDeclarationSignature()));
+    }
+    
+    public void testFromDeclareParentInOtherClass() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = usesITDsContents.indexOf("h.insid") + "h.insid".length();
+        usesITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 1 proposal, but found:\n" + requestor.toString(), 1, requestor.accepted.size());
+
+        assertEquals("Signature of proposal should have been the 'Foo.inside' field\n" + requestor.accepted.get(0), 
+                "inside", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+    }
+
+    public void testFromITDOnDeclareParentInOtherClass() throws Exception {
+        MockCompletionRequestor requestor = new MockCompletionRequestor();
+        int offset = usesITDsContents.indexOf("h.valu") + "h.valu".length();
+        usesITDsUnit.codeComplete(offset, requestor, AJWorkingCopyOwner.INSTANCE);
+        
+        assertEquals("Should have 1 proposal, but found:\n" + requestor.toString(), 1, requestor.accepted.size());
+
+        assertEquals("Signature of proposal should have been the 'Foo.value' field\n" + requestor.accepted.get(0), 
+                "value", new String(((CompletionProposal) requestor.accepted.get(0)).getName())); 
+    }
+
+}
+
+class MockCompletionRequestor extends CompletionRequestor {
+    
+    List accepted = new LinkedList();
+    
+    public void accept(CompletionProposal proposal) {
+        accepted.add(proposal);
+    }
+    
+    public List getAccepted() {
+        return accepted;
+    }
+    
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        sb.append("Accepted completion proposals:\n");
+        if (accepted.size() > 0) {
+            for (Iterator iterator = accepted.iterator(); iterator.hasNext();) {
+                CompletionProposal proposal = (CompletionProposal) iterator.next();
+                sb.append("\t" + proposal.toString() + "\n");
+            }
+        } else {
+            sb.append("\t<none>\n");
+        }
+        return sb.toString();
+    }
+    
+}
\ No newline at end of file
diff --git a/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/.classpath b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/.classpath
new file mode 100644
index 0000000..9424d31
--- /dev/null
+++ b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.ajdt.core.ASPECTJRT_CONTAINER"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/.cvsignore b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/.cvsignore
new file mode 100644
index 0000000..ba077a4
--- /dev/null
+++ b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/.cvsignore
@@ -0,0 +1 @@
+bin
diff --git a/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/.project b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/.project
new file mode 100644
index 0000000..0944d00
--- /dev/null
+++ b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/.project
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>ITDContentAssist</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.ajdt.core.ajbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.ajdt.ui.ajnature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/src/hasitds/HasITDs.aj b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/src/hasitds/HasITDs.aj
new file mode 100644
index 0000000..a58f7de
--- /dev/null
+++ b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/src/hasitds/HasITDs.aj
@@ -0,0 +1,15 @@
+package hasitds;
+
+import itds.ITDAspect;
+import java.util.List;
+
+public class HasITDs {
+
+	public void tryItOut() {
+		this.list.addAll(null);
+		this.makeList(4);
+		new HasITDs(6);
+		this.value = 9;
+		this.inside = 9; 
+	} 
+}
diff --git a/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/src/itds/ITDAspect.aj b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/src/itds/ITDAspect.aj
new file mode 100644
index 0000000..15d6b86
--- /dev/null
+++ b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/src/itds/ITDAspect.aj
@@ -0,0 +1,25 @@
+package itds;
+import java.util.ArrayList;
+import java.util.List;
+import hasitds.HasITDs;
+
+
+
+public aspect ITDAspect {
+	public List<String> HasITDs.list;
+	public java.util.List<String> HasITDs.makeList(int size) {
+		return new ArrayList<String>();
+	}
+	public HasITDs.new(int x) {
+		this();
+		list = new ArrayList<String>(); 
+	} 
+	 
+	public static class Super {
+		public int inside =9;
+	}
+	
+	public int Super.value = 7;
+	
+	declare parents : HasITDs extends Super;
+}
\ No newline at end of file
diff --git a/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/src/uses/UsesITDs.aj b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/src/uses/UsesITDs.aj
new file mode 100644
index 0000000..7b2fa31
--- /dev/null
+++ b/org.eclipse.ajdt.core.tests/workspace/ITDContentAssist/src/uses/UsesITDs.aj
@@ -0,0 +1,14 @@
+package uses;
+
+import hasitds.HasITDs;
+import java.util.List;
+
+class UsesITDs {
+	public void tryItOut() {
+		HasITDs h = new HasITDs(6);
+		h.list.addAll(null);
+		h.makeList(4);
+		h.value = 9;
+		h.inside = 9; 
+	} 
+}
