diff --git a/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/ElementTreeView.java b/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/ElementTreeView.java
index a5a5492..1b74308 100644
--- a/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/ElementTreeView.java
+++ b/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/ElementTreeView.java
@@ -94,9 +94,7 @@
 		UpdateAction() {
 			super("Update view");
 			this.setToolTipText("Update");
-			this.setImageDescriptor(ImageDescriptor.createFromURLSupplier(true, () -> {
-				return ElementTreeView.class.getResource("/icons/refresh.gif");
-			}));
+			this.setImageDescriptor(ImageDescriptor.createFromURLSupplier(true, () -> ElementTreeView.class.getResource("/icons/refresh.gif")));
 		}
 
 		void addToStringCount(String name) {
diff --git a/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/LocalHistoryBrowserView.java b/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/LocalHistoryBrowserView.java
index e64da33..6e31cee 100644
--- a/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/LocalHistoryBrowserView.java
+++ b/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/LocalHistoryBrowserView.java
@@ -278,9 +278,7 @@
 		};
 		refreshAction.setText("Refresh View"); //$NON-NLS-1$
 		refreshAction.setToolTipText("Refresh View"); //$NON-NLS-1$
-		refreshAction.setImageDescriptor(ImageDescriptor.createFromURLSupplier(true, () -> {
-			return LocalHistoryBrowserView.class.getResource("/icons/refresh.gif");
-		})); //$NON-NLS-1$
+		refreshAction.setImageDescriptor(ImageDescriptor.createFromURLSupplier(true, () -> LocalHistoryBrowserView.class.getResource("/icons/refresh.gif"))); //$NON-NLS-1$
 
 		doubleClickAction = new Action() {
 			@Override
diff --git a/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/markers/MarkerView.java b/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/markers/MarkerView.java
index 805a4a4..c605821 100644
--- a/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/markers/MarkerView.java
+++ b/bundles/org.eclipse.core.tools.resources/src/org/eclipse/core/tools/resources/markers/MarkerView.java
@@ -401,15 +401,9 @@
 	 * The constructor.
 	 */
 	public MarkerView() {
-		zeroImageDesc = ImageDescriptor.createFromURLSupplier(true, () -> {
-			return MarkerView.class.getResource("/icons/zero.gif");
-		});
-		oneImageDesc = ImageDescriptor.createFromURLSupplier(true, () -> {
-			return MarkerView.class.getResource("/icons/one.gif");
-		});
-		infiniteImageDesc = ImageDescriptor.createFromURLSupplier(true, () -> {
-			return MarkerView.class.getResource("/icons/infinity.gif");
-		});
+		zeroImageDesc = ImageDescriptor.createFromURLSupplier(true, () -> MarkerView.class.getResource("/icons/zero.gif"));
+		oneImageDesc = ImageDescriptor.createFromURLSupplier(true, () -> MarkerView.class.getResource("/icons/one.gif"));
+		infiniteImageDesc = ImageDescriptor.createFromURLSupplier(true, () -> MarkerView.class.getResource("/icons/infinity.gif"));
 		model = new MarkerExtensionModel();
 		propertySource = new ReadOnlyMarkerPropertySource(this, model);
 	}
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceTest.java
index 2790943..fbdb938 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceTest.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceTest.java
@@ -637,13 +637,10 @@
 
 		try {
 			// pass DEPTH_ONE to avoid using proxy visitor
-			a.accept(new IResourceVisitor() {
-				@Override
-				public boolean visit(IResource resource) {
-					// we should not get that far if the resource does not exist
-					fail("1.0");
-					return true;
-				}
+			a.accept((IResourceVisitor) resource -> {
+				// we should not get that far if the resource does not exist
+				fail("1.0");
+				return true;
 			}, IResource.DEPTH_ONE, IResource.NONE);
 			fail("1.1");
 		} catch (CoreException e) {
@@ -651,13 +648,10 @@
 		}
 
 		try {
-			a.accept(new IResourceProxyVisitor() {
-				@Override
-				public boolean visit(IResourceProxy proxy) {
-					// we should not get that far if the resource does not exist
-					fail("2.0");
-					return true;
-				}
+			a.accept(proxy -> {
+				// we should not get that far if the resource does not exist
+				fail("2.0");
+				return true;
 			}, IResource.NONE);
 			fail("2.1");
 		} catch (CoreException e) {
@@ -666,23 +660,17 @@
 
 		// pass DEPTH_ONE to avoid using proxy visitor
 		// if we don't check for existence, then no exception should be thrown
-		a.accept(new IResourceVisitor() {
-			@Override
-			public boolean visit(IResource resource) {
-				// we should not get that far if the resource does not exist
-				fail("3.0");
-				return true;
-			}
+		a.accept((IResourceVisitor) resource -> {
+			// we should not get that far if the resource does not exist
+			fail("3.0");
+			return true;
 		}, IResource.DEPTH_ONE, IContainer.DO_NOT_CHECK_EXISTENCE);
 
 		// if we don't check for existence, then no exception should be thrown
-		a.accept(new IResourceProxyVisitor() {
-			@Override
-			public boolean visit(IResourceProxy proxy) {
-				// we should not get that far if the resource does not exist
-				fail("4.0");
-				return true;
-			}
+		a.accept(proxy -> {
+			// we should not get that far if the resource does not exist
+			fail("4.0");
+			return true;
 		}, IContainer.DO_NOT_CHECK_EXISTENCE);
 	}
 
@@ -700,13 +688,10 @@
 		final Set<IResource> toVisit = new HashSet<>();
 		final int toVisitCount[] = new int[] {0};
 
-		IResourceProxyVisitor visitor = new IResourceProxyVisitor() {
-			@Override
-			public boolean visit(IResourceProxy proxy) {
-				toVisit.remove(proxy.requestResource());
-				toVisitCount[0]--;
-				return true;
-			}
+		IResourceProxyVisitor visitor = proxy -> {
+			toVisit.remove(proxy.requestResource());
+			toVisitCount[0]--;
+			return true;
 		};
 
 		ensureExistsInWorkspace(new IResource[] {project, a, a1, a2, b, b1, b2, c, c1, c2}, true);
