Bug 522191 - Replace Utils#equals by Arrays#equals/Objects#equals

Change-Id: I4147ca5644fa49672895f9ce5972108216523025
Signed-off-by: Karsten Thoms <karsten.thoms@itemis.de>
diff --git a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/Util.java b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/Util.java
index defc4c1..e22d462 100644
--- a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/Util.java
+++ b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/Util.java
@@ -10,8 +10,10 @@
  *******************************************************************************/
 package org.eclipse.e4.ui.bindings.internal;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.MissingResourceException;
+import java.util.Objects;
 import java.util.ResourceBundle;
 import org.eclipse.swt.SWT;
 
@@ -224,7 +226,7 @@
 		}
 
 		for (int i = 0; i < r; i++) {
-			if (!equals(left[l - i - 1], right[r - i - 1])) {
+			if (!Objects.equals(left[l - i - 1], right[r - i - 1])) {
 				return false;
 			}
 		}
@@ -233,56 +235,39 @@
 	}
 
 	/**
-	 * Checks whether the two objects are <code>null</code> -- allowing for <code>null</code>.
+	 * Checks whether the two objects are <code>null</code> -- allowing for
+	 * <code>null</code>.
 	 *
 	 * @param left
 	 *            The left object to compare; may be <code>null</code>.
 	 * @param right
 	 *            The right object to compare; may be <code>null</code>.
-	 * @return <code>true</code> if the two objects are equivalent; <code>false</code> otherwise.
+	 * @return <code>true</code> if the two objects are equivalent;
+	 *         <code>false</code> otherwise.
+	 * @deprecated Use {@link Objects#equals(Object, Object)}
 	 */
+	@Deprecated
 	public static final boolean equals(final Object left, final Object right) {
 		return left == null ? right == null : ((right != null) && left.equals(right));
 	}
 
 	/**
-	 * Tests whether two arrays of objects are equal to each other. The arrays must not be
-	 * <code>null</code>, but their elements may be <code>null</code>.
+	 * Tests whether two arrays of objects are equal to each other. The arrays must
+	 * not be <code>null</code>, but their elements may be <code>null</code>.
 	 *
 	 * @param leftArray
-	 *            The left array to compare; may be <code>null</code>, and may be empty and may
-	 *            contain <code>null</code> elements.
+	 *            The left array to compare; may be <code>null</code>, and may be
+	 *            empty and may contain <code>null</code> elements.
 	 * @param rightArray
-	 *            The right array to compare; may be <code>null</code>, and may be empty and may
-	 *            contain <code>null</code> elements.
-	 * @return <code>true</code> if the arrays are equal length and the elements at the same
-	 *         position are equal; <code>false</code> otherwise.
+	 *            The right array to compare; may be <code>null</code>, and may be
+	 *            empty and may contain <code>null</code> elements.
+	 * @return <code>true</code> if the arrays are equal length and the elements at
+	 *         the same position are equal; <code>false</code> otherwise.
+	 * @deprecated Use {@link Arrays#equals(Object[], Object[])}
 	 */
+	@Deprecated
 	public static final boolean equals(final Object[] leftArray, final Object[] rightArray) {
-		if (leftArray == rightArray) {
-			return true;
-		}
-
-		if (leftArray == null) {
-			return (rightArray == null);
-		} else if (rightArray == null) {
-			return false;
-		}
-
-		if (leftArray.length != rightArray.length) {
-			return false;
-		}
-
-		for (int i = 0; i < leftArray.length; i++) {
-			final Object left = leftArray[i];
-			final Object right = rightArray[i];
-			final boolean equal = (left == null) ? (right == null) : (left.equals(right));
-			if (!equal) {
-				return false;
-			}
-		}
-
-		return true;
+		return Arrays.equals(leftArray, rightArray);
 	}
 
 	/**
@@ -358,7 +343,7 @@
 		}
 
 		for (int i = 0; i < r; i++) {
-			if (!equals(left[i], right[i])) {
+			if (!Objects.equals(left[i], right[i])) {
 				return false;
 			}
 		}
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java
index 44db165..d665c44 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java
@@ -20,6 +20,7 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Objects;
 import org.eclipse.core.expressions.EvaluationResult;
 import org.eclipse.core.expressions.Expression;
 import org.eclipse.core.expressions.ExpressionInfo;
@@ -511,9 +512,9 @@
 			Key other = (Key) obj;
 			Object exp1 = vexp == null ? null : vexp.getCoreExpression();
 			Object exp2 = other.vexp == null ? null : other.vexp.getCoreExpression();
-			return Util.equals(parentId, other.parentId) && Util.equals(position, other.position)
-					&& getSchemeTag() == other.getSchemeTag() && Util.equals(exp1, exp2)
-					&& Util.equals(factory, other.factory);
+			return Objects.equals(parentId, other.parentId) && Objects.equals(position, other.position)
+					&& getSchemeTag() == other.getSchemeTag() && Objects.equals(exp1, exp2)
+					&& Objects.equals(factory, other.factory);
 		}
 
 		@Override
@@ -732,7 +733,7 @@
 
 	private static boolean containsMatching(List<MMenuElement> children, MMenuElement me) {
 		for (MMenuElement element : children) {
-			if (Util.equals(me.getElementId(), element.getElementId())
+			if (Objects.equals(me.getElementId(), element.getElementId())
 					&& element.getClass().isInstance(me)
 					&& (element instanceof MMenuSeparator || element instanceof MMenu)) {
 				return true;
@@ -743,7 +744,7 @@
 
 	private static boolean containsMatching(List<MToolBarElement> children, MToolBarElement me) {
 		for (MToolBarElement element : children) {
-			if (Util.equals(me.getElementId(), element.getElementId())
+			if (Objects.equals(me.getElementId(), element.getElementId())
 					&& element.getClass().isInstance(me)
 					&& (element instanceof MToolBarSeparator || element instanceof MToolBar)) {
 				return true;
@@ -754,7 +755,7 @@
 
 	private static boolean containsMatching(List<MTrimElement> children, MTrimElement me) {
 		for (MTrimElement element : children) {
-			if (Util.equals(me.getElementId(), element.getElementId())
+			if (Objects.equals(me.getElementId(), element.getElementId())
 					&& element.getClass().isInstance(me)
 					&& (element instanceof MToolBarSeparator || element instanceof MToolBar)) {
 				return true;
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/Parameter.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/Parameter.java
index 2efac0a..347bd02 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/Parameter.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/Parameter.java
@@ -12,6 +12,7 @@
 
 import java.util.Collections;
 import java.util.Map;
+import java.util.Objects;
 import org.eclipse.core.commands.IParameter;
 import org.eclipse.core.commands.IParameterValues;
 import org.eclipse.core.commands.ITypedParameter;
@@ -151,17 +152,17 @@
 		}
 
 		final Parameter parameter = (Parameter) object;
-		if (!Util.equals(id, parameter.id)) {
+		if (!Objects.equals(id, parameter.id)) {
 			return false;
 		}
-		if (!Util.equals(name, parameter.name)) {
+		if (!Objects.equals(name, parameter.name)) {
 			return false;
 		}
-		if (!Util.equals(values, parameter.values)) {
+		if (!Objects.equals(values, parameter.values)) {
 			return false;
 		}
 
-		return Util.equals(optional, parameter.optional);
+		return Objects.equals(optional, parameter.optional);
 	}
 
 	@Override
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/Util.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/Util.java
index 1caa928..38d448a 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/Util.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/Util.java
@@ -10,9 +10,11 @@
  *******************************************************************************/
 package org.eclipse.e4.ui.internal.workbench;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.MissingResourceException;
+import java.util.Objects;
 import java.util.ResourceBundle;
 import java.util.SortedSet;
 import java.util.TreeSet;
@@ -228,7 +230,7 @@
 		}
 
 		for (int i = 0; i < r; i++) {
-			if (!equals(left[l - i - 1], right[r - i - 1])) {
+			if (!Objects.equals(left[l - i - 1], right[r - i - 1])) {
 				return false;
 			}
 		}
@@ -237,56 +239,39 @@
 	}
 
 	/**
-	 * Checks whether the two objects are <code>null</code> -- allowing for <code>null</code>.
+	 * Checks whether the two objects are <code>null</code> -- allowing for
+	 * <code>null</code>.
 	 *
 	 * @param left
 	 *            The left object to compare; may be <code>null</code>.
 	 * @param right
 	 *            The right object to compare; may be <code>null</code>.
-	 * @return <code>true</code> if the two objects are equivalent; <code>false</code> otherwise.
+	 * @return <code>true</code> if the two objects are equivalent;
+	 *         <code>false</code> otherwise.
+	 * @deprecated Use {@link Objects#equals(Object, Object)}
 	 */
+	@Deprecated
 	public static final boolean equals(final Object left, final Object right) {
 		return left == null ? right == null : ((right != null) && left.equals(right));
 	}
 
 	/**
-	 * Tests whether two arrays of objects are equal to each other. The arrays must not be
-	 * <code>null</code>, but their elements may be <code>null</code>.
+	 * Tests whether two arrays of objects are equal to each other. The arrays must
+	 * not be <code>null</code>, but their elements may be <code>null</code>.
 	 *
 	 * @param leftArray
-	 *            The left array to compare; may be <code>null</code>, and may be empty and may
-	 *            contain <code>null</code> elements.
+	 *            The left array to compare; may be <code>null</code>, and may be
+	 *            empty and may contain <code>null</code> elements.
 	 * @param rightArray
-	 *            The right array to compare; may be <code>null</code>, and may be empty and may
-	 *            contain <code>null</code> elements.
-	 * @return <code>true</code> if the arrays are equal length and the elements at the same
-	 *         position are equal; <code>false</code> otherwise.
+	 *            The right array to compare; may be <code>null</code>, and may be
+	 *            empty and may contain <code>null</code> elements.
+	 * @return <code>true</code> if the arrays are equal length and the elements at
+	 *         the same position are equal; <code>false</code> otherwise.
+	 * @deprecated Use {@link Arrays#equals(Object[], Object[])}
 	 */
+	@Deprecated
 	public static final boolean equals(final Object[] leftArray, final Object[] rightArray) {
-		if (leftArray == rightArray) {
-			return true;
-		}
-
-		if (leftArray == null) {
-			return (rightArray == null);
-		} else if (rightArray == null) {
-			return false;
-		}
-
-		if (leftArray.length != rightArray.length) {
-			return false;
-		}
-
-		for (int i = 0; i < leftArray.length; i++) {
-			final Object left = leftArray[i];
-			final Object right = rightArray[i];
-			final boolean equal = (left == null) ? (right == null) : (left.equals(right));
-			if (!equal) {
-				return false;
-			}
-		}
-
-		return true;
+		return Arrays.equals(leftArray, rightArray);
 	}
 
 	/**
@@ -362,7 +347,7 @@
 		}
 
 		for (int i = 0; i < r; i++) {
-			if (!equals(left[i], right[i])) {
+			if (!Objects.equals(left[i], right[i])) {
 				return false;
 			}
 		}
diff --git a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ObservableCollectionTreeContentProvider.java b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ObservableCollectionTreeContentProvider.java
index be2cf29..12aff2f 100644
--- a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ObservableCollectionTreeContentProvider.java
+++ b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ObservableCollectionTreeContentProvider.java
@@ -18,6 +18,7 @@
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
 import org.eclipse.core.databinding.observable.IObservable;
@@ -33,7 +34,6 @@
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.jface.databinding.swt.DisplayRealm;
 import org.eclipse.jface.databinding.viewers.TreeStructureAdvisor;
-import org.eclipse.jface.util.Util;
 import org.eclipse.jface.viewers.AbstractTreeViewer;
 import org.eclipse.jface.viewers.CheckboxTreeViewer;
 import org.eclipse.jface.viewers.IElementComparer;
@@ -410,7 +410,7 @@
 
 	protected boolean equal(Object left, Object right) {
 		if (comparer == null)
-			return Util.equals(left, right);
+			return Objects.equals(left, right);
 		return comparer.equals(left, right);
 	}
 
@@ -486,7 +486,7 @@
 					children = Observables.emptyObservableSet(realm);
 				} else {
 					Assert
-							.isTrue(Util.equals(realm, children.getRealm()),
+							.isTrue(Objects.equals(realm, children.getRealm()),
 									"Children observable collection must be on the Display realm"); //$NON-NLS-1$
 					listener = createCollectionChangeListener(element);
 					addCollectionChangeListener(children, listener);
diff --git a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/TreeViewerUpdater.java b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/TreeViewerUpdater.java
index d7a4787..fc10641 100644
--- a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/TreeViewerUpdater.java
+++ b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/TreeViewerUpdater.java
@@ -12,7 +12,8 @@
 
 package org.eclipse.jface.internal.databinding.viewers;
 
-import org.eclipse.jface.util.Util;
+import java.util.Objects;
+
 import org.eclipse.jface.viewers.AbstractTreeViewer;
 import org.eclipse.jface.viewers.IElementComparer;
 import org.eclipse.jface.viewers.ITreeSelection;
@@ -178,7 +179,7 @@
 	}
 
 	private boolean eq(IElementComparer comparer, Object o1, Object o2) {
-		return comparer == null ? Util.equals(o1, o2) : comparer.equals(o1, o2);
+		return comparer == null ? Objects.equals(o1, o2) : comparer.equals(o1, o2);
 	}
 
 	/**
diff --git a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ViewerElementMap.java b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ViewerElementMap.java
index 9198d33..a909c00 100644
--- a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ViewerElementMap.java
+++ b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ViewerElementMap.java
@@ -17,10 +17,10 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
 import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Util;
 import org.eclipse.jface.viewers.IElementComparer;
 import org.eclipse.jface.viewers.StructuredViewer;
 
@@ -162,7 +162,7 @@
 								Map.Entry that = (Map.Entry) obj;
 								return comparer.equals(this.getKey(), that
 										.getKey())
-										&& Util.equals(this.getValue(), that
+										&& Objects.equals(this.getValue(), that
 												.getValue());
 							}
 
@@ -208,8 +208,8 @@
 						if (obj == null || !(obj instanceof Map.Entry))
 							return false;
 						Map.Entry that = (Map.Entry) obj;
-						return Util.equals(wrappedKey, that.getKey())
-								&& Util
+						return Objects.equals(wrappedKey, that.getKey())
+								&& Objects
 										.equals(this.getValue(), that
 												.getValue());
 					}
diff --git a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ViewerUpdater.java b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ViewerUpdater.java
index 402e1f1..eb48265 100644
--- a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ViewerUpdater.java
+++ b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/ViewerUpdater.java
@@ -15,10 +15,10 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Objects;
 import java.util.Optional;
 
 import org.eclipse.jface.databinding.viewers.IViewerUpdater;
-import org.eclipse.jface.util.Util;
 import org.eclipse.jface.viewers.IElementComparer;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
@@ -86,7 +86,7 @@
 			IElementComparer comparer = viewer.getComparer();
 			for (Iterator<?> iter = selection.iterator(); iter.hasNext();) {
 				Object selectionElement = iter.next();
-				if (comparer == null ? Util.equals(element, selectionElement)
+				if (comparer == null ? Objects.equals(element, selectionElement)
 						: comparer.equals(element, selectionElement)) {
 					return Optional.of(iter);
 				}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Binding.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Binding.java
index a7b3f77..aa96ff8 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Binding.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Binding.java
@@ -13,6 +13,7 @@
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.StringWriter;
+import java.util.Objects;
 
 import org.eclipse.core.commands.ParameterizedCommand;
 import org.eclipse.jface.util.Util;
@@ -216,17 +217,17 @@
 	 */
 	final boolean deletes(final Binding binding) {
 		boolean deletes = true;
-		deletes &= Util.equals(getContextId(), binding.getContextId());
-		deletes &= Util.equals(getTriggerSequence(), binding
+		deletes &= Objects.equals(getContextId(), binding.getContextId());
+		deletes &= Objects.equals(getTriggerSequence(), binding
 				.getTriggerSequence());
 		if (getLocale() != null) {
-			deletes &= !Util.equals(getLocale(), binding.getLocale());
+			deletes &= !Objects.equals(getLocale(), binding.getLocale());
 		}
 		if (getPlatform() != null) {
-			deletes &= !Util.equals(getPlatform(), binding.getPlatform());
+			deletes &= !Objects.equals(getPlatform(), binding.getPlatform());
 		}
 		deletes &= (binding.getType() == SYSTEM);
-		deletes &= Util.equals(getParameterizedCommand(), null);
+		deletes &= Objects.equals(getParameterizedCommand(), null);
 
 		return deletes;
 	}
@@ -251,23 +252,23 @@
 		}
 
 		final Binding binding = (Binding) object;
-		if (!Util.equals(getParameterizedCommand(), binding
+		if (!Objects.equals(getParameterizedCommand(), binding
 				.getParameterizedCommand())) {
 			return false;
 		}
-		if (!Util.equals(getContextId(), binding.getContextId())) {
+		if (!Objects.equals(getContextId(), binding.getContextId())) {
 			return false;
 		}
-		if (!Util.equals(getTriggerSequence(), binding.getTriggerSequence())) {
+		if (!Objects.equals(getTriggerSequence(), binding.getTriggerSequence())) {
 			return false;
 		}
-		if (!Util.equals(getLocale(), binding.getLocale())) {
+		if (!Objects.equals(getLocale(), binding.getLocale())) {
 			return false;
 		}
-		if (!Util.equals(getPlatform(), binding.getPlatform())) {
+		if (!Objects.equals(getPlatform(), binding.getPlatform())) {
 			return false;
 		}
-		if (!Util.equals(getSchemeId(), binding.getSchemeId())) {
+		if (!Objects.equals(getSchemeId(), binding.getSchemeId())) {
 			return false;
 		}
 		return (getType() == binding.getType());
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManager.java
index 21702dd..6ab6b88 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManager.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManager.java
@@ -23,6 +23,7 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.StringTokenizer;
 
@@ -550,7 +551,7 @@
 			found = false;
 			if (activeSchemeIds != null) {
 				for (String activeSchemeId : activeSchemeIds) {
-					if (Util.equals(schemeId, activeSchemeId)) {
+					if (Objects.equals(schemeId, activeSchemeId)) {
 						found = true;
 						break;
 					}
@@ -1300,7 +1301,7 @@
 			if ((bestLocale == null) && (currentLocale != null)) {
 				bestBinding = currentBinding;
 			}
-			if (!(Util.equals(bestLocale, currentLocale))) {
+			if (!(Objects.equals(bestLocale, currentLocale))) {
 				continue;
 			}
 
@@ -1313,7 +1314,7 @@
 			if ((bestPlatform == null) && (currentPlatform != null)) {
 				bestBinding = currentBinding;
 			}
-			if (!(Util.equals(bestPlatform, currentPlatform))) {
+			if (!(Objects.equals(bestPlatform, currentPlatform))) {
 				continue;
 			}
 
@@ -1648,7 +1649,7 @@
 		}
 
 		for (String localString : locales) {
-			if (Util.equals(localString, locale)) {
+			if (Objects.equals(localString, locale)) {
 				matches = true;
 				break;
 			}
@@ -1681,7 +1682,7 @@
 		}
 
 		for (String platformString : platforms) {
-			if (Util.equals(platformString, platform)) {
+			if (Objects.equals(platformString, platform)) {
 				matches = true;
 				break;
 			}
@@ -1861,11 +1862,11 @@
 		for (int i = 0; i < bindingCount; i++) {
 			final Binding binding = bindings[i];
 			boolean equals = true;
-			equals &= Util.equals(sequence, binding.getTriggerSequence());
-			equals &= Util.equals(schemeId, binding.getSchemeId());
-			equals &= Util.equals(contextId, binding.getContextId());
-			equals &= Util.equals(locale, binding.getLocale());
-			equals &= Util.equals(platform, binding.getPlatform());
+			equals &= Objects.equals(sequence, binding.getTriggerSequence());
+			equals &= Objects.equals(schemeId, binding.getSchemeId());
+			equals &= Objects.equals(contextId, binding.getContextId());
+			equals &= Objects.equals(locale, binding.getLocale());
+			equals &= Objects.equals(platform, binding.getPlatform());
 			equals &= (type == binding.getType());
 			if (equals) {
 				bindingsChanged = true;
@@ -2238,7 +2239,7 @@
 							+ scheme.getId());
 		}
 
-		if (Util.equals(activeScheme, scheme)) {
+		if (Objects.equals(activeScheme, scheme)) {
 			return;
 		}
 
@@ -2315,7 +2316,7 @@
 			throw new NullPointerException("The locale cannot be null"); //$NON-NLS-1$
 		}
 
-		if (!Util.equals(this.locale, locale)) {
+		if (!Objects.equals(this.locale, locale)) {
 			this.locale = locale;
 			this.locales = expand(locale, LOCALE_SEPARATOR);
 			clearSolution();
@@ -2346,7 +2347,7 @@
 			throw new NullPointerException("The platform cannot be null"); //$NON-NLS-1$
 		}
 
-		if (!Util.equals(this.platform, platform)) {
+		if (!Objects.equals(this.platform, platform)) {
 			this.platform = platform;
 			this.platforms = expand(platform, Util.ZERO_LENGTH_STRING);
 			clearSolution();
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManagerEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManagerEvent.java
index dd9cb1e..ad3d666 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManagerEvent.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManagerEvent.java
@@ -11,12 +11,12 @@
 
 package org.eclipse.jface.bindings;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Map;
 
 import org.eclipse.core.commands.ParameterizedCommand;
 import org.eclipse.core.commands.common.AbstractBitSetEvent;
-import org.eclipse.jface.util.Util;
 
 /**
  * An instance of this class describes changes to an instance of
@@ -197,7 +197,7 @@
 			previousBindings = EMTPY_SEQUENCE;
 		}
 
-		return !Util.equals(currentBindings, previousBindings);
+		return !Arrays.equals(currentBindings, previousBindings);
 	}
 
 	/**
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java
index 3e1bbb6..c70e2f3 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java
@@ -10,8 +10,10 @@
  *******************************************************************************/
 package org.eclipse.jface.bindings;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Map;
+import java.util.Objects;
 
 import org.eclipse.core.commands.util.Tracing;
 import org.eclipse.jface.util.Util;
@@ -218,16 +220,16 @@
 
 		final CachedBindingSet other = (CachedBindingSet) object;
 
-		if (!Util.equals(activeContextTree, other.activeContextTree)) {
+		if (!Objects.equals(activeContextTree, other.activeContextTree)) {
 			return false;
 		}
-		if (!Util.equals(locales, other.locales)) {
+		if (!Arrays.equals(locales, other.locales)) {
 			return false;
 		}
-		if (!Util.equals(platforms, other.platforms)) {
+		if (!Arrays.equals(platforms, other.platforms)) {
 			return false;
 		}
-		return Util.equals(schemeIds, other.schemeIds);
+		return Arrays.equals(schemeIds, other.schemeIds);
 	}
 
 	/**
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Scheme.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Scheme.java
index f5ac95c..a808fcf 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Scheme.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Scheme.java
@@ -13,6 +13,7 @@
 
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Objects;
 import java.util.Set;
 
 import org.eclipse.core.commands.common.NamedHandleObject;
@@ -143,14 +144,14 @@
         final boolean definedChanged = !this.defined;
         this.defined = true;
 
-        final boolean nameChanged = !Util.equals(this.name, name);
+		final boolean nameChanged = !Objects.equals(this.name, name);
         this.name = name;
 
-        final boolean descriptionChanged = !Util.equals(this.description,
+		final boolean descriptionChanged = !Objects.equals(this.description,
                 description);
         this.description = description;
 
-        final boolean parentIdChanged = !Util.equals(this.parentId, parentId);
+		final boolean parentIdChanged = !Objects.equals(this.parentId, parentId);
         this.parentId = parentId;
 
         fireSchemeChanged(new SchemeEvent(this, definedChanged, nameChanged,
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/TriggerSequence.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/TriggerSequence.java
index 95be30b..ba5b523 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/TriggerSequence.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/TriggerSequence.java
@@ -10,6 +10,8 @@
  *******************************************************************************/
 package org.eclipse.jface.bindings;
 
+import java.util.Arrays;
+
 import org.eclipse.jface.util.Util;
 
 /**
@@ -112,7 +114,7 @@
 		}
 
 		final TriggerSequence triggerSequence = (TriggerSequence) object;
-		return Util.equals(triggers, triggerSequence.triggers);
+		return Arrays.equals(triggers, triggerSequence.triggers);
 	}
 
 	/**
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Util.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Util.java
index e6a2550..313d2cc 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Util.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Util.java
@@ -11,9 +11,11 @@
 
 package org.eclipse.jface.util;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.MissingResourceException;
+import java.util.Objects;
 import java.util.ResourceBundle;
 import java.util.SortedSet;
 import java.util.TreeSet;
@@ -241,7 +243,7 @@
 		}
 
 		for (int i = 0; i < r; i++) {
-			if (!equals(left[l - i - 1], right[r - i - 1])) {
+			if (!Objects.equals(left[l - i - 1], right[r - i - 1])) {
 				return false;
 			}
 		}
@@ -259,54 +261,31 @@
 	 *            The right object to compare; may be <code>null</code>.
 	 * @return <code>true</code> if the two objects are equivalent;
 	 *         <code>false</code> otherwise.
+	 * @deprecated Use {@link Objects#equals(Object, Object)}
 	 */
+	@Deprecated
 	public static final boolean equals(final Object left, final Object right) {
-		return left == null ? right == null : ((right != null) && left
-				.equals(right));
+		return Objects.equals(left, right);
 	}
 
 	/**
-	 * Tests whether two arrays of objects are equal to each other. The arrays
-	 * must not be <code>null</code>, but their elements may be
-	 * <code>null</code>.
+	 * Tests whether two arrays of objects are equal to each other. The arrays must
+	 * not be <code>null</code>, but their elements may be <code>null</code>.
 	 *
 	 * @param leftArray
-	 *            The left array to compare; may be <code>null</code>, and
-	 *            may be empty and may contain <code>null</code> elements.
+	 *            The left array to compare; may be <code>null</code>, and may be
+	 *            empty and may contain <code>null</code> elements.
 	 * @param rightArray
-	 *            The right array to compare; may be <code>null</code>, and
-	 *            may be empty and may contain <code>null</code> elements.
-	 * @return <code>true</code> if the arrays are equal length and the
-	 *         elements at the same position are equal; <code>false</code>
-	 *         otherwise.
+	 *            The right array to compare; may be <code>null</code>, and may be
+	 *            empty and may contain <code>null</code> elements.
+	 * @return <code>true</code> if the arrays are equal length and the elements at
+	 *         the same position are equal; <code>false</code> otherwise.
+	 * @deprecated Use {@link Arrays#equals(Object[], Object[])}
 	 */
+	@Deprecated
 	public static final boolean equals(final Object[] leftArray,
 			final Object[] rightArray) {
-		if (leftArray == rightArray) {
-			return true;
-		}
-
-		if (leftArray == null) {
-			return (rightArray == null);
-		} else if (rightArray == null) {
-			return false;
-		}
-
-		if (leftArray.length != rightArray.length) {
-			return false;
-		}
-
-		for (int i = 0; i < leftArray.length; i++) {
-			final Object left = leftArray[i];
-			final Object right = rightArray[i];
-			final boolean equal = (left == null) ? (right == null) : (left
-					.equals(right));
-			if (!equal) {
-				return false;
-			}
-		}
-
-		return true;
+		return Arrays.equals(leftArray, rightArray);
 	}
 
 	/**
@@ -385,7 +364,7 @@
 		}
 
 		for (int i = 0; i < r; i++) {
-			if (!equals(left[i], right[i])) {
+			if (!Objects.equals(left[i], right[i])) {
 				return false;
 			}
 		}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNode.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNode.java
index 403c3e2..c781516 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNode.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNode.java
@@ -11,6 +11,8 @@
 
 package org.eclipse.jface.viewers;
 
+import java.util.Objects;
+
 import org.eclipse.jface.util.Util;
 
 /**
@@ -59,7 +61,7 @@
 	@Override
 	public boolean equals(final Object object) {
 		if (object instanceof TreeNode) {
-			return Util.equals(this.value, ((TreeNode) object).value);
+			return Objects.equals(this.value, ((TreeNode) object).value);
 		}
 
 		return false;
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/FiltersConfigurationDialog.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/FiltersConfigurationDialog.java
index 6aa8fbd..9ee5cc0 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/FiltersConfigurationDialog.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/FiltersConfigurationDialog.java
@@ -21,13 +21,13 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Objects;
 
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.dialogs.IInputValidator;
 import org.eclipse.jface.dialogs.InputDialog;
 import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.Util;
 import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.CheckboxTableViewer;
 import org.eclipse.jface.viewers.ISelection;
@@ -621,7 +621,7 @@
 				Iterator<MarkerFieldFilterGroup> filterGroupIterator = filterGroups.iterator();
 				while (filterGroupIterator.hasNext()) {
 					MarkerFieldFilterGroup group = filterGroupIterator.next();
-					if (Util.equals(group.getName(), selectedElementName)) {
+					if (Objects.equals(group.getName(), selectedElementName)) {
 						selectedElements.add(group);
 						break;
 					}
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ResourceNavigator.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ResourceNavigator.java
index 9c17d64..07c3f25 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ResourceNavigator.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ResourceNavigator.java
@@ -20,6 +20,7 @@
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Objects;
 
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
@@ -36,7 +37,6 @@
 import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.Util;
 import org.eclipse.jface.viewers.DecoratingLabelProvider;
 import org.eclipse.jface.viewers.DoubleClickEvent;
 import org.eclipse.jface.viewers.ILabelDecorator;
@@ -1367,7 +1367,7 @@
 	 * @since 3.2
 	 */
 	private boolean internalSetWorkingSet(IWorkingSet workingSet) {
-		boolean refreshNeeded = !Util.equals(this.workingSet, workingSet);
+		boolean refreshNeeded = !Objects.equals(this.workingSet, workingSet);
 		this.workingSet = workingSet;
 		emptyWorkingSet = workingSet != null && workingSet.isAggregateWorkingSet()
 				&& workingSet.isEmpty();
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java
index 2246440..284b5a3 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java
@@ -12,6 +12,7 @@
 
 package org.eclipse.ui.internal.handlers;
 
+import java.util.Objects;
 import org.eclipse.core.commands.Command;
 import org.eclipse.core.commands.CommandEvent;
 import org.eclipse.core.commands.ExecutionEvent;
@@ -33,7 +34,6 @@
 import org.eclipse.jface.menus.IMenuStateIds;
 import org.eclipse.jface.menus.TextState;
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.Util;
 import org.eclipse.swt.events.HelpListener;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.ui.commands.ICommandImageService;
@@ -396,7 +396,7 @@
 			}
 		}
 
-		if (!Util.equals(oldDescription, newDescription)) {
+		if (!Objects.equals(oldDescription, newDescription)) {
 			firePropertyChange(IAction.DESCRIPTION, oldDescription,
 					newDescription);
 			firePropertyChange(IAction.TOOL_TIP_TEXT, oldDescription,
@@ -419,20 +419,20 @@
 			}
 		}
 
-		if (!Util.equals(oldDefaultImage, newDefaultImage)) {
+		if (!Objects.equals(oldDefaultImage, newDefaultImage)) {
 			firePropertyChange(IAction.IMAGE, oldDefaultImage, newDefaultImage);
 		}
 
-		if (!Util.equals(oldDisabledImage, newDisabledImage)) {
+		if (!Objects.equals(oldDisabledImage, newDisabledImage)) {
 			firePropertyChange(IAction.IMAGE, oldDisabledImage,
 					newDisabledImage);
 		}
 
-		if (!Util.equals(oldHoverImage, newHoverImage)) {
+		if (!Objects.equals(oldHoverImage, newHoverImage)) {
 			firePropertyChange(IAction.IMAGE, oldHoverImage, newHoverImage);
 		}
 
-		if (!Util.equals(oldText, newText)) {
+		if (!Objects.equals(oldText, newText)) {
 			firePropertyChange(IAction.TEXT, oldText, newText);
 		}
 	}
@@ -458,7 +458,7 @@
 				INamedHandleStateIds.DESCRIPTION);
 		if (state instanceof TextState) {
 			final String currentValue = (String) state.getValue();
-			if (!Util.equals(text, currentValue)) {
+			if (!Objects.equals(text, currentValue)) {
 				state.setValue(text);
 			}
 		}
@@ -533,7 +533,7 @@
 				INamedHandleStateIds.NAME);
 		if (state instanceof TextState) {
 			final String currentValue = (String) state.getValue();
-			if (!Util.equals(text, currentValue)) {
+			if (!Objects.equals(text, currentValue)) {
 				state.setValue(text);
 			}
 		}