diff --git a/bundles/org.eclipse.equinox.common/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.common/.settings/org.eclipse.jdt.core.prefs
index 9208aea..3e7cc79 100644
--- a/bundles/org.eclipse.equinox.common/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.common/.settings/org.eclipse.jdt.core.prefs
@@ -59,11 +59,11 @@
 org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/boot/PlatformURLConnection.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/boot/PlatformURLConnection.java
index b039e86..5435906 100644
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/boot/PlatformURLConnection.java
+++ b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/boot/PlatformURLConnection.java
@@ -222,13 +222,6 @@
 		System.out.println("URL " + s); //$NON-NLS-1$
 	}
 
-	/**
-	 * @throws IOException
-	 */
-	public URL[] getAuxillaryURLs() throws IOException {
-		return null;
-	}
-
 	@Override
 	public synchronized InputStream getInputStream() throws IOException {
 		if (!connected)
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/AdapterManager.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/AdapterManager.java
index fff35fb..07909a1 100644
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/AdapterManager.java
+++ b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/AdapterManager.java
@@ -194,7 +194,6 @@
 	 * Computes the adapters that the provided class can adapt to, along
 	 * with the factory object that can perform that transformation. Returns 
 	 * a table of adapter class name to factory object.
-	 * @param adaptable
 	 */
 	private Map<String, IAdapterFactory> getFactories(Class<? extends Object> adaptable) {
 		//cache reference to lookup to protect against concurrent flush
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/PlatformURLPluginConnection.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/PlatformURLPluginConnection.java
index fd3c448..1386ae6 100644
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/PlatformURLPluginConnection.java
+++ b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/PlatformURLPluginConnection.java
@@ -23,7 +23,6 @@
  */
 public class PlatformURLPluginConnection extends PlatformURLConnection {
 
-	private Bundle target = null;
 	private static boolean isRegistered = false;
 	public static final String PLUGIN = "plugin"; //$NON-NLS-1$
 
@@ -89,32 +88,4 @@
 		PlatformURLHandler.register(PLUGIN, PlatformURLPluginConnection.class);
 		isRegistered = true;
 	}
-
-	@Override
-	public URL[] getAuxillaryURLs() throws IOException {
-		if (target == null) {
-			String spec = url.getFile().trim();
-			if (spec.startsWith("/")) //$NON-NLS-1$
-				spec = spec.substring(1);
-			if (!spec.startsWith(PLUGIN))
-				throw new IOException(NLS.bind(CommonMessages.url_badVariant, url));
-			int ix = spec.indexOf("/", PLUGIN.length() + 1); //$NON-NLS-1$
-			String ref = ix == -1 ? spec.substring(PLUGIN.length() + 1) : spec.substring(PLUGIN.length() + 1, ix);
-			String id = getId(ref);
-			Activator activator = Activator.getDefault();
-			if (activator == null)
-				throw new IOException(CommonMessages.activator_not_available);
-			target = activator.getBundle(id);
-			if (target == null)
-				throw new IOException(NLS.bind(CommonMessages.url_resolvePlugin, url));
-		}
-		Bundle[] fragments = Activator.getDefault().getFragments(target);
-		int fragmentLength = (fragments == null) ? 0 : fragments.length;
-		if (fragmentLength == 0)
-			return null;
-		URL[] result = new URL[fragmentLength];
-		for (int i = 0; i < fragmentLength; i++)
-			result[i] = fragments[i].getEntry("/"); //$NON-NLS-1$
-		return result;
-	}
 }
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/URIUtil.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/URIUtil.java
index a568942..a6dd3a1 100644
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/URIUtil.java
+++ b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/URIUtil.java
@@ -299,7 +299,7 @@
 	/**
 	 * Returns a URI as a URL.
 	 * 
-	 * @throws MalformedURLException 
+	 * <p>Better use {@link URI#toURL()} instead.</p>
 	 */
 	public static URL toURL(URI uri) throws MalformedURLException {
 		return new URL(uri.toString());
