diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescriber.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescriber.java
index c5e537a..79cc24a 100644
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescriber.java
+++ b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescriber.java
@@ -65,24 +65,24 @@
 	int VALID = 2;
 
 	/**
-	 * Tries to fill a description for the given contents. Returns
-	 * an <code>int</code> indicating whether the given stream of
-	 * bytes represents a valid sample for its corresponding content type.
-	 * If no content description is provided, this method should perform
-	 * content type validation.
+	 * Tries to fill a description for the given contents. Returns an
+	 * <code>int</code> indicating whether the given stream of bytes represents a
+	 * valid sample for its corresponding content type. If no content description is
+	 * provided, this method should perform content type validation.
 	 * <p>
-	 * The input stream must be kept open, and any IOExceptions while
-	 * reading the stream should flow to the caller.
+	 * The input stream must be kept open, and any IOExceptions while reading the
+	 * stream should flow to the caller.
 	 * </p>
 	 *
-	 * @param contents the contents to be examined
+	 * @param contents    the contents to be examined
 	 * @param description a description to be filled in, or <code>null</code> if
-	 * only content type validation is to be performed
-	 * @return one of the following:<ul>
-	 * <li><code>VALID</code></li>,
-	 * <li><code>INVALID</code></li>,
-	 * <li><code>INDETERMINATE</code></li>
-	 * </ul>
+	 *                    only content type validation is to be performed
+	 * @return one of the following:
+	 *         <ul>
+	 *         <li><code>VALID</code></li>
+	 *         <li><code>INVALID</code></li>
+	 *         <li><code>INDETERMINATE</code></li>
+	 *         </ul>
 	 * @throws IOException if an I/O error occurs
 	 * @see IContentDescription
 	 * @see #VALID
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeManager.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeManager.java
index e8ef958..8833ff3 100644
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeManager.java
+++ b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeManager.java
@@ -153,18 +153,19 @@
 	}
 
 	/**
-	 * Content type identifier constant for platform's primary
-	 * text-based content type: <code>org.eclipse.core.runtime.text</code>.
+	 * Content type identifier constant for platform's primary text-based content
+	 * type: <code>org.eclipse.core.runtime.text</code>.
 	 * <p>
 	 * All text-based content types ought to be sub types of the content type
-	 * identified by this string. This provides a simple way for detecting
-	 * whether a content type is text-based:
+	 * identified by this string. This provides a simple way for detecting whether a
+	 * content type is text-based:
+	 * </p>
+	 * 
 	 * <pre>
 	 * IContentType text = Platform.getContentTypeManager().getContentType(IContentTypeManager.CT_TEXT);
 	 * IContentType someType = ...;
 	 * boolean isTextBased = someType.isKindOf(text);
 	 * </pre>
-	 * </p>
 	 */
 	String CT_TEXT = "org.eclipse.core.runtime.text"; //$NON-NLS-1$
 
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobManager.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobManager.java
index fc45ad5..15f5521 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobManager.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobManager.java
@@ -62,13 +62,13 @@
 	/**
 	 * Begins applying this rule in the calling thread.  If the rule conflicts with another
 	 * rule currently running in another thread, this method blocks until there are
-	 * no conflicting rules.  Calls to <tt>beginRule</tt> must eventually be followed
-	 * by a matching call to <tt>endRule</tt> in the same thread and with the identical
+	 * no conflicting rules.  Calls to <code>beginRule</code> must eventually be followed
+	 * by a matching call to <code>endRule</code> in the same thread and with the identical
 	 * rule instance.
 	 * <p>
-	 * Rules can be nested only if the rule for the inner <tt>beginRule</tt>
-	 * is contained within the rule for the outer <tt>beginRule</tt>.  Rule containment
-	 * is tested with the API method <tt>ISchedulingRule.contains</tt>.  Also, begin/end
+	 * Rules can be nested only if the rule for the inner <code>beginRule</code>
+	 * is contained within the rule for the outer <code>beginRule</code>.  Rule containment
+	 * is tested with the API method <code>ISchedulingRule.contains</code>.  Also, begin/end
 	 * pairs must be strictly nested.  Only the rule that has most recently begun
 	 * can be ended at any given time.
 	 * <p>
@@ -79,7 +79,7 @@
 	 * If this method is called from within a job that has a scheduling rule, the
 	 * given rule must also be contained within the rule for the running job.
 	 * <p>
-	 * Note that <tt>endRule</tt> must be called even if <tt>beginRule</tt> fails.
+	 * Note that <code>endRule</code> must be called even if <code>beginRule</code> fails.
 	 * The recommended usage is:
 	 * <pre>
 	 * final ISchedulingRule rule = ...;
@@ -169,12 +169,12 @@
 	Job currentJob();
 
 	/**
-	 * Ends the application of a rule to the calling thread.  Calls to <tt>endRule</tt>
-	 * must be preceded by a matching call to <tt>beginRule</tt> in the same thread
+	 * Ends the application of a rule to the calling thread.  Calls to <code>endRule</code>
+	 * must be preceded by a matching call to <code>beginRule</code> in the same thread
 	 * with an identical rule instance.
 	 * <p>
-	 * Rules can be nested only if the rule for the inner <tt>beginRule</tt>
-	 * is contained within the rule for the outer <tt>beginRule</tt>.  Also, begin/end
+	 * Rules can be nested only if the rule for the inner <code>beginRule</code>
+	 * is contained within the rule for the outer <code>beginRule</code>.  Also, begin/end
 	 * pairs must be strictly nested.  Only the rule that has most recently begun
 	 * can be ended at any given time.
 	 *
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/JobGroup.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/JobGroup.java
index 37e492e..f62ef34 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/JobGroup.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/JobGroup.java
@@ -134,16 +134,21 @@
 	/**
 	 * Returns the state of the job group. Result will be one of:
 	 * <ul>
-	 * <li><code>JobGroup.NONE</code> - when the jobs belonging to the group are not yet scheduled to run.</li>
-	 * <li><code>JobGroup.ACTIVE</code> - when the jobs belonging to the group are running or scheduled to run.</li>
-	 * <li><code>JobGroup.CANCELING</code> - when the jobs belonging to the group are being canceled.</li>
+	 * <li><code>JobGroup.NONE</code> - when the jobs belonging to the group are not
+	 * yet scheduled to run.</li>
+	 * <li><code>JobGroup.ACTIVE</code> - when the jobs belonging to the group are
+	 * running or scheduled to run.</li>
+	 * <li><code>JobGroup.CANCELING</code> - when the jobs belonging to the group
+	 * are being canceled.</li>
 	 * </ul>
 	 * <p>
-	 * Note that job group state is inherently volatile, and in most cases clients cannot rely
-	 * on the result of this method being valid by the time the result is obtained. For example,
-	 * if <tt>getState</tt> returns <tt>ACTIVE</tt>, the job group may have actually completed
-	 * by the time the <tt>getState</tt> method returns. All that clients can infer from invoking
-	 * this method is that the job group was recently in the returned state.
+	 * Note that job group state is inherently volatile, and in most cases clients
+	 * cannot rely on the result of this method being valid by the time the result
+	 * is obtained. For example, if <code>getState</code> returns
+	 * <code>ACTIVE</code>, the job group may have actually completed by the time
+	 * the <code>getState</code> method returns. All that clients can infer from
+	 * invoking this method is that the job group was recently in the returned
+	 * state.
 	 *
 	 * @return the job group state
 	 */
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java
index 4f06bb7..ff77ee5 100644
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java
+++ b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java
@@ -914,23 +914,28 @@
 	}
 
 	/**
-	 * Returns a URL for the given path in the given bundle.  Returns <code>null</code> if the URL
-	 * could not be computed or created.
+	 * Returns a URL for the given path in the given bundle. Returns
+	 * <code>null</code> if the URL could not be computed or created.
 	 * <p>
 	 * find looks for this path in given bundle and any attached fragments.
-	 * <code>null</code> is returned if no such entry is found.  Note that
-	 * there is no specific order to the fragments.
-	 * </p><p>
-	 * The following arguments may also be used
+	 * <code>null</code> is returned if no such entry is found. Note that there is
+	 * no specific order to the fragments.
+	 * </p>
+	 * <p>
+	 * The following arguments may also be used:
+	 * </p>
+	 *
 	 * <pre>
 	 *     $nl$ - for language specific information
 	 *     $os$ - for operating system specific information
 	 *     $ws$ - for windowing system specific information
 	 * </pre>
-	 * </p><p>
-	 * A path of $nl$/about.properties in an environment with a default
-	 * locale of en_CA will return a URL corresponding to the first place
-	 * about.properties is found according to the following order:
+	 * <p>
+	 * A path of $nl$/about.properties in an environment with a default locale of
+	 * en_CA will return a URL corresponding to the first place about.properties is
+	 * found according to the following order:
+	 * </p>
+	 *
 	 * <pre>
 	 *     plugin root/nl/en/CA/about.properties
 	 *     fragment1 root/nl/en/CA/about.properties
@@ -945,21 +950,21 @@
 	 *     fragment2 root/about.properties
 	 *     ...
 	 * </pre>
-	 * </p><p>
-	 * The current environment variable values can be overridden using
-	 * the override map argument.
+	 * <p>
+	 * The current environment variable values can be overridden using the override
+	 * map argument.
 	 * </p>
 	 *
-	 * @param bundle the bundle in which to search
-	 * @param path file path relative to plug-in installation location
-	 * @param override map of override substitution arguments to be used for
-	 * any $arg$ path elements. The map keys correspond to the substitution
-	 * arguments (eg. "$nl$" or "$os$"). The resulting
-	 * values must be of type java.lang.String. If the map is <code>null</code>,
-	 * or does not contain the required substitution argument, the default
-	 * is used.
-	 * @return a URL for the given path or <code>null</code>.  The actual form
-	 * of the returned URL is not specified.
+	 * @param bundle   the bundle in which to search
+	 * @param path     file path relative to plug-in installation location
+	 * @param override map of override substitution arguments to be used for any
+	 *                 $arg$ path elements. The map keys correspond to the
+	 *                 substitution arguments (eg. "$nl$" or "$os$"). The resulting
+	 *                 values must be of type java.lang.String. If the map is
+	 *                 <code>null</code>, or does not contain the required
+	 *                 substitution argument, the default is used.
+	 * @return a URL for the given path or <code>null</code>. The actual form of the
+	 *         returned URL is not specified.
 	 * @see #resolve(URL)
 	 * @see #asLocalURL(URL)
 	 * @since 3.0
@@ -1069,34 +1074,32 @@
 	}
 
 	/**
-	 * Returns a resource string corresponding to the given argument
-	 * value and resource bundle in the given runtime bundle.
-	 * If the argument value specifies a resource key, the string
-	 * is looked up in the given resource bundle. If the argument does not
-	 * specify a valid key, the argument itself is returned as the
-	 * resource string. The key lookup is performed against the
-	 * specified resource bundle. If a resource string
-	 * corresponding to the key is not found in the resource bundle
-	 * the key value, or any default text following the key in the
-	 * argument value is returned as the resource string.
-	 * A key is identified as a string beginning with the "%" character.
-	 * Note that the "%" character is stripped off prior to lookup
-	 * in the resource bundle.
+	 * Returns a resource string corresponding to the given argument value and
+	 * resource bundle in the given runtime bundle. If the argument value specifies
+	 * a resource key, the string is looked up in the given resource bundle. If the
+	 * argument does not specify a valid key, the argument itself is returned as the
+	 * resource string. The key lookup is performed against the specified resource
+	 * bundle. If a resource string corresponding to the key is not found in the
+	 * resource bundle the key value, or any default text following the key in the
+	 * argument value is returned as the resource string. A key is identified as a
+	 * string beginning with the "%" character. Note that the "%" character is
+	 * stripped off prior to lookup in the resource bundle.
 	 * <p>
-	 * For example, assume resource bundle plugin.properties contains
-	 * name = Project Name
-	 * <pre>
-	 *     getResourceString("Hello World") returns "Hello World"</li>
-	 *     getResourceString("%name") returns "Project Name"</li>
-	 *     getResourceString("%name Hello World") returns "Project Name"</li>
-	 *     getResourceString("%abcd Hello World") returns "Hello World"</li>
-	 *     getResourceString("%abcd") returns "%abcd"</li>
-	 *     getResourceString("%%name") returns "%name"</li>
-	 * </pre>
+	 * For example, assume resource bundle plugin.properties contains name = Project
+	 * Name
 	 * </p>
 	 *
-	 * @param bundle the bundle whose resource bundle is being queried
-	 * @param value the value
+	 * <pre>
+	 *     getResourceString("Hello World") returns "Hello World"
+	 *     getResourceString("%name") returns "Project Name"
+	 *     getResourceString("%name Hello World") returns "Project Name"
+	 *     getResourceString("%abcd Hello World") returns "Hello World"
+	 *     getResourceString("%abcd") returns "%abcd"
+	 *     getResourceString("%%name") returns "%name"
+	 * </pre>
+	 *
+	 * @param bundle         the bundle whose resource bundle is being queried
+	 * @param value          the value
 	 * @param resourceBundle the resource bundle to query
 	 * @return the resource string
 	 * @see #getResourceBundle(Bundle)
@@ -1367,8 +1370,8 @@
 
 	/**
 	 * Returns an array of attached fragment bundles for the specified bundle. If
-	 * the specified bundle is a fragment then <tt>null</tt> is returned. If no
-	 * fragments are attached to the specified bundle then <tt>null</tt> is
+	 * the specified bundle is a fragment then <code>null</code> is returned. If no
+	 * fragments are attached to the specified bundle then <code>null</code> is
 	 * returned.
 	 * <p>
 	 * Clients are also able to acquire the
@@ -1377,8 +1380,8 @@
 	 * </p>
 	 *
 	 * @param bundle the bundle to get the attached fragment bundles for.
-	 * @return an array of fragment bundles or <tt>null</tt> if the bundle does not
-	 *         have any attached fragment bundles.
+	 * @return an array of fragment bundles or <code>null</code> if the bundle does
+	 *         not have any attached fragment bundles.
 	 * @since 3.0
 	 */
 	public static Bundle[] getFragments(Bundle bundle) {
@@ -1400,7 +1403,7 @@
 	 *
 	 * @param symbolicName the symbolic name of the bundle to be returned.
 	 * @return the bundle that has the specified symbolic name with the highest
-	 *         version, or <tt>null</tt> if no bundle is found.
+	 *         version, or <code>null</code> if no bundle is found.
 	 * @since 3.0
 	 */
 	public static Bundle getBundle(String symbolicName) {
@@ -1409,8 +1412,8 @@
 
 	/**
 	 * Returns all bundles with the specified symbolic name. If no resolved bundles
-	 * with the specified symbolic name can be found, <tt>null</tt> is returned. If
-	 * the version argument is not null then only the Bundles that have the
+	 * with the specified symbolic name can be found, <code>null</code> is returned.
+	 * If the version argument is not null then only the Bundles that have the
 	 * specified symbolic name and a version greater than or equal to the specified
 	 * version are returned. The returned bundles are ordered in descending bundle
 	 * version order.
@@ -1424,9 +1427,10 @@
 	 *
 	 * @param symbolicName the symbolic name of the bundles that are to be returned.
 	 * @param version      the version that the return bundle versions must match,
-	 *                     or <tt>null</tt> if no version matching is to be done.
+	 *                     or <code>null</code> if no version matching is to be
+	 *                     done.
 	 * @return the array of Bundles with the specified name that match the specified
-	 *         version and match rule, or <tt>null</tt> if no bundles are found.
+	 *         version and match rule, or <code>null</code> if no bundles are found.
 	 */
 	public static Bundle[] getBundles(String symbolicName, String version) {
 		return InternalPlatform.getDefault().getBundles(symbolicName, version);
@@ -1434,8 +1438,9 @@
 
 	/**
 	 * Returns an array of host bundles that the specified fragment bundle is
-	 * attached to or <tt>null</tt> if the specified bundle is not attached to a
-	 * host. If the bundle is not a fragment bundle then <tt>null</tt> is returned.
+	 * attached to or <code>null</code> if the specified bundle is not attached to a
+	 * host. If the bundle is not a fragment bundle then <code>null</code> is
+	 * returned.
 	 * <p>
 	 * Clients are also able to acquire the
 	 * {@link org.osgi.service.packageadmin.PackageAdmin} service and query it for
