diff --git a/bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/value/ComputedValue.java b/bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/value/ComputedValue.java
index 54b098e..b1468c7 100644
--- a/bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/value/ComputedValue.java
+++ b/bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/value/ComputedValue.java
@@ -92,7 +92,7 @@
 	 * Example observing the size of an {@link IObservableList}:
 	 *
 	 * <pre>
-	 * IObservableValue&lt;Integer&gt; listSizeObservable = ComputedValue.create(() -> observableList.size());
+	 * IObservableValue&lt;Integer&gt; listSizeObservable = ComputedValue.create(() -&gt; observableList.size());
 	 * </pre>
 	 *
 	 * @param supplier {@link Supplier}, whose {@link Supplier#get()} method is a
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/IWorkbench.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/IWorkbench.java
index 0c9d19f..47a6129 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/IWorkbench.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/IWorkbench.java
@@ -75,7 +75,7 @@
 	public static final String MODEL_RESOURCE_HANDLER = "modelResourceHandler"; //$NON-NLS-1$
 	/**
 	 * The argument for whether the workbench should save and restore its state <br>
-	 * <<br>
+	 * <br>
 	 * Value is: <code>persistState</code>
 	 */
 	public static final String PERSIST_STATE = "persistState"; //$NON-NLS-1$
@@ -107,12 +107,12 @@
 	public static final String APPLICATION_CONTEXT_KEY = "applicationContext"; //$NON-NLS-1$
 
 	/**
-	 * This named context parameter is used to specify whether a {@link MPart}
-	 * or a {@link MPlaceholder} are shown on top, which means the contents of
-	 * it can be seen by the user in the UI.
+	 * This named context parameter is used to specify whether a {@link MPart} or a
+	 * {@link MPlaceholder} are shown on top, which means the contents of it can be
+	 * seen by the user in the UI.
 	 * <p>
-	 * This means clients can obtain the state of being on top by asking the
-	 * part's context for the {@link IWorkbench#ON_TOP} key.
+	 * This means clients can obtain the state of being on top by asking the part's
+	 * context for the {@link IWorkbench#ON_TOP} key.
 	 * </p>
 	 * <p>
 	 * Note that also objects created with a parts' context can obtain this
@@ -123,7 +123,7 @@
 	 * &#64;Inject
 	 * &#64;Optional
 	 * private void onTop(&#64;Named(IWorkbench.ON_TOP) Boolean onTop) {
-	 * 	if (onTop != null && onTop.booleanValue()) {
+	 * 	if (onTop != null &amp;&amp; onTop.booleanValue()) {
 	 * 		// ... do something when element is on top
 	 * 	}
 	 * }
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/EModelService.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/EModelService.java
index 0c0fcb5..e669c65 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/EModelService.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/EModelService.java
@@ -189,7 +189,7 @@
 	 * is null then the returned list is untyped.
 	 * </p>
 	 *
-	 * @param             <T> The generic type of the returned list
+	 * @param <T>         The generic type of the returned list
 	 * @param searchRoot  The element at which to start the search. This element
 	 *                    must be non-null and is included in the search.
 	 * @param clazz       The type of element to be searched for. If non-null this
@@ -197,21 +197,21 @@
 	 * @param searchFlags A bitwise combination of the following constants:
 	 *                    <ul>
 	 *                    <li><b>OUTSIDE_PERSPECTIVE</b> Include the elements in the
-	 *                    window's model that are not in a perspective</;i>
+	 *                    window's model that are not in a perspective</li>
 	 *                    <li><b>IN_ANY_PERSPECTIVE</b> Include the elements in all
-	 *                    perspectives</;i>
+	 *                    perspectives</li>
 	 *                    <li><b>IN_ACTIVE_PERSPECTIVE</b> Include the elements in
-	 *                    the currently active perspective only</;i>
+	 *                    the currently active perspective only</li>
 	 *                    <li><b>IN_MAIN_MENU</b> Include elements in an MWindow's
-	 *                    main menu</;i>
+	 *                    main menu</li>
 	 *                    <li><b>IN_PART</b> Include MMenu and MToolbar elements
-	 *                    owned by parts</;i>
+	 *                    owned by parts</li>
 	 *                    <li><b>IN_ACTIVE_PERSPECTIVE</b> Include the elements in
-	 *                    the currently active perspective only</;i>
+	 *                    the currently active perspective only</li>
 	 *                    <li><b>IN_SHARED_AREA</b> Include the elements in the
-	 *                    shared area</;i>
+	 *                    shared area</li>
 	 *                    <li><b>IN_TRIM</b> Include the elements in the window's
-	 *                    trim</;i>
+	 *                    trim</li>
 	 *                    </ul>
 	 *                    Note that you may omit both perspective flags but still
 	 *                    define <b>IN_SHARED_AREA</b>; the flags
diff --git a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationUpdater.java b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationUpdater.java
index 8f77554..63125c6 100644
--- a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationUpdater.java
+++ b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/fieldassist/ControlDecorationUpdater.java
@@ -62,22 +62,21 @@
 	}
 
 	/**
-	 * Returns an image to display in a ControlDecoration which is appropriate
-	 * for the given status. The default implementation of this method returns
-	 * an image according to <code>status.getSeverity()</code>:
+	 * Returns an image to display in a ControlDecoration which is appropriate for
+	 * the given status. The default implementation of this method returns an image
+	 * according to <code>status.getSeverity()</code>:
 	 * <ul>
-	 * <li>IStatus.OK => No image
-	 * <li>IStatus.INFO => FieldDecorationRegistry.DEC_INFORMATION
-	 * <li>IStatus.WARNING => FieldDecorationRegistry.DEC_WARNING
-	 * <li>IStatus.ERROR => FieldDecorationRegistry.DEC_ERROR
-	 * <li>IStatus.CANCEL => FieldDecorationRegistry.DEC_ERROR
-	 * <li>Other => No image
+	 * <li>IStatus.OK =&gt; No image
+	 * <li>IStatus.INFO =&gt; FieldDecorationRegistry.DEC_INFORMATION
+	 * <li>IStatus.WARNING =&gt; FieldDecorationRegistry.DEC_WARNING
+	 * <li>IStatus.ERROR =&gt; FieldDecorationRegistry.DEC_ERROR
+	 * <li>IStatus.CANCEL =&gt; FieldDecorationRegistry.DEC_ERROR
+	 * <li>Other =&gt; No image
 	 * </ul>
 	 *
-	 * @param status
-	 *            the status object.
-	 * @return an image to display in a ControlDecoration which is appropriate
-	 *         for the given status.
+	 * @param status the status object.
+	 * @return an image to display in a ControlDecoration which is appropriate for
+	 *         the given status.
 	 */
 	protected Image getImage(IStatus status) {
 		if (status == null)
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/Action.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/Action.java
index 69437fa..bdcd5b8 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/Action.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/Action.java
@@ -182,11 +182,10 @@
 
 	/**
 	 * Convenience method for removing any mnemonics from the given string. For
-	 * example, <code>removeMnemonics("&Open")</code> will return
+	 * example, <code>removeMnemonics("&amp;Open")</code> will return
 	 * <code>"Open"</code>.
 	 *
-	 * @param text
-	 *            the text
+	 * @param text the text
 	 * @return the text sans mnemonics
 	 *
 	 * @since 3.0
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/LegacyActionTools.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/LegacyActionTools.java
index 998283e..843a12b 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/LegacyActionTools.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/LegacyActionTools.java
@@ -727,11 +727,10 @@
 
 	/**
 	 * Convenience method for removing any mnemonics from the given string. For
-	 * example, <code>removeMnemonics("&Open")</code> will return
+	 * example, <code>removeMnemonics("&amp;Open")</code> will return
 	 * <code>"Open"</code>.
 	 *
-	 * @param text
-	 *            the text
+	 * @param text the text
 	 * @return the text sans mnemonics
 	 */
 	public static String removeMnemonics(final String text) {
@@ -775,11 +774,10 @@
 
 	/**
 	 * Convenience method for escaping all mnemonics in the given string. For
-	 * example, <code>escapeMnemonics("a & b & c")</code> will return
-	 * <code>"a && b && c"</code>.
+	 * example, <code>escapeMnemonics("a &amp; b &amp; c")</code> will return
+	 * <code>"a &amp;&amp; b &amp;&amp; c"</code>.
 	 *
-	 * @param text
-	 *            the text
+	 * @param text the text
 	 * @return the text with mnemonics escaped
 	 * @since 3.6
 	 */
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialogWithToggle.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialogWithToggle.java
index 537eb6d..61ac586 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialogWithToggle.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialogWithToggle.java
@@ -127,43 +127,35 @@
 	 * Convenience method to open a simple dialog as specified by the
 	 * <code>kind</code> flag, with a "don't show again' toggle.
 	 *
-	 * This method accepts a LinkedHashMap<String, Integer> to set custom button
-	 * labels (String) and custom button IDs (Integer) as return codes for those
-	 * buttons.
+	 * This method accepts a LinkedHashMap&lt;String, Integer&gt; to set custom
+	 * button labels (String) and custom button IDs (Integer) as return codes for
+	 * those buttons.
 	 *
 	 * Use this method if you need to override the default labels and IDs.
 	 *
-	 * @param kind
-	 *            the kind of dialog to open, one of {@link #ERROR},
-	 *            {@link #INFORMATION}, {@link #QUESTION}, {@link #WARNING},
-	 *            {@link #CONFIRM}, or {#QUESTION_WITH_CANCEL}.
-	 * @param parent
-	 *            the parent shell of the dialog, or <code>null</code> if none
-	 * @param title
-	 *            the dialog's title, or <code>null</code> if none
-	 * @param message
-	 *            the message
-	 * @param toggleMessage
-	 *            the message for the toggle control, or <code>null</code> for
-	 *            the default message
-	 * @param toggleState
-	 *            the initial state for the toggle
-	 * @param store
-	 *            the IPreference store in which the user's preference should be
-	 *            persisted; <code>null</code> if you don't want it persisted
-	 *            automatically.
-	 * @param key
-	 *            the key to use when persisting the user's preference;
-	 *            <code>null</code> if you don't want it persisted.
-	 * @param style
-	 *            {@link SWT#NONE} for a default dialog, or {@link SWT#SHEET}
-	 *            for a dialog with sheet behavior
-	 * @param buttonLabelToIdMap
-	 *            map with button labels and ids to define custom labels and
-	 *            their corresponding ids
-	 * @return the dialog, after being closed by the user, which the client can
-	 *         only call <code>getReturnCode()</code> or
-	 *         <code>getToggleState()</code>
+	 * @param kind               the kind of dialog to open, one of {@link #ERROR},
+	 *                           {@link #INFORMATION}, {@link #QUESTION},
+	 *                           {@link #WARNING}, {@link #CONFIRM}, or
+	 *                           {#QUESTION_WITH_CANCEL}.
+	 * @param parent             the parent shell of the dialog, or
+	 *                           <code>null</code> if none
+	 * @param title              the dialog's title, or <code>null</code> if none
+	 * @param message            the message
+	 * @param toggleMessage      the message for the toggle control, or
+	 *                           <code>null</code> for the default message
+	 * @param toggleState        the initial state for the toggle
+	 * @param store              the IPreference store in which the user's
+	 *                           preference should be persisted; <code>null</code>
+	 *                           if you don't want it persisted automatically.
+	 * @param key                the key to use when persisting the user's
+	 *                           preference; <code>null</code> if you don't want it
+	 *                           persisted.
+	 * @param style              {@link SWT#NONE} for a default dialog, or
+	 *                           {@link SWT#SHEET} for a dialog with sheet behavior
+	 * @param buttonLabelToIdMap map with button labels and ids to define custom
+	 *                           labels and their corresponding ids
+	 * @return the dialog, after being closed by the user, which the client can only
+	 *         call <code>getReturnCode()</code> or <code>getToggleState()</code>
 	 * @since 3.13
 	 */
 	public static MessageDialogWithToggle open(int kind, Shell parent, String title, String message,
@@ -460,48 +452,41 @@
     }
 
 	/**
-	 * Creates a message dialog with a toggle. See the superclass constructor
-	 * for info on the other parameters.
+	 * Creates a message dialog with a toggle. See the superclass constructor for
+	 * info on the other parameters.
 	 *
-	 * This constructor accepts a LinkedHashMap<String, Integer> to set custom
-	 * button labels (String) and custom button IDs (Integer) as return codes
-	 * for those buttons.
+	 * This constructor accepts a LinkedHashMap&lt;String, Integer&gt; to set custom
+	 * button labels (String) and custom button IDs (Integer) as return codes for
+	 * those buttons.
 	 *
 	 * Use this constructor if you need to override the default labels and IDs.
 	 *
-	 * @param parentShell
-	 *            the parent shell
-	 * @param dialogTitle
-	 *            the dialog title, or <code>null</code> if none
-	 * @param image
-	 *            the dialog title image, or <code>null</code> if none
-	 * @param message
-	 *            the dialog message
-	 * @param dialogImageType
-	 *            one of the following values:
-	 *            <ul>
-	 *            <li><code>MessageDialog.NONE</code> for a dialog with no
-	 *            image</li>
-	 *            <li><code>MessageDialog.ERROR</code> for a dialog with an
-	 *            error image</li>
-	 *            <li><code>MessageDialog.INFORMATION</code> for a dialog with
-	 *            an information image</li>
-	 *            <li><code>MessageDialog.QUESTION </code> for a dialog with a
-	 *            question image</li>
-	 *            <li><code>MessageDialog.WARNING</code> for a dialog with a
-	 *            warning image</li>
-	 *            </ul>
-	 * @param buttonLabelToIdMap
-	 *            map with button labels and IDs to define custom labels and
-	 *            their corresponding IDs
-	 * @param defaultIndex
-	 *            the index of the default button in the button label and ID map
-	 *            related to the insertion order of the elements
-	 * @param toggleMessage
-	 *            the message for the toggle control, or <code>null</code> for
-	 *            the default message
-	 * @param toggleState
-	 *            the initial state for the toggle
+	 * @param parentShell        the parent shell
+	 * @param dialogTitle        the dialog title, or <code>null</code> if none
+	 * @param image              the dialog title image, or <code>null</code> if
+	 *                           none
+	 * @param message            the dialog message
+	 * @param dialogImageType    one of the following values:
+	 *                           <ul>
+	 *                           <li><code>MessageDialog.NONE</code> for a dialog
+	 *                           with no image</li>
+	 *                           <li><code>MessageDialog.ERROR</code> for a dialog
+	 *                           with an error image</li>
+	 *                           <li><code>MessageDialog.INFORMATION</code> for a
+	 *                           dialog with an information image</li>
+	 *                           <li><code>MessageDialog.QUESTION </code> for a
+	 *                           dialog with a question image</li>
+	 *                           <li><code>MessageDialog.WARNING</code> for a dialog
+	 *                           with a warning image</li>
+	 *                           </ul>
+	 * @param buttonLabelToIdMap map with button labels and IDs to define custom
+	 *                           labels and their corresponding IDs
+	 * @param defaultIndex       the index of the default button in the button label
+	 *                           and ID map related to the insertion order of the
+	 *                           elements
+	 * @param toggleMessage      the message for the toggle control, or
+	 *                           <code>null</code> for the default message
+	 * @param toggleState        the initial state for the toggle
 	 * @since 3.13
 	 */
 	public MessageDialogWithToggle(Shell parentShell, String dialogTitle, Image image, String message,
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Geometry.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Geometry.java
index 5975dd0..a6fa33e 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Geometry.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Geometry.java
@@ -415,19 +415,23 @@
     }
 
     /**
-     * Extrudes the given edge inward by the given distance. That is, if one side of the rectangle
-     * was sliced off with a given thickness, this returns the rectangle that forms the slice. Note
-     * that the returned rectangle will be inside the given rectangle if size > 0.
-     *
-     * @param toExtrude the rectangle to extrude. The resulting rectangle will share three sides
-     * with this rectangle.
-     * @param size distance to extrude. A negative size will extrude outwards (that is, the resulting
-     * rectangle will overlap the original iff this is positive).
-     * @param orientation the side to extrude.  One of SWT.LEFT, SWT.RIGHT, SWT.TOP, or SWT.BOTTOM. The
-     * resulting rectangle will always share this side with the original rectangle.
-     * @return a rectangle formed by extruding the given side of the rectangle by the given distance.
-     * @since 3.0
-     */
+	 * Extrudes the given edge inward by the given distance. That is, if one side of
+	 * the rectangle was sliced off with a given thickness, this returns the
+	 * rectangle that forms the slice. Note that the returned rectangle will be
+	 * inside the given rectangle if size &gt; 0.
+	 *
+	 * @param toExtrude   the rectangle to extrude. The resulting rectangle will
+	 *                    share three sides with this rectangle.
+	 * @param size        distance to extrude. A negative size will extrude outwards
+	 *                    (that is, the resulting rectangle will overlap the
+	 *                    original iff this is positive).
+	 * @param orientation the side to extrude. One of SWT.LEFT, SWT.RIGHT, SWT.TOP,
+	 *                    or SWT.BOTTOM. The resulting rectangle will always share
+	 *                    this side with the original rectangle.
+	 * @return a rectangle formed by extruding the given side of the rectangle by
+	 *         the given distance.
+	 * @since 3.0
+	 */
     public static Rectangle getExtrudedEdge(Rectangle toExtrude, int size,
             int orientation) {
         Rectangle bounds = new Rectangle(toExtrude.x, toExtrude.y,
@@ -780,15 +784,16 @@
     }
 
     /**
-     * Returns a new rectangle with the given position and dimensions, expressed
-     * as points.
-     *
-     * @param position the (x,y) position of the rectangle
-     * @param size the size of the new rectangle, where (x,y) -> (width, height)
-     * @return a new Rectangle with the given position and size
-     *
-     * @since 3.0
-     */
+	 * Returns a new rectangle with the given position and dimensions, expressed as
+	 * points.
+	 *
+	 * @param position the (x,y) position of the rectangle
+	 * @param size     the size of the new rectangle, where (x,y) -&gt; (width,
+	 *                 height)
+	 * @return a new Rectangle with the given position and size
+	 *
+	 * @since 3.0
+	 */
     public static Rectangle createRectangle(Point position, Point size) {
         return new Rectangle(position.x, position.y, size.x, size.y);
     }
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/LocalSelectionTransfer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/LocalSelectionTransfer.java
index fd0a117..7cec172 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/LocalSelectionTransfer.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/LocalSelectionTransfer.java
@@ -160,15 +160,14 @@
     }
 
     /**
-     * Sets the time when the selection operation this
-     * transfer is associated with was started.
-     * If assigning this from an SWT event, be sure to use
-     * <code>setSelectionTime(event.time & 0xFFFF)</code>
-     *
-     * @param time the time when the selection operation was started
-     *
-     * @see org.eclipse.swt.events.TypedEvent#time
-     */
+	 * Sets the time when the selection operation this transfer is associated with
+	 * was started. If assigning this from an SWT event, be sure to use
+	 * <code>setSelectionTime(event.time &amp; 0xFFFF)</code>
+	 *
+	 * @param time the time when the selection operation was started
+	 *
+	 * @see org.eclipse.swt.events.TypedEvent#time
+	 */
     public void setSelectionSetTime(long time) {
         selectionSetTime = time;
     }
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationEvent.java
index ced3ce1..2186e97 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationEvent.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationEvent.java
@@ -96,7 +96,7 @@
 	public int stateMask;
 
 	/**
-	 * Cancel the event (=> editor is not activated)
+	 * Cancel the event (=&gt; editor is not activated)
 	 */
 	public boolean cancel = false;
 
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/LazySortedCollection.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/LazySortedCollection.java
index b297a6c..2e56554 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/LazySortedCollection.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/LazySortedCollection.java
@@ -863,12 +863,12 @@
     }
 
     /**
-     * Retains the n smallest items in the collection, removing the rest. When
-     * this method returns, the size of the collection will be n. Note that
-     * this is a no-op if n > the current size of the collection.
-     *
-     * @param n number of items to retain
-     */
+	 * Retains the n smallest items in the collection, removing the rest. When this
+	 * method returns, the size of the collection will be n. Note that this is a
+	 * no-op if n &gt; the current size of the collection.
+	 *
+	 * @param n number of items to retain
+	 */
     public final void retainFirst(int n) {
         try {
             retainFirst(n, new FastProgressReporter());
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java
index 4b45d1a..d396aa8 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java
@@ -192,12 +192,13 @@
     }
 
     /**
-     * Escapes any occurrence of '&' in the given String so that
-     * it is not considered as a mnemonic
-     * character in SWT ToolItems, MenuItems, Button and Labels.
-     * @param in the original String
-     * @return The converted String
-     */
+	 * Escapes any occurrence of '&amp;' in the given String so that it is not
+	 * considered as a mnemonic character in SWT ToolItems, MenuItems, Button and
+	 * Labels.
+	 * 
+	 * @param in the original String
+	 * @return The converted String
+	 */
     protected static String escapeMetaCharacters(String in) {
         if (in == null || in.indexOf('&') < 0) {
 			return in;
diff --git a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/Priority.java b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/Priority.java
index 889c0b3..99441d4 100644
--- a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/Priority.java
+++ b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/Priority.java
@@ -135,8 +135,8 @@
 			LOWEST_PRIORITY_LITERAL);
 
 	/**
-	 * The ordered array of possible enumeration values (0=> Highest,
-	 * length-1=>Lowest)
+	 * The ordered array of possible enumeration values (0=&gt; Highest,
+	 * length-1=&gt;Lowest)
 	 */
 	public static final Priority[] ENUM_ARRAY = new Priority[] { HIGHEST,
 			HIGHER, HIGH, NORMAL, LOW, LOWER, LOWEST };
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageLayout.java
index 84a8a7a..7e72115 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageLayout.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageLayout.java
@@ -52,7 +52,7 @@
  * <p>
  * Example of populating a layout with standard workbench views:
  * </p>
- * 
+ *
  * <pre>
  * IPageLayout layout = ...
  * // Get the editor area.
@@ -73,7 +73,7 @@
  * // Bottom right: Task List view
  * layout.addView(IPageLayout.ID_TASK_LIST, IPageLayout.BOTTOM, 0.66f, editorArea);
  * </pre>
- * 
+ *
  * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface IPageLayout {
@@ -238,25 +238,26 @@
 	void addFastView(String viewId, float ratio);
 
     /**
-     * Adds a new wizard shortcut to the page layout.
-     * These are typically shown in the UI to allow rapid navigation to appropriate new wizards.
-     * For example, in the Eclipse IDE, these appear as items under the File > New menu.
-     * The id must name a new wizard extension contributed to the
-     * workbench's new wizards extension point (named <code>"org.eclipse.ui.newWizards"</code>).
-     *
-     * @param id the wizard id
-     */
+	 * Adds a new wizard shortcut to the page layout. These are typically shown in
+	 * the UI to allow rapid navigation to appropriate new wizards. For example, in
+	 * the Eclipse IDE, these appear as items under the File &gt; New menu. The id
+	 * must name a new wizard extension contributed to the workbench's new wizards
+	 * extension point (named <code>"org.eclipse.ui.newWizards"</code>).
+	 *
+	 * @param id the wizard id
+	 */
 	void addNewWizardShortcut(String id);
 
     /**
-     * Adds a perspective shortcut to the page layout.
-     * These are typically shown in the UI to allow rapid navigation to appropriate new wizards.
-     * For example, in the Eclipse IDE, these appear as items under the Window > Open Perspective menu.
-     * The id must name a perspective extension contributed to the
-     * workbench's perspectives extension point (named <code>"org.eclipse.ui.perspectives"</code>).
-     *
-     * @param id the perspective id
-     */
+	 * Adds a perspective shortcut to the page layout. These are typically shown in
+	 * the UI to allow rapid navigation to appropriate new wizards. For example, in
+	 * the Eclipse IDE, these appear as items under the Window &gt; Open Perspective
+	 * menu. The id must name a perspective extension contributed to the workbench's
+	 * perspectives extension point (named
+	 * <code>"org.eclipse.ui.perspectives"</code>).
+	 *
+	 * @param id the perspective id
+	 */
 	void addPerspectiveShortcut(String id);
 
     /**
@@ -301,14 +302,14 @@
 	void addShowInPart(String id);
 
     /**
-     * Adds a show view shortcut to the page layout.
-     * These are typically shown in the UI to allow rapid navigation to appropriate views.
-     * For example, in the Eclipse IDE, these appear as items under the Window > Show View menu.
-     * The id must name a view contributed to the workbench's views extension point
-     * (named <code>"org.eclipse.ui.views"</code>).
-     *
-     * @param id the view id
-     */
+	 * Adds a show view shortcut to the page layout. These are typically shown in
+	 * the UI to allow rapid navigation to appropriate views. For example, in the
+	 * Eclipse IDE, these appear as items under the Window &gt; Show View menu. The
+	 * id must name a view contributed to the workbench's views extension point
+	 * (named <code>"org.eclipse.ui.views"</code>).
+	 *
+	 * @param id the view id
+	 */
 	void addShowViewShortcut(String id);
 
     /**
@@ -424,13 +425,13 @@
 	int getEditorReuseThreshold();
 
     /**
-     * Sets the number of open editors before reusing editors.
-     * If < 0 the user preference settings will be used.
-     *
-     * @param openEditors the number of open editors
-     *
-     * @deprecated this method has no effect, as of Eclipse 2.1
-     */
+	 * Sets the number of open editors before reusing editors. If &lt; 0 the user
+	 * preference settings will be used.
+	 *
+	 * @param openEditors the number of open editors
+	 *
+	 * @deprecated this method has no effect, as of Eclipse 2.1
+	 */
     @Deprecated
 	void setEditorReuseThreshold(int openEditors);
 
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISizeProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISizeProvider.java
index ac28f87..2893dfc 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISizeProvider.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISizeProvider.java
@@ -112,7 +112,7 @@
 	 * <pre>
 	 * <code>
 	 *        {
-	 *              if (width && preferredResult != INFINITE) {
+	 *              if (width &amp;&amp; preferredResult != INFINITE) {
 	 *                  int result = preferredResult - ((preferredResult + 50) % 100) + 50;
 	 *                  result = Math.max(100, Math.min(result, availableParallel - (availableParallel % 100)));
 	 *
@@ -126,7 +126,7 @@
 	 * In this case, getSizeFlags(boolean width) must return (width ? SWT.FILL |
 	 * SWT.MIN: 0)</li>
 	 * <li>To maintain a minimum area of 100000 pixels: <code>
-	 *     {return availablePerpendicular < 100 ? 1000 : 100000 / availablePerpendicular;}
+	 *     {return availablePerpendicular &lt; 100 ? 1000 : 100000 / availablePerpendicular;}
 	 *     </code> getSizeFlags(boolean width) must return SWT.WRAP | SWT.MIN;</li>
 	 * </ul>
 	 *
@@ -146,7 +146,7 @@
 	 *                               will only contain meaningful information if the
 	 *                               part returns the SWT.WRAP flag from
 	 *                               getSizeFlags(width)
-	 * @param preferredResult        preferred size of the control (pixels, <=
+	 * @param preferredResult        preferred size of the control (pixels, &lt;=
 	 *                               availableParallel). Set to INFINITE if unknown
 	 *                               or unbounded.
 	 * @return returns the preferred size of the control (pixels). This is a width
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPage.java
index e999eeb..dc431bd 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPage.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPage.java
@@ -880,13 +880,11 @@
 	int getEditorReuseThreshold();
 
 	/**
-	 * Set the number of open editors before reusing editors. If < 0 the user
+	 * Set the number of open editors before reusing editors. If &lt; 0 the user
 	 * preference settings will be used.
 	 *
-	 * @param openEditors
-	 *            the threshold
-	 * @deprecated use IPageLayout.setEditorReuseThreshold(int openEditors)
-	 *             instead.
+	 * @param openEditors the threshold
+	 * @deprecated use IPageLayout.setEditorReuseThreshold(int openEditors) instead.
 	 */
 	@Deprecated
 	void setEditorReuseThreshold(int openEditors);
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java
index e2ee962..da0fd79 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java
@@ -315,7 +315,7 @@
 	/**
 	 * A named preference for the text of the Help Contents action.
 	 *
-	 * String-valued. If not specified, <code>"&Help Contents"</code> is used.
+	 * String-valued. If not specified, <code>"&amp;Help Contents"</code> is used.
 	 * <p>
 	 * The default value for this preference is: <code>null</code>
 	 * </p>
@@ -327,7 +327,7 @@
 	/**
 	 * A named preference for the text of the Help Search action.
 	 *
-	 * String-valued. If not specified, <code>"S&earch"</code> is used.
+	 * String-valued. If not specified, <code>"S&amp;earch"</code> is used.
 	 * <p>
 	 * The default value for this preference is: <code>null</code>
 	 * </p>
@@ -339,7 +339,7 @@
 	/**
 	 * A named preference for the text of the Dynamic Help action.
 	 *
-	 * String-valued. If not specified, <code>"&Dynamic Help"</code> is used.
+	 * String-valued. If not specified, <code>"&amp;Dynamic Help"</code> is used.
 	 * <p>
 	 * The default value for this preference is: <code>null</code>
 	 * </p>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivitiesPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivitiesPreferencePage.java
index d01e6f9..b1296a3 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivitiesPreferencePage.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivitiesPreferencePage.java
@@ -53,7 +53,8 @@
     public static final String ACTIVITY_NAME = "activityName"; //$NON-NLS-1$
 
 	/**
-	 * The label to be used for the prompt button. Ie: "&Prompt when enabling capabilities".
+	 * The label to be used for the prompt button. Ie: "&amp;Prompt when enabling
+	 * capabilities".
 	 */
     public static final String ACTIVITY_PROMPT_BUTTON = "activityPromptButton"; //$NON-NLS-1$
 
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java
index d9f9f5e..419a1ce 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java
@@ -105,8 +105,9 @@
     public static final String CATEGORY_NAME = "categoryName"; //$NON-NLS-1$
 
     /**
-     * The label to be used for the prompt button. Ie: "&Prompt when enabling capabilities".
-     */
+	 * The label to be used for the prompt button. Ie: "&amp;Prompt when enabling
+	 * capabilities".
+	 */
     public static final String ACTIVITY_PROMPT_BUTTON = "activityPromptButton"; //$NON-NLS-1$
 
     /**
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java
index c09f4fe..de6c45a 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java
@@ -59,8 +59,8 @@
 	public static String PROCEED_SINGLE = "proceedSingle"; //$NON-NLS-1$
 
 	/**
-	 * The string to be used to label the "don't ask" button.
-	 * Ie: "&Always enable activities and don't ask me again"
+	 * The string to be used to label the "don't ask" button. Ie: "&amp;Always
+	 * enable activities and don't ask me again"
 	 */
 	public static String DONT_ASK = "dontAsk"; //$NON-NLS-1$
 
