Make use of IStructuredSelection now being iterable

see Bug 234331

Change-Id: I7c35ba023d7bb7682d8e441eb4b9208744c540be
Signed-off-by: Carsten Hammer <carsten.hammer@t-online.de>
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF
index fde9c66..c4d208d 100644
--- a/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.e4.ui.workbench.swt;singleton:=true
-Bundle-Version: 0.14.800.qualifier
+Bundle-Version: 0.14.900.qualifier
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -9,7 +9,7 @@
 Require-Bundle: org.eclipse.e4.ui.workbench;bundle-version="0.10.0",
  org.eclipse.e4.core.services;bundle-version="1.0.0",
  org.eclipse.e4.ui.services;bundle-version="0.1.0",
- org.eclipse.jface;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.18.0,4.0.0)",
  org.eclipse.e4.ui.dialogs;bundle-version="1.1.600",
  org.eclipse.core.databinding;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.jface.databinding;bundle-version="[1.3.0,2.0.0)",
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/workbench/swt/internal/copy/ShowViewDialog.java b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/workbench/swt/internal/copy/ShowViewDialog.java
index 1ba2fc8..18cec6f 100644
--- a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/workbench/swt/internal/copy/ShowViewDialog.java
+++ b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/workbench/swt/internal/copy/ShowViewDialog.java
@@ -17,7 +17,6 @@
 package org.eclipse.e4.ui.workbench.swt.internal.copy;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import org.eclipse.e4.core.contexts.IEclipseContext;
 import org.eclipse.e4.ui.dialogs.filteredtree.FilteredTree;
@@ -387,8 +386,7 @@
 	protected void updateSelection(SelectionChangedEvent event) {
 		ArrayList<MPartDescriptor> descs = new ArrayList<>();
 		IStructuredSelection sel = event.getStructuredSelection();
-		for (Iterator<?> i = sel.iterator(); i.hasNext();) {
-			Object o = i.next();
+		for (Object o : sel) {
 			if (o instanceof MPartDescriptor) {
 				descs.add((MPartDescriptor) o);
 			}
diff --git a/bundles/org.eclipse.ui.forms/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.forms/META-INF/MANIFEST.MF
index 2e54121..bb29c49 100644
--- a/bundles/org.eclipse.ui.forms/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.forms/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
  org.eclipse.ui.internal.forms.css.properties.css2;x-internal:=true,
  org.eclipse.ui.internal.forms.widgets;x-friends:="org.eclipse.ui.tests.forms"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.jface;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.18.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.105.0,4.0.0)";resolution:=optional,
  org.eclipse.e4.ui.css.core;bundle-version="0.10.100",
  org.eclipse.e4.ui.css.swt;bundle-version="0.11.100"
diff --git a/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/forms/DetailsPart.java b/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/forms/DetailsPart.java
index 69f98a5..fbe602e 100644
--- a/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/forms/DetailsPart.java
+++ b/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/forms/DetailsPart.java
@@ -15,7 +15,6 @@
 
 import java.util.Enumeration;
 import java.util.Hashtable;
-import java.util.Iterator;
 
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -218,8 +217,7 @@
 	private void update() {
 		Object key = null;
 		if (currentSelection != null) {
-			for (Iterator<?> iter = currentSelection.iterator(); iter.hasNext();) {
-				Object obj = iter.next();
+			for (Object obj : currentSelection) {
 				if (key == null)
 					key = getKey(obj);
 				else if (getKey(obj).equals(key) == false) {
diff --git a/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF
index 5c0d36a..d079e56 100644
--- a/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF
@@ -69,7 +69,8 @@
  org.eclipse.e4.core.di;bundle-version="[1.6.0,2.0.0)",
  org.eclipse.e4.core.di.extensions;bundle-version="[0.14.0,1.0.0)",
  org.eclipse.osgi.services;bundle-version="3.5.0",
- org.eclipse.ui.navigator;bundle-version="3.7.400"
+ org.eclipse.ui.navigator;bundle-version="3.7.400",
+ org.eclipse.jface;bundle-version="[3.18.0,4.0.0)"
 Import-Package: javax.annotation,
  javax.inject,
  com.ibm.icu.text
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/ide/IDE.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/ide/IDE.java
index a1df78e..b28b3cb 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/ide/IDE.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/ide/IDE.java
@@ -21,7 +21,6 @@
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.core.filesystem.EFS;
@@ -1599,8 +1598,7 @@
 	 */
 	public static List<IResource> computeSelectedResources(IStructuredSelection originalSelection) {
 		List<IResource> resources = null;
-		for (Iterator<?> e = originalSelection.iterator(); e.hasNext();) {
-			Object next = e.next();
+		for (Object next : originalSelection) {
 			IResource resource = Adapters.adapt(next, IResource.class);
 			if (resource != null) {
 				if (resources == null) {
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/ide/ResourceSelectionUtil.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/ide/ResourceSelectionUtil.java
index bc29842..3dbd2b2 100755
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/ide/ResourceSelectionUtil.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/ide/ResourceSelectionUtil.java
@@ -14,7 +14,6 @@
 package org.eclipse.ui.ide;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.core.resources.IResource;
@@ -51,9 +50,7 @@
 	 */
 	public static boolean allResourcesAreOfType(IStructuredSelection selection,
 			int resourceMask) {
-		Iterator resources = selection.iterator();
-		while (resources.hasNext()) {
-			Object next = resources.next();
+		for (Object next : selection) {
 			if (!(next instanceof IResource)) {
 				return false;
 			}
@@ -78,10 +75,8 @@
 	 * @see IResource#getType()
 	 */
 	public static IStructuredSelection allResources(IStructuredSelection selection, int resourceMask) {
-		Iterator<?> adaptables = selection.iterator();
 		List<IResource> result = new ArrayList<>();
-		while (adaptables.hasNext()) {
-			Object next = adaptables.next();
+		for (Object next : selection) {
 			IResource resource = Adapters.adapt(next, IResource.class);
 			if (resource == null) {
 				return null;
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDESelectionConversionService.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDESelectionConversionService.java
index ab5c393..a4f8485 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDESelectionConversionService.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDESelectionConversionService.java
@@ -16,7 +16,6 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.core.resources.IResource;
@@ -45,10 +44,8 @@
 			IStructuredSelection originalSelection) {
 
 		List result = new ArrayList();
-		Iterator elements = originalSelection.iterator();
 
-		while (elements.hasNext()) {
-			Object currentElement = elements.next();
+		for (Object currentElement : originalSelection) {
 
 			IResource resource = ResourceUtil.getResource(currentElement);
 
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ProjectNaturesPage.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ProjectNaturesPage.java
index 94f7ce3..213cade 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ProjectNaturesPage.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ProjectNaturesPage.java
@@ -186,7 +186,7 @@
 					ProjectNaturesPage.this.warningAlreadyShown = true;
 				}
 				IStructuredSelection selection = ProjectNaturesPage.this.activeNaturesList.getStructuredSelection();
-				for (Object item : selection.toList()) {
+				for (Object item : selection) {
 					String natureId = (String) item;
 					naturesIdsWorkingCopy.remove(natureId);
 				}
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java
index f9f2529..6ee42d1 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java
@@ -1093,12 +1093,8 @@
 
 	private void handleRemove() {
 		ISelection selection = filterView.getSelection();
-		IStructuredSelection structuredSelection = null;
 		if (selection instanceof IStructuredSelection) {
-			structuredSelection = ((IStructuredSelection) selection);
-			Iterator it = structuredSelection.iterator();
-			while (it.hasNext()) {
-				Object element = it.next();
+			for (Object element : (IStructuredSelection) selection) {
 				if (element instanceof FilterCopy) {
 					FilterCopy filter = (FilterCopy) element;
 					filter.getParent().removeChild(filter);
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ExtendedMarkersView.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ExtendedMarkersView.java
index b5da4cb..9984929 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ExtendedMarkersView.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ExtendedMarkersView.java
@@ -578,11 +578,9 @@
 	 * @since 3.8
 	 */
 	IMarker[] getOpenableMarkers() {
-		IStructuredSelection structured = viewer.getStructuredSelection();
-		Iterator<?> elements = structured.iterator();
 		HashSet<IMarker> result = new HashSet<>();
-		while (elements.hasNext()) {
-			MarkerSupportItem next = (MarkerSupportItem) elements.next();
+		for (Object o : viewer.getStructuredSelection()) {
+			MarkerSupportItem next = (MarkerSupportItem) o;
 			if (next.isConcrete()) {
 				result.add(((MarkerEntry) next).getMarker());
 			}
@@ -1305,8 +1303,7 @@
 	 */
 	void setSelection(StructuredSelection structuredSelection, boolean reveal) {
 		List<MarkerItem> newSelection = new ArrayList<>(structuredSelection.size());
-		for (Iterator<?> i = structuredSelection.iterator(); i.hasNext();) {
-			Object next = i.next();
+		for (Object next : structuredSelection) {
 			if (next instanceof IMarker) {
 				MarkerItem marker = builder.getMarkers().getMarkerItem(
 						(IMarker) next);
@@ -1638,8 +1635,7 @@
 				objectsToAdapt.add(editor.getEditorInput());
 			} else {
 				if (selection instanceof IStructuredSelection) {
-					for (Iterator<?> iterator = ((IStructuredSelection) selection).iterator(); iterator.hasNext();) {
-						Object object = iterator.next();
+					for (Object object : (IStructuredSelection) selection) {
 						objectsToAdapt.add(object);
 					}
 				}
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/SmartImportWizard.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/SmartImportWizard.java
index 461cb94..08eda78 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/SmartImportWizard.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/SmartImportWizard.java
@@ -193,7 +193,7 @@
 	@Override
 	public void init(IWorkbench workbench, IStructuredSelection selection) {
 		if (selection != null) {
-			for (Object item : selection.toList()) {
+			for (Object item : selection) {
 				File asFile = toFile(item);
 				if (asFile != null && this.initialSelection == null) {
 					this.initialSelection = asFile;
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/Util.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/Util.java
index 934e5cf..da6a66e 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/Util.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/Util.java
@@ -16,7 +16,6 @@
 package org.eclipse.ui.views.markers.internal;
 
 import java.util.Date;
-import java.util.Iterator;
 
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IResource;
@@ -300,9 +299,8 @@
 	 */
 	public static boolean allConcreteSelection(IStructuredSelection selection) {
 		if (selection != null && selection.size() > 0) {
-			Iterator<?> nodes = selection.iterator();
-			while (nodes.hasNext()) {
-				if (((MarkerNode) nodes.next()).isConcrete()) {
+			for (Object node : selection) {
+				if (((MarkerNode) node).isConcrete()) {
 					continue;
 				}
 				return false;
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDragAdapter.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDragAdapter.java
index 97a7045..076c1f6 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDragAdapter.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDragAdapter.java
@@ -14,7 +14,6 @@
 package org.eclipse.ui.views.navigator;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.core.resources.IFile;
@@ -196,8 +195,7 @@
 		}
 
 		IStructuredSelection selection = (IStructuredSelection) selectionProvider.getSelection();
-		for (Iterator i = selection.iterator(); i.hasNext();) {
-			Object next = i.next();
+		for (Object next : selection) {
 			if (!(next instanceof IFile || next instanceof IFolder)) {
 				event.doit = false;
 				return;
@@ -221,9 +219,7 @@
 		IStructuredSelection structuredSelection = (IStructuredSelection) selection;
 
 		// loop through list and look for matching items
-		Iterator itr = structuredSelection.iterator();
-		while (itr.hasNext()) {
-			Object obj = itr.next();
+		for (Object obj : structuredSelection) {
 			if (obj instanceof IResource) {
 				IResource res = (IResource) obj;
 				if ((res.getType() & resourceTypes) == res.getType()) {
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDropAdapter.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDropAdapter.java
index a976c98..9733bc0 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDropAdapter.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/NavigatorDropAdapter.java
@@ -15,7 +15,6 @@
 package org.eclipse.ui.views.navigator;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IResource;
@@ -150,8 +149,7 @@
 		ISelection selection = LocalSelectionTransfer.getInstance().getSelection();
 		if (selection instanceof IStructuredSelection) {
 			IStructuredSelection ssel = (IStructuredSelection) selection;
-			for (Iterator<?> i = ssel.iterator(); i.hasNext();) {
-				Object o = i.next();
+			for (Object o : ssel) {
 
 				IResource r = Adapters.adapt(o, IResource.class);
 				if (r != null) {
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 0e0f3c2..4167333 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
@@ -282,8 +282,7 @@
 		ArrayList<IResource> list = new ArrayList<>();
 		if (selection instanceof IStructuredSelection) {
 			IStructuredSelection ssel = (IStructuredSelection) selection;
-			for (Iterator<?> i = ssel.iterator(); i.hasNext();) {
-				Object o = i.next();
+			for (Object o : ssel) {
 				IResource resource = Adapters.adapt(o, IResource.class);
 				if (resource != null) {
 					list.add(resource);
@@ -1459,8 +1458,7 @@
 			ISelection sel = context.getSelection();
 			if (sel instanceof IStructuredSelection) {
 				IStructuredSelection ssel = (IStructuredSelection) sel;
-				for (Iterator<?> i = ssel.iterator(); i.hasNext();) {
-					Object o1 = i.next();
+				for (Object o1 : ssel) {
 
 					IResource resource = Adapters.adapt(o1, IResource.class);
 					if (resource != null) {
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ResourceSelectionUtil.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ResourceSelectionUtil.java
index 2df748d..bcc314a 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ResourceSelectionUtil.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ResourceSelectionUtil.java
@@ -14,7 +14,6 @@
 package org.eclipse.ui.views.navigator;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.core.resources.IResource;
@@ -58,9 +57,7 @@
 	 * @see IResource#getType()
 	 */
 	public static boolean allResourcesAreOfType(IStructuredSelection selection, int resourceMask) {
-		Iterator<?> resources = selection.iterator();
-		while (resources.hasNext()) {
-			Object next = resources.next();
+		for (Object next : selection) {
 			if (!(next instanceof IResource)) {
 				return false;
 			}
@@ -82,10 +79,8 @@
 	 * @see IResource#getType()
 	 */
 	public static IStructuredSelection allResources(IStructuredSelection selection, int resourceMask) {
-		Iterator<?> adaptables = selection.iterator();
 		List<IResource> result = new ArrayList<>();
-		while (adaptables.hasNext()) {
-			Object next = adaptables.next();
+		for (Object next : selection) {
 
 			IResource resource = Adapters.adapt(next, IResource.class);
 			if (resource == null) {
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ShowInNavigatorAction.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ShowInNavigatorAction.java
index 3d3bebc..6ea8d82 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ShowInNavigatorAction.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/ShowInNavigatorAction.java
@@ -14,7 +14,6 @@
 package org.eclipse.ui.views.navigator;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.core.resources.IMarker;
@@ -75,8 +74,7 @@
 	 */
 	List<IResource> getResources(IStructuredSelection selection) {
 		List<IResource> v = new ArrayList<>();
-		for (Iterator<?> i = selection.iterator(); i.hasNext();) {
-			Object o = i.next();
+		for (Object o : selection) {
 
 			IResource resource = Adapters.adapt(o, IResource.class);
 			if (resource != null) {
diff --git a/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
index 2ad3dc2..e86eeb6 100644
--- a/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
@@ -15,7 +15,7 @@
  org.eclipse.ui.navigator.resources
 Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.15.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.jface;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.18.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.ui.navigator;bundle-version="[3.9.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
diff --git a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java
index 08b221d..a259596 100644
--- a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java
+++ b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java
@@ -169,9 +169,7 @@
 			return Collections.emptyList();
 		}
 		List<IProject> resources = new ArrayList<>();
-		Iterator<?> selectionIterator = selection.iterator();
-		while (selectionIterator.hasNext()) {
-			Object currentObject = selectionIterator.next();
+		for (Object currentObject : selection) {
 			if (currentObject instanceof IWorkingSet) {
 				IWorkingSet workingSet = (IWorkingSet) currentObject;
 				for (IAdaptable element : workingSet.getElements()) {
diff --git a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/workingsets/ProjectInWorkingSetDropAdapterAssistant.java b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/workingsets/ProjectInWorkingSetDropAdapterAssistant.java
index d65c94e..703640e 100644
--- a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/workingsets/ProjectInWorkingSetDropAdapterAssistant.java
+++ b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/workingsets/ProjectInWorkingSetDropAdapterAssistant.java
@@ -60,7 +60,7 @@
 		// Verify that we have at least one project not already in the target
 		ISelection sel = LocalSelectionTransfer.getTransfer().getSelection();
 		if (!sel.isEmpty() && sel instanceof IStructuredSelection) {
-			for (Object item : ((IStructuredSelection) sel).toArray()) {
+			for (Object item : (IStructuredSelection) sel) {
 				IProject project = Adapters.adapt(item, IProject.class);
 				if (project != null && !workingSetContains(targetWorkingSet, project)) {
 					return Status.OK_STATUS;
@@ -91,7 +91,7 @@
 				}
 			}
 		} else if (sel instanceof IStructuredSelection) {
-			for (Object item : ((IStructuredSelection) sel).toArray()) {
+			for (Object item : (IStructuredSelection) sel) {
 				IProject project = Adapters.adapt(item, IProject.class);
 				if (project != null && !workingSetContains(targetWorkingSet, project)) {
 					workingSetManager.addToWorkingSets(project, new IWorkingSet[] { targetWorkingSet });
diff --git a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDragAdapterAssistant.java b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDragAdapterAssistant.java
index 1b5c59a..156dfda 100644
--- a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDragAdapterAssistant.java
+++ b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDragAdapterAssistant.java
@@ -15,7 +15,6 @@
 
 package org.eclipse.ui.navigator.resources;
 
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.Set;
 
@@ -109,8 +108,7 @@
 	private IResource[] getSelectedResources(IStructuredSelection aSelection) {
 		Set<IResource> resources = new LinkedHashSet<>();
 		IResource resource = null;
-		for (Iterator<?> iter = aSelection.iterator(); iter.hasNext();) {
-			Object selected = iter.next();
+		for (Object selected : aSelection) {
 			resource = Adapters.adapt(selected, IRESOURCE_TYPE);
 			if (resource != null) {
 				resources.add(resource);
diff --git a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDropAdapterAssistant.java b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDropAdapterAssistant.java
index 714bf12..3802742 100644
--- a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDropAdapterAssistant.java
+++ b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/navigator/resources/ResourceDropAdapterAssistant.java
@@ -15,7 +15,6 @@
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
-import java.util.Iterator;
 
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IProject;
@@ -340,8 +339,7 @@
 	private IResource[] getSelectedResources(IStructuredSelection selection) {
 		ArrayList<IResource> selectedResources = new ArrayList<>();
 
-		for (Iterator<?> i = selection.iterator(); i.hasNext();) {
-			Object o = i.next();
+		for (Object o : selection) {
 			IResource resource = Adapters.adapt(o, IResource.class);
 			if (resource != null) {
 				selectedResources.add(resource);
diff --git a/bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF
index e751820..7449f8f 100644
--- a/bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF
@@ -17,7 +17,8 @@
  org.eclipse.ui.navigator
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)"
+ org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.18.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
 Automatic-Module-Name: org.eclipse.ui.navigator
diff --git a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorSaveablesService.java b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorSaveablesService.java
index 5f6d298..6cbd08a 100644
--- a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorSaveablesService.java
+++ b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorSaveablesService.java
@@ -318,8 +318,7 @@
 	private Saveable[] getActiveSaveablesFromTreePathProvider(
 			IStructuredSelection selection, ITreePathContentProvider provider) {
 		Set<Saveable> result = new HashSet<>();
-		for (Iterator it = selection.iterator(); it.hasNext();) {
-			Object element = it.next();
+		for (Object element : selection) {
 			Saveable saveable = getSaveable(element);
 			if (saveable != null) {
 				result.add(saveable);
@@ -342,8 +341,7 @@
 	private Saveable[] getActiveSaveablesFromTreeProvider(
 			IStructuredSelection selection, ITreeContentProvider contentProvider) {
 		Set<Saveable> result = new HashSet<>();
-		for (Iterator it = selection.iterator(); it.hasNext();) {
-			Object element = it.next();
+		for (Object element : selection) {
 			Saveable saveable = findSaveable(element, contentProvider);
 			if (saveable != null) {
 				result.add(saveable);
diff --git a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/CommonActionProviderDescriptor.java b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/CommonActionProviderDescriptor.java
index 9636499..7dc5d9b 100644
--- a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/CommonActionProviderDescriptor.java
+++ b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/actions/CommonActionProviderDescriptor.java
@@ -231,11 +231,9 @@
 				return false;
 			}
 		} else {
-			IEvaluationContext context = null;
 			IEvaluationContext parentContext = NavigatorPlugin.getApplicationContext();
-			Iterator elements = aStructuredSelection.iterator();
-			while (elements.hasNext()) {
-				context = new EvaluationContext(parentContext, elements.next());
+			for (Object element : aStructuredSelection) {
+				IEvaluationContext context = new EvaluationContext(parentContext, element);
 				context.setAllowPluginActivation(true);
 				if (NavigatorPlugin.safeEvaluate(enablement, context) != EvaluationResult.TRUE) {
 					return false;
diff --git a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptor.java b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptor.java
index 5552071..a2c4eb5 100644
--- a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptor.java
+++ b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptor.java
@@ -15,7 +15,6 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Set;
@@ -461,8 +460,7 @@
 		if(aSelection.isEmpty()) {
 			return false;
 		}
-		for (Iterator iter = aSelection.iterator(); iter.hasNext();) {
-			Object element = iter.next();
+		for (Object element : aSelection) {
 			if(!isPossibleChild(element)) {
 				return false;
 			}
diff --git a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/wizards/CommonWizardDescriptor.java b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/wizards/CommonWizardDescriptor.java
index 887f0ab..c08136c 100644
--- a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/wizards/CommonWizardDescriptor.java
+++ b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/wizards/CommonWizardDescriptor.java
@@ -14,8 +14,6 @@
 
 package org.eclipse.ui.internal.navigator.wizards;
 
-import java.util.Iterator;
-
 import org.eclipse.core.expressions.ElementHandler;
 import org.eclipse.core.expressions.EvaluationContext;
 import org.eclipse.core.expressions.EvaluationResult;
@@ -114,9 +112,8 @@
 		IEvaluationContext context = null;
 		IEvaluationContext parentContext = NavigatorPlugin.getApplicationContext();
 
-		Iterator elements = aStructuredSelection.iterator();
-		while (elements.hasNext()) {
-			context = new EvaluationContext(parentContext, elements.next());
+		for (Object element : aStructuredSelection) {
+			context = new EvaluationContext(parentContext, element);
 			context.setAllowPluginActivation(true);
 			if (NavigatorPlugin.safeEvaluate(enablement, context) == EvaluationResult.FALSE) {
 				return false;
diff --git a/bundles/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF
index 5aa5461..c475c8a 100644
--- a/bundles/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF
@@ -15,7 +15,8 @@
  org.eclipse.ui;bundle-version="[3.3.0,4.0.0)";visibility:=reexport,
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.e4.ui.css.core;bundle-version="0.12.100",
- org.eclipse.e4.ui.css.swt
+ org.eclipse.e4.ui.css.swt,
+ org.eclipse.jface;bundle-version="[3.18.0,4.0.0)"
 Import-Package: com.ibm.icu.text
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Automatic-Module-Name: org.eclipse.ui.views.properties.tabbed
diff --git a/bundles/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryClassSectionFilter.java b/bundles/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryClassSectionFilter.java
index 99c15c3..57da487 100755
--- a/bundles/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryClassSectionFilter.java
+++ b/bundles/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryClassSectionFilter.java
@@ -78,9 +78,7 @@
 			IFilter filter = descriptor.getFilter();
 
 			if (filter != null) {
-				for (Iterator<?> i = ((IStructuredSelection) selection).iterator(); i
-						.hasNext();) {
-					Object object = i.next();
+				for (Object object : (IStructuredSelection) selection) {
 
 					if (filter.select(object) == false) {
 						/**
@@ -98,10 +96,7 @@
 
 			Set<Class<?>> effectiveTypes = new HashSet<>();
 
-			for (Iterator<?> i = ((IStructuredSelection) selection).iterator(); i
-					.hasNext();) {
-
-				Object object = i.next();
+			for (Object object : (IStructuredSelection) selection) {
 
 				Class<?> remapType = object.getClass();
 				if (typeMapper != null) {
diff --git a/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF
index b219ccc..3a2db40 100644
--- a/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF
@@ -12,6 +12,7 @@
  org.eclipse.ui.views.properties; ui.views="split"; mandatory:="ui.views"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
  org.eclipse.help;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.ui;bundle-version="[3.5.0,4.0.0)"
+ org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.18.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Automatic-Module-Name: org.eclipse.ui.views
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java
index cf31091..8ec70dc 100644
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java
+++ b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java
@@ -20,7 +20,6 @@
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -924,12 +923,9 @@
 	 */
 	public void resetProperties() {
 		// Determine the selection
-		IStructuredSelection selection = (IStructuredSelection) getSelection();
-
 		// Iterate over entries and reset them
-		Iterator<IPropertySheetEntry> itr = selection.iterator();
-		while (itr.hasNext()) {
-			itr.next().resetPropertyValue();
+		for (Object element : (IStructuredSelection) getSelection()) {
+			((IPropertySheetEntry) element).resetPropertyValue();
 		}
 	}
 
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionEnabler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionEnabler.java
index 2620686..ea3df7d 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionEnabler.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionEnabler.java
@@ -16,7 +16,6 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Objects;
 import org.eclipse.core.runtime.Adapters;
@@ -327,8 +326,7 @@
 		if (classes.isEmpty()) {
 			return true;
 		}
-		for (Iterator<?> elements = ssel.iterator(); elements.hasNext();) {
-			Object obj = elements.next();
+		for (Object obj : ssel) {
 			if (obj instanceof IAdaptable) {
 				IAdaptable element = (IAdaptable) obj;
 				if (verifyElement(element) == false) {
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionListenerFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionListenerFactory.java
index 5a6147a..8fb4e63 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionListenerFactory.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionListenerFactory.java
@@ -257,7 +257,7 @@
 					return false;
 				}
 				IStructuredSelection sel = (IStructuredSelection) model.getCurrentSelection();
-				for (Object object : sel.toArray()) {
+				for (Object object : sel) {
 					if (Adapters.adapt(object, adapterType) == null) {
 						return false;
 					}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionExpression.java
index 1b67dfa..d20ddec 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionExpression.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionExpression.java
@@ -949,9 +949,8 @@
 			return root.isEnabledFor(null);
 		}
 
-		Iterator<?> elements = selection.iterator();
-		while (elements.hasNext()) {
-			if (!isEnabledFor(elements.next())) {
+		for (Object element : selection) {
+			if (!isEnabledFor(element)) {
 				return false;
 			}
 		}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyResourceSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyResourceSupport.java
index 167bbb8..31acb70 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyResourceSupport.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyResourceSupport.java
@@ -16,7 +16,6 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.Platform;
@@ -572,8 +571,7 @@
 	 */
 	public static IStructuredSelection adaptSelection(IStructuredSelection selection, String objectClass) {
 		List<Object> newSelection = new ArrayList<>(10);
-		for (Iterator<?> it = selection.iterator(); it.hasNext();) {
-			Object element = it.next();
+		for (Object element : selection) {
 			Object adaptedElement = getAdapter(element, objectClass);
 			if (adaptedElement != null) {
 				newSelection.add(adaptedElement);
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectContributorManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectContributorManager.java
index 1adfc48..77c551c 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectContributorManager.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectContributorManager.java
@@ -278,9 +278,8 @@
 	 * @return whether it is applicable
 	 */
 	public boolean isApplicableTo(IStructuredSelection selection, IObjectContributor contributor) {
-		Iterator elements = selection.iterator();
-		while (elements.hasNext()) {
-			if (contributor.isApplicableTo(elements.next()) == false) {
+		for (Object element : selection) {
+			if (contributor.isApplicableTo(element) == false) {
 				return false;
 			}
 		}
@@ -297,9 +296,8 @@
 	 */
 
 	public boolean isApplicableTo(List list, IObjectContributor contributor) {
-		Iterator elements = list.iterator();
-		while (elements.hasNext()) {
-			if (contributor.isApplicableTo(elements.next()) == false) {
+		for (Object element : list) {
+			if (contributor.isApplicableTo(element) == false) {
 				return false;
 			}
 		}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionConversionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionConversionService.java
index b772923..d46e844 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionConversionService.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionConversionService.java
@@ -15,7 +15,6 @@
 package org.eclipse.ui.internal;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import org.eclipse.core.runtime.Adapters;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -55,10 +54,8 @@
 		}
 
 		List result = new ArrayList();
-		Iterator elements = originalSelection.iterator();
 
-		while (elements.hasNext()) {
-			Object currentElement = elements.next();
+		for (Object currentElement : originalSelection) {
 			Object resource = Adapters.adapt(currentElement, resourceClass);
 			if (resource != null) {
 				result.add(resource);
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java
index ab393cc..94beaf7 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java
@@ -298,13 +298,11 @@
 	public void selectionChanged(IAction actionProxy, ISelection selection) {
 		super.selectionChanged(actionProxy, selection);
 		if (selection instanceof IStructuredSelection) {
-			Object[] selectedElements = ((IStructuredSelection) getSelection()).toArray();
 			// ensure every item is of type IAdaptable and is NOT an IWorkingSet (minimal
 			// fix for 157799)
 			boolean minimallyOkay = true;
-			for (Object selectedElement : selectedElements) {
-				Object object = selectedElement;
-				if (!(object instanceof IAdaptable) || object instanceof IWorkingSet) {
+			for (Object selectedElement : (IStructuredSelection) getSelection()) {
+				if (!(selectedElement instanceof IAdaptable) || selectedElement instanceof IWorkingSet) {
 					minimallyOkay = false;
 					break;
 				}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java
index 5ea7f0e..ec7dea6 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java
@@ -476,6 +476,7 @@
 
 	}
 
+	@SuppressWarnings("unchecked")
 	private void createFileAssociations(final Composite parent) {
 		Composite composite = new Composite(parent, SWT.NONE);
 		composite.setLayout(new GridLayout(2, false));
@@ -502,8 +503,7 @@
 				return;
 			}
 			boolean enabled = true;
-			List<Spec> elements = selection.toList();
-			for (Spec spec : elements) {
+			for (Spec spec : (Iterable<Spec>) selection) {
 				if (spec.isPredefined) {
 					enabled = false;
 				}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java
index c6ae2a3..583b719 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java
@@ -232,10 +232,8 @@
 	 */
 	public Collection getApplicableContributors(IStructuredSelection selection) {
 		boolean isMultiSelection = selection.size() > 1;
-		Iterator<Object> selIter = selection.iterator();
 		Collection<RegistryPageContributor> result = null;
-		while (selIter.hasNext()) {
-			Object selectionElement = selIter.next();
+		for (Object selectionElement : selection) {
 			Collection<RegistryPageContributor> collection = getApplicableContributors(selectionElement);
 			if (isMultiSelection) {
 				// Most pages are not available for multi selection.
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java
index 504b5e6..2dfdda8 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java
@@ -17,7 +17,6 @@
 package org.eclipse.ui.internal.dialogs;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import org.eclipse.e4.core.contexts.IEclipseContext;
 import org.eclipse.e4.ui.internal.workbench.swt.WorkbenchSWTActivator;
@@ -398,9 +397,7 @@
 	 */
 	protected void updateSelection(SelectionChangedEvent event) {
 		ArrayList<MPartDescriptor> descs = new ArrayList<>();
-		IStructuredSelection sel = event.getStructuredSelection();
-		for (Iterator<?> i = sel.iterator(); i.hasNext();) {
-			Object o = i.next();
+		for (Object o : event.getStructuredSelection()) {
 			if (o instanceof MPartDescriptor) {
 				descs.add((MPartDescriptor) o);
 			}
diff --git a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
index 937367a..41244f9 100644
--- a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
@@ -96,7 +96,7 @@
  org.eclipse.ui.wizards
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.14.0,4.0.0)",
  org.eclipse.help;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jface;bundle-version="[3.15.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.18.0,4.0.0)",
  org.eclipse.swt;bundle-version="[3.107.0,4.0.0)",
  org.eclipse.jface.databinding;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.core.databinding.property;bundle-version="[1.2.0,2.0.0)",
diff --git a/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet022TableViewerRefreshNoScroll.java b/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet022TableViewerRefreshNoScroll.java
index ffd40c3..55646ae 100644
--- a/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet022TableViewerRefreshNoScroll.java
+++ b/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet022TableViewerRefreshNoScroll.java
@@ -17,7 +17,6 @@
 package org.eclipse.jface.snippets.viewers;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.jface.viewers.ArrayContentProvider;
@@ -98,13 +97,10 @@
 				if (!selection.isEmpty()) {
 					int[] indices = new int[selection.size()];
 
-					Iterator<?> it = selection.iterator();
 					TableItem[] items = v.getTable().getItems();
-					Object modelElement;
 
 					int counter = 0;
-					while (it.hasNext()) {
-						modelElement = it.next();
+					for (Object modelElement : selection) {
 						for (int i = 0; i < items.length; i++) {
 							if (items[i].getData() == modelElement) {
 								indices[counter++] = i;
diff --git a/examples/org.eclipse.jface.snippets/META-INF/MANIFEST.MF b/examples/org.eclipse.jface.snippets/META-INF/MANIFEST.MF
index 5e8553a..688c226 100644
--- a/examples/org.eclipse.jface.snippets/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.jface.snippets/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-SymbolicName: org.eclipse.jface.snippets
 Bundle-Version: 3.4.0.qualifier
 Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.jface,
+Require-Bundle: org.eclipse.jface;bundle-version="[3.18.0,4.0.0)",
  org.eclipse.jface.databinding,
  org.eclipse.core.runtime,
  org.eclipse.core.databinding
diff --git a/examples/org.eclipse.ui.examples.readmetool/Eclipse UI Examples Readme Tool/org/eclipse/ui/examples/readmetool/ReadmeContentOutlineDragListener.java b/examples/org.eclipse.ui.examples.readmetool/Eclipse UI Examples Readme Tool/org/eclipse/ui/examples/readmetool/ReadmeContentOutlineDragListener.java
index 0cdcabf..2d4b38a 100644
--- a/examples/org.eclipse.ui.examples.readmetool/Eclipse UI Examples Readme Tool/org/eclipse/ui/examples/readmetool/ReadmeContentOutlineDragListener.java
+++ b/examples/org.eclipse.ui.examples.readmetool/Eclipse UI Examples Readme Tool/org/eclipse/ui/examples/readmetool/ReadmeContentOutlineDragListener.java
@@ -56,9 +56,8 @@
 		StringBuilder result = new StringBuilder();
 		ISelection selection = page.getSelection();
 		if (selection instanceof org.eclipse.jface.viewers.IStructuredSelection) {
-			Object[] selected = ((IStructuredSelection) selection).toArray();
 			result.append("\n"); //$NON-NLS-1$
-			for (Object a : selected) {
+			for (Object a : (IStructuredSelection) selection) {
 				if (a instanceof MarkElement) {
 					result.append(((MarkElement) a).getLabel(a));
 					result.append("\n"); //$NON-NLS-1$
diff --git a/examples/org.eclipse.ui.examples.readmetool/META-INF/MANIFEST.MF b/examples/org.eclipse.ui.examples.readmetool/META-INF/MANIFEST.MF
index 3a66534..354befa 100644
--- a/examples/org.eclipse.ui.examples.readmetool/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.ui.examples.readmetool/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Plugin.name
 Bundle-SymbolicName: org.eclipse.ui.examples.readmetool; singleton:=true
-Bundle-Version: 3.5.400.qualifier
+Bundle-Version: 3.5.500.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.ui.examples.readmetool.ReadmePlugin
 Bundle-Vendor: %Plugin.providerName
@@ -14,7 +14,8 @@
  org.eclipse.ui.ide,
  org.eclipse.jface.text,
  org.eclipse.ui.workbench.texteditor,
- org.eclipse.ui.editors
+ org.eclipse.ui.editors,
+ org.eclipse.jface;bundle-version="[3.18.0,4.0.0)"
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.ui.examples.readmetool
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/AdaptedResourceNavigator.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/AdaptedResourceNavigator.java
index 9fb0977..7de348f 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/AdaptedResourceNavigator.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/adaptable/AdaptedResourceNavigator.java
@@ -14,7 +14,6 @@
 package org.eclipse.ui.tests.adaptable;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
@@ -130,8 +129,7 @@
 		ArrayList<IResource> list = new ArrayList<>();
 		if (selection instanceof IStructuredSelection) {
 			IStructuredSelection ssel = (IStructuredSelection) selection;
-			for (Iterator<?> i = ssel.iterator(); i.hasNext();) {
-				Object o = i.next();
+			for (Object o : ssel) {
 				IResource resource = Adapters.adapt(o, IResource.class);
 				if (resource != null) {
 					list.add(resource);
diff --git a/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
index 152f16c..a769a82 100644
--- a/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
@@ -45,7 +45,8 @@
  org.eclipse.osgi.services;bundle-version="3.3.100",
  org.hamcrest.core;bundle-version="1.3.0",
  org.hamcrest.library;bundle-version="1.3.0",
- org.mockito;bundle-version="2.13.0"
+ org.mockito;bundle-version="2.13.0",
+ org.eclipse.jface;bundle-version="[3.18.0,4.0.0)"
 Import-Package: javax.annotation,
  javax.inject
 Eclipse-AutoStart: true