diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/BookmarksPart.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/BookmarksPart.java
index b85bcb4..a1a8cdc 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/BookmarksPart.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/BookmarksPart.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,7 +24,6 @@
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.LabelProvider;
@@ -124,7 +123,7 @@
 
 			@Override
 			public void run() {
-				Object obj = ((IStructuredSelection)treeViewer.getSelection()).getFirstElement();
+				Object obj = treeViewer.getStructuredSelection().getFirstElement();
 				if (obj instanceof BookmarkManager.Bookmark) {
 					BookmarkManager.Bookmark b = (BookmarkManager.Bookmark)obj;
 					BaseHelpSystem.getBookmarkManager().removeBookmark(b);
@@ -145,12 +144,12 @@
 	@Override
 	public boolean fillContextMenu(IMenuManager manager) {
 		boolean value = super.fillContextMenu(manager);
-		ISelection selection = treeViewer.getSelection();
+		IStructuredSelection selection = treeViewer.getStructuredSelection();
 		boolean canDeleteAll=false;
 		int count = BaseHelpSystem.getBookmarkManager().getBookmarks().length;
 		canDeleteAll = count>0;
 
-		if (canDelete((IStructuredSelection) selection)) {
+		if (canDelete(selection)) {
 			if (value)
 				manager.add(new Separator());
 			manager.add(deleteAction);
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/EngineTypeWizardPage.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/EngineTypeWizardPage.java
index e106422..1ef0c73 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/EngineTypeWizardPage.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/EngineTypeWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2016 IBM Corporation and others.
+ * Copyright (c) 2004, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,7 +12,6 @@
 
 import org.eclipse.help.ui.internal.Messages;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.TableViewer;
@@ -96,8 +95,7 @@
 		tableViewer.setLabelProvider(new EngineLabelProvider());
 		tableViewer.addSelectionChangedListener(event -> {
 			setPageComplete(!event.getSelection().isEmpty());
-			selection = (EngineTypeDescriptor) ((IStructuredSelection) event.getSelection())
-					.getFirstElement();
+			selection = (EngineTypeDescriptor) event.getStructuredSelection().getFirstElement();
 		});
 		tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
 		tableViewer.setInput(engineTypes);
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/HyperlinkTreePart.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/HyperlinkTreePart.java
index afa5a7b..94db6cf 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/HyperlinkTreePart.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/HyperlinkTreePart.java
@@ -137,8 +137,8 @@
 		treeViewer.setInput(this);
 		treeViewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
 		treeViewer.addOpenListener(event -> doOpenSelection((IStructuredSelection) event.getSelection()));
-		treeViewer.addSelectionChangedListener(
-				event -> handleSelectionChanged((IStructuredSelection) event.getSelection()));
+		treeViewer
+				.addSelectionChangedListener(event -> handleSelectionChanged(event.getStructuredSelection()));
 		treeViewer.getTree().addMouseListener(new MouseAdapter() {
 			long lastTime;
 
@@ -213,7 +213,7 @@
 				}
 				Object obj = item.getData();
 				treeViewer.getTree().setCursor(handCursor);
-				IStructuredSelection ssel = (IStructuredSelection) treeViewer.getSelection();
+				IStructuredSelection ssel = treeViewer.getStructuredSelection();
 				if (ssel.getFirstElement() == obj)
 					item.setForeground(e.display.getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT));
 				else
@@ -330,8 +330,7 @@
 
 	private void updateStatus(IHelpResource res, boolean defaultToSelection) {
 		if (defaultToSelection && res == null) {
-			IStructuredSelection ssel = (IStructuredSelection) treeViewer
-					.getSelection();
+			IStructuredSelection ssel = treeViewer.getStructuredSelection();
 			Object obj = ssel.getFirstElement();
 			if (obj instanceof IHelpResource)
 				res = (IHelpResource) obj;
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopePreferenceDialog.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopePreferenceDialog.java
index ed3b799..983b8b1 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopePreferenceDialog.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopePreferenceDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2016 IBM Corporation and others.
+ * Copyright (c) 2004, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -87,7 +87,7 @@
 	protected TreeViewer createTreeViewer(Composite parent) {
 		TreeViewer viewer = super.createTreeViewer(parent);
 		viewer.addSelectionChangedListener(event -> {
-			IStructuredSelection ssel = (IStructuredSelection) event.getSelection();
+			IStructuredSelection ssel = event.getStructuredSelection();
 			Object obj = ssel.getFirstElement();
 			treeSelectionChanged(obj);
 		});
@@ -138,7 +138,7 @@
 	}
 
 	private void doDelete() {
-		Object obj = ((IStructuredSelection)getTreeViewer().getSelection()).getFirstElement();
+		Object obj = getTreeViewer().getStructuredSelection().getFirstElement();
 		if (obj instanceof ScopePreferenceManager.EnginePreferenceNode) {
 			ScopePreferenceManager.EnginePreferenceNode node = (ScopePreferenceManager.EnginePreferenceNode)obj;
 			EngineDescriptor desc = node.getDescriptor();
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetDialog.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetDialog.java
index b800081..13be279 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetDialog.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -324,8 +324,7 @@
     		setResult(manager.getDefaultScope());
     	} else {
             // Build a list of selected children.
-            IStructuredSelection selection = (IStructuredSelection) viewer
-                    .getSelection();
+			IStructuredSelection selection = viewer.getStructuredSelection();
             setResult(selection.toList());
     	}
     	super.okPressed();
@@ -406,7 +405,7 @@
 
 
 	private void doEdit() {
-		IStructuredSelection ssel = (IStructuredSelection)viewer.getSelection();
+		IStructuredSelection ssel = viewer.getStructuredSelection();
 		ScopeSet set = (ScopeSet)ssel.getFirstElement();
 		if (set==null) {
 			return;
@@ -428,7 +427,7 @@
 	}
 
 	private void doRename() {
-		IStructuredSelection ssel = (IStructuredSelection)viewer.getSelection();
+		IStructuredSelection ssel = viewer.getStructuredSelection();
 		ScopeSet set = (ScopeSet)ssel.getFirstElement();
 		if (set!=null) {
 			RenameOperation rop = (RenameOperation)findOperation(set, RenameOperation.class);
@@ -462,7 +461,7 @@
 	}
 
 	private void doRemove() {
-		IStructuredSelection ssel = (IStructuredSelection)viewer.getSelection();
+		IStructuredSelection ssel = viewer.getStructuredSelection();
 		ScopeSet set = (ScopeSet)ssel.getFirstElement();
 		if (set!=null) {
 			scheduleOperation(new RemoveOperation(set));
@@ -484,7 +483,7 @@
 	}
 
 	private void updateButtons() {
-		IStructuredSelection ssel = (IStructuredSelection)viewer.getSelection();
+		IStructuredSelection ssel = viewer.getStructuredSelection();
 		editButton.setEnabled(ssel.isEmpty()==false);
 		ScopeSet set = (ScopeSet)ssel.getFirstElement();
 		boolean editableSet = set!=null && set.isEditable() && !set.isImplicit();
diff --git a/org.eclipse.ui.cheatsheets/src/org/eclipse/ui/internal/cheatsheets/composite/views/CompositeCheatSheetPage.java b/org.eclipse.ui.cheatsheets/src/org/eclipse/ui/internal/cheatsheets/composite/views/CompositeCheatSheetPage.java
index f8d8aea..3b2271d 100644
--- a/org.eclipse.ui.cheatsheets/src/org/eclipse/ui/internal/cheatsheets/composite/views/CompositeCheatSheetPage.java
+++ b/org.eclipse.ui.cheatsheets/src/org/eclipse/ui/internal/cheatsheets/composite/views/CompositeCheatSheetPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2017 IBM Corporation and others.
+ * Copyright (c) 2005, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -273,7 +273,7 @@
 
 	@Override
 	public void selectionChanged(SelectionChangedEvent event) {
-		updateForSelection(event.getSelection());
+		updateForSelection(event.getStructuredSelection());
 	}
 
 	private void updateForSelection(ISelection selection) {
diff --git a/org.eclipse.ui.cheatsheets/src/org/eclipse/ui/internal/cheatsheets/dialogs/CheatSheetCategoryBasedSelectionDialog.java b/org.eclipse.ui.cheatsheets/src/org/eclipse/ui/internal/cheatsheets/dialogs/CheatSheetCategoryBasedSelectionDialog.java
index 99efb55..2d31846 100644
--- a/org.eclipse.ui.cheatsheets/src/org/eclipse/ui/internal/cheatsheets/dialogs/CheatSheetCategoryBasedSelectionDialog.java
+++ b/org.eclipse.ui.cheatsheets/src/org/eclipse/ui/internal/cheatsheets/dialogs/CheatSheetCategoryBasedSelectionDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2002, 2017 IBM Corporation and others.
+ *  Copyright (c) 2002, 2018 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -25,7 +25,6 @@
 import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.dialogs.TrayDialog;
 import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.LabelProvider;
@@ -499,9 +498,8 @@
 	 * selectionEvent, or <code>null</code> if the selectionEvent contains
 	 * either 0 or 2+ selected objects.
 	 */
-	protected Object getSingleSelection(ISelection selection) {
-		IStructuredSelection ssel = (IStructuredSelection) selection;
-		return ssel.size() == 1 ? ssel.getFirstElement() : null;
+	protected Object getSingleSelection(IStructuredSelection selection) {
+		return selection.size() == 1 ? selection.getFirstElement() : null;
 	}
 
 	/**
@@ -513,7 +511,7 @@
 	 */
 	@Override
 	public void selectionChanged(SelectionChangedEvent selectionEvent) {
-		Object obj = getSingleSelection(selectionEvent.getSelection());
+		Object obj = getSingleSelection(selectionEvent.getStructuredSelection());
 		if (obj instanceof CheatSheetCollectionElement) {
 			currentSelection = null;
 		} else {
@@ -759,7 +757,7 @@
 	protected void storeSelectedCheatSheet() {
 		CheatSheetElement element = null;
 
-		Object el = getSingleSelection(treeViewer.getSelection());
+		Object el = getSingleSelection(treeViewer.getStructuredSelection());
 		if (el == null)
 			return;
 
diff --git a/org.eclipse.ui.intro.universal/src/org/eclipse/ui/internal/intro/universal/CustomizationContentsArea.java b/org.eclipse.ui.intro.universal/src/org/eclipse/ui/internal/intro/universal/CustomizationContentsArea.java
index 20dc4bb..177cb21 100644
--- a/org.eclipse.ui.intro.universal/src/org/eclipse/ui/internal/intro/universal/CustomizationContentsArea.java
+++ b/org.eclipse.ui.intro.universal/src/org/eclipse/ui/internal/intro/universal/CustomizationContentsArea.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2017 IBM Corporation and others.
+ * Copyright (c) 2006, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -226,7 +226,7 @@
 
 		@Override
 		public void dragStart(DragSourceEvent event) {
-			IStructuredSelection ssel = (IStructuredSelection) viewer.getSelection();
+			IStructuredSelection ssel = viewer.getStructuredSelection();
 			if (ssel.size() > 0) {
 				event.doit = true;
 			} else {
@@ -236,7 +236,7 @@
 
 		@Override
 		public void dragSetData(DragSourceEvent event) {
-			IStructuredSelection ssel = (IStructuredSelection) viewer.getSelection();
+			IStructuredSelection ssel = viewer.getStructuredSelection();
 			BaseData[] array = new BaseData[ssel.size()];
 			int i = 0;
 			for (Iterator<BaseData> iter = ssel.iterator(); iter.hasNext();) {
