Lambda conversion.

Change-Id: If06f86ef42538c72eed644c7d2c252a2c5a855db
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/LifecycleMappingPage.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/LifecycleMappingPage.java
index da6746f..82cae48 100644
--- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/LifecycleMappingPage.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/LifecycleMappingPage.java
@@ -30,12 +30,10 @@
 import org.slf4j.LoggerFactory;
 
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.layout.TreeColumnLayout;
-import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.ColumnWeightData;
@@ -577,17 +575,14 @@
     loading = true;
     treeViewer.refresh();
     try {
-      getContainer().run(true, true, new IRunnableWithProgress() {
-        @SuppressWarnings("synthetic-access")
-        public void run(IProgressMonitor monitor) throws InvocationTargetException {
-          mappingConfiguration.clearSelectedProposals();
-          try {
-            LifecycleMappingDiscoveryHelper.discoverProposals(mappingConfiguration, monitor);
-          } catch(CoreException ex) {
-            throw new InvocationTargetException(ex);
-          }
-          mappingConfiguration.autoCompleteMapping();
+      getContainer().run(true, true, monitor -> {
+        mappingConfiguration.clearSelectedProposals();
+        try {
+          LifecycleMappingDiscoveryHelper.discoverProposals(mappingConfiguration, monitor);
+        } catch(CoreException ex) {
+          throw new InvocationTargetException(ex);
         }
+        mappingConfiguration.autoCompleteMapping();
       });
     } catch(InvocationTargetException e) {
       setErrorMessage(e.getMessage());
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeManager.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeManager.java
index 6096dab..d14614f 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeManager.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeManager.java
@@ -42,9 +42,7 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 
 import org.eclipse.m2e.core.MavenPlugin;
-import org.eclipse.m2e.core.embedder.ICallable;
 import org.eclipse.m2e.core.embedder.IMaven;
-import org.eclipse.m2e.core.embedder.IMavenExecutionContext;
 import org.eclipse.m2e.core.internal.NoSuchComponentException;
 
 
@@ -180,21 +178,19 @@
     }
 
     try {
-      return maven.execute(new ICallable<List<?>>() {
-        public List<?> call(IMavenExecutionContext context, IProgressMonitor monitor) {
-          ArtifactRepository localRepository = context.getLocalRepository();
-          if(aaMgr.isFileSetArchetype(groupId, artifactId, version, null, localRepository, repositories)) {
-            ArchetypeDescriptor descriptor;
-            try {
-              descriptor = aaMgr.getFileSetArchetypeDescriptor(groupId, artifactId, version, null, localRepository,
-                  repositories);
-            } catch(UnknownArchetype ex) {
-              throw new WrappedUnknownArchetype(ex);
-            }
-            return descriptor.getRequiredProperties();
+      return maven.execute((context, monitor1) -> {
+        ArtifactRepository localRepository = context.getLocalRepository();
+        if(aaMgr.isFileSetArchetype(groupId, artifactId, version, null, localRepository, repositories)) {
+          ArchetypeDescriptor descriptor;
+          try {
+            descriptor = aaMgr.getFileSetArchetypeDescriptor(groupId, artifactId, version, null, localRepository,
+                repositories);
+          } catch(UnknownArchetype ex) {
+            throw new WrappedUnknownArchetype(ex);
           }
-          return null;
+          return descriptor.getRequiredProperties();
         }
+        return null;
       }, monitor);
     } catch(WrappedUnknownArchetype e) {
       throw (UnknownArchetype) e.getCause();
diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogViewer.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogViewer.java
index 3b6ebfe..d2a282e 100644
--- a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogViewer.java
+++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogViewer.java
@@ -32,7 +32,6 @@
 import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogViewer;
 import org.eclipse.jface.dialogs.IMessageProvider;
 import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.window.IShellProvider;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.ui.statushandlers.StatusManager;
@@ -152,24 +151,21 @@
     boolean wasError = false;
     final IStatus[] result = new IStatus[1];
     try {
-      context.run(true, true, new IRunnableWithProgress() {
-        @SuppressWarnings("synthetic-access")
-        public void run(IProgressMonitor monitor) throws InterruptedException {
-          SubMonitor submon = SubMonitor.convert(monitor, 100);
-          try {
-            if(installedFeatures == null) {
-              installedFeatures = getInstalledFeatures(submon.newChild(10));
-            }
-            result[0] = getCatalog().performDiscovery(submon.newChild(80));
-            if(monitor.isCanceled()) {
-              throw new InterruptedException();
-            }
-            if(!getCatalog().getItems().isEmpty()) {
-              postDiscovery(submon.newChild(10));
-            }
-          } finally {
-            submon.done();
+      context.run(true, true, monitor -> {
+        SubMonitor submon = SubMonitor.convert(monitor, 100);
+        try {
+          if(installedFeatures == null) {
+            installedFeatures = getInstalledFeatures(submon.newChild(10));
           }
+          result[0] = getCatalog().performDiscovery(submon.newChild(80));
+          if(monitor.isCanceled()) {
+            throw new InterruptedException();
+          }
+          if(!getCatalog().getItems().isEmpty()) {
+            postDiscovery(submon.newChild(10));
+          }
+        } finally {
+          submon.done();
         }
       });
     } catch(InvocationTargetException e) {
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/InsertArtifactProposal.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/InsertArtifactProposal.java
index d3aa34d..dc67bab 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/InsertArtifactProposal.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/InsertArtifactProposal.java
@@ -43,7 +43,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
@@ -131,21 +130,19 @@
         if(config.getType() == SearchType.PARENT) {
           try {
             final int fOffset = offset;
-            performOnDOMDocument(new OperationTuple(document, new Operation() {
-              public void process(Document doc) {
-                Element parent = insertAt(doc.createElement(PARENT), fOffset);
-                setText(getChild(parent, GROUP_ID), af.group);
-                setText(getChild(parent, ARTIFACT_ID), af.artifact);
-                setText(getChild(parent, VERSION), af.version);
-                String relativePath = PomContentAssistProcessor.findRelativePath(sourceViewer, af.group, af.artifact,
-                    af.version);
-                if(relativePath != null) {
-                  setText(getChild(parent, RELATIVE_PATH), relativePath);
-                }
-                format(parent);
-                generatedOffset = ((IndexedRegion) parent).getStartOffset();
-                generatedLength = ((IndexedRegion) parent).getEndOffset() - generatedOffset;
+            performOnDOMDocument(new OperationTuple(document, (Operation) doc -> {
+              Element parent = insertAt(doc.createElement(PARENT), fOffset);
+              setText(getChild(parent, GROUP_ID), af.group);
+              setText(getChild(parent, ARTIFACT_ID), af.artifact);
+              setText(getChild(parent, VERSION), af.version);
+              String relativePath = PomContentAssistProcessor.findRelativePath(sourceViewer, af.group, af.artifact,
+                  af.version);
+              if(relativePath != null) {
+                setText(getChild(parent, RELATIVE_PATH), relativePath);
               }
+              format(parent);
+              generatedOffset = ((IndexedRegion) parent).getStartOffset();
+              generatedLength = ((IndexedRegion) parent).getEndOffset() - generatedOffset;
             }));
           } catch(IOException e) {
             log.error("Failed inserting parent element", e); //$NON-NLS-1$
@@ -159,46 +156,44 @@
         if(config.getType() == SearchType.PLUGIN) {
           try {
             final int fOffset = offset;
-            performOnDOMDocument(new OperationTuple(document, new Operation() {
-              public void process(Document doc) {
-                Element currentNode = elementAtOffset(doc, fOffset);
-                if(currentNode == null) {
-                  return;
-                }
-                String currentName = currentNode.getNodeName();
-                Element plugin = null;
-                Element toFormat = null;
-                if("project".equals(currentName)) { //$NON-NLS-1$
-                  Element build = findChild(currentNode, BUILD);
-                  if(build == null) {
-                    build = insertAt(doc.createElement(BUILD), fOffset);
-                    toFormat = build;
-                  }
-                  plugin = createElement(getChild(build, PLUGINS), PLUGIN);
-                }
-                if(BUILD.equals(currentName) || PLUGIN_MANAGEMENT.equals(currentName)) { //$NON-NLS-1$ //$NON-NLS-2$
-                  Element plugins = findChild(currentNode, PLUGINS);
-                  if(plugins == null) {
-                    plugins = insertAt(doc.createElement(PLUGINS), fOffset);
-                    toFormat = plugins;
-                  }
-                  plugin = createElement(plugins, PLUGIN);
-                }
-                if(PLUGINS.equals(currentName)) {
-                  plugin = insertAt(doc.createElement(PLUGIN), fOffset);
-                }
-                if(toFormat == null) {
-                  toFormat = plugin;
-                }
-                setText(getChild(plugin, GROUP_ID), af.group);
-                setText(getChild(plugin, ARTIFACT_ID), af.artifact);
-                if(af.version != null) {
-                  setText(getChild(plugin, VERSION), af.version);
-                }
-                format(toFormat);
-                generatedOffset = ((IndexedRegion) toFormat).getStartOffset();
-                generatedLength = ((IndexedRegion) toFormat).getEndOffset() - generatedOffset;
+            performOnDOMDocument(new OperationTuple(document, (Operation) doc -> {
+              Element currentNode = elementAtOffset(doc, fOffset);
+              if(currentNode == null) {
+                return;
               }
+              String currentName = currentNode.getNodeName();
+              Element plugin = null;
+              Element toFormat = null;
+              if("project".equals(currentName)) { //$NON-NLS-1$
+                Element build = findChild(currentNode, BUILD);
+                if(build == null) {
+                  build = insertAt(doc.createElement(BUILD), fOffset);
+                  toFormat = build;
+                }
+                plugin = createElement(getChild(build, PLUGINS), PLUGIN);
+              }
+              if(BUILD.equals(currentName) || PLUGIN_MANAGEMENT.equals(currentName)) { //$NON-NLS-1$ //$NON-NLS-2$
+                Element plugins = findChild(currentNode, PLUGINS);
+                if(plugins == null) {
+                  plugins = insertAt(doc.createElement(PLUGINS), fOffset);
+                  toFormat = plugins;
+                }
+                plugin = createElement(plugins, PLUGIN);
+              }
+              if(PLUGINS.equals(currentName)) {
+                plugin = insertAt(doc.createElement(PLUGIN), fOffset);
+              }
+              if(toFormat == null) {
+                toFormat = plugin;
+              }
+              setText(getChild(plugin, GROUP_ID), af.group);
+              setText(getChild(plugin, ARTIFACT_ID), af.artifact);
+              if(af.version != null) {
+                setText(getChild(plugin, VERSION), af.version);
+              }
+              format(toFormat);
+              generatedOffset = ((IndexedRegion) toFormat).getStartOffset();
+              generatedLength = ((IndexedRegion) toFormat).getEndOffset() - generatedOffset;
             }));
           } catch(IOException e) {
             log.error("Failed inserting plugin element", e); //$NON-NLS-1$
@@ -211,48 +206,46 @@
         if(config.getType() == SearchType.DEPENDENCY) {
           try {
             final int fOffset = offset;
-            performOnDOMDocument(new OperationTuple(document, new Operation() {
-              public void process(Document doc) {
-                Element currentNode = elementAtOffset(doc, fOffset);
-                if(currentNode == null) {
-                  return;
-                }
-                String currentName = currentNode.getNodeName();
-                Element dependency = null;
-                Element toFormat = null;
-                if("project".equals(currentName) || DEPENDENCY_MANAGEMENT.equals(currentName) || PROFILE.equals(currentName)) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-                  Element deps = findChild(currentNode, DEPENDENCIES);
-                  if(deps == null) {
-                    deps = insertAt(doc.createElement(DEPENDENCIES), fOffset);
-                    toFormat = deps;
-                  }
-                  dependency = doc.createElement(DEPENDENCY);
-                  deps.appendChild(dependency);
-                }
-                if(DEPENDENCIES.equals(currentName)) {
-                  dependency = insertAt(doc.createElement(DEPENDENCY), fOffset);
-                }
-                if(toFormat == null) {
-                  toFormat = dependency;
-                }
-                setText(getChild(dependency, GROUP_ID), af.group);
-                setText(getChild(dependency, ARTIFACT_ID), af.artifact);
-                if(af.version != null) {
-                  setText(getChild(dependency, VERSION), af.version);
-                }
-                if(fDialog.getSelectedScope() != null && !"compile".equals(fDialog.getSelectedScope())) {
-                  setText(getChild(dependency, SCOPE), fDialog.getSelectedScope());
-                }
-                if(af.type != null && !"jar".equals(af.type) && !"null".equals(af.type)) { // guard against MNGECLIPSE-622 //$NON-NLS-1$)
-                  setText(getChild(dependency, TYPE), af.type);
-                }
-                if(af.classifier != null) {
-                  setText(getChild(dependency, CLASSIFIER), af.classifier);
-                }
-                format(toFormat);
-                generatedOffset = ((IndexedRegion) toFormat).getStartOffset();
-                generatedLength = ((IndexedRegion) toFormat).getEndOffset() - generatedOffset;
+            performOnDOMDocument(new OperationTuple(document, (Operation) doc -> {
+              Element currentNode = elementAtOffset(doc, fOffset);
+              if(currentNode == null) {
+                return;
               }
+              String currentName = currentNode.getNodeName();
+              Element dependency = null;
+              Element toFormat = null;
+              if("project".equals(currentName) || DEPENDENCY_MANAGEMENT.equals(currentName) || PROFILE.equals(currentName)) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+                Element deps = findChild(currentNode, DEPENDENCIES);
+                if(deps == null) {
+                  deps = insertAt(doc.createElement(DEPENDENCIES), fOffset);
+                  toFormat = deps;
+                }
+                dependency = doc.createElement(DEPENDENCY);
+                deps.appendChild(dependency);
+              }
+              if(DEPENDENCIES.equals(currentName)) {
+                dependency = insertAt(doc.createElement(DEPENDENCY), fOffset);
+              }
+              if(toFormat == null) {
+                toFormat = dependency;
+              }
+              setText(getChild(dependency, GROUP_ID), af.group);
+              setText(getChild(dependency, ARTIFACT_ID), af.artifact);
+              if(af.version != null) {
+                setText(getChild(dependency, VERSION), af.version);
+              }
+              if(fDialog.getSelectedScope() != null && !"compile".equals(fDialog.getSelectedScope())) {
+                setText(getChild(dependency, SCOPE), fDialog.getSelectedScope());
+              }
+              if(af.type != null && !"jar".equals(af.type) && !"null".equals(af.type)) { // guard against MNGECLIPSE-622 //$NON-NLS-1$)
+                setText(getChild(dependency, TYPE), af.type);
+              }
+              if(af.classifier != null) {
+                setText(getChild(dependency, CLASSIFIER), af.classifier);
+              }
+              format(toFormat);
+              generatedOffset = ((IndexedRegion) toFormat).getStartOffset();
+              generatedLength = ((IndexedRegion) toFormat).getEndOffset() - generatedOffset;
             }));
           } catch(IOException e) {
             log.error("Failed inserting dependency element", e); //$NON-NLS-1$
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomHyperlinkDetector.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomHyperlinkDetector.java
index 7c77544..95633fd 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomHyperlinkDetector.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomHyperlinkDetector.java
@@ -91,7 +91,6 @@
 import org.eclipse.m2e.core.ui.internal.actions.OpenPomAction;
 import org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.MavenPathStorageEditorInput;
 import org.eclipse.m2e.editor.xml.internal.Messages;
-import org.eclipse.m2e.editor.xml.internal.NodeOperation;
 import org.eclipse.m2e.editor.xml.internal.XmlUtils;
 
 
@@ -128,33 +127,31 @@
     final List<IHyperlink> hyperlinks = new ArrayList<IHyperlink>();
     final int offset = region.getOffset();
 
-    XmlUtils.performOnCurrentElement(document, offset, new NodeOperation<Node>() {
-      public void process(Node node, IStructuredDocument structured) {
-        if(textViewer instanceof ISourceViewer) {
-          IHyperlink[] links = openExternalMarkerDefinition((ISourceViewer) textViewer, offset);
-          if(links.length > 0) {
-            hyperlinks.addAll(Arrays.asList(links));
-          }
+    XmlUtils.performOnCurrentElement(document, offset, (node, structured) -> {
+      if(textViewer instanceof ISourceViewer) {
+        IHyperlink[] links = openExternalMarkerDefinition((ISourceViewer) textViewer, offset);
+        if(links.length > 0) {
+          hyperlinks.addAll(Arrays.asList(links));
         }
-        //check if we have a property expression at cursor
-        IHyperlink link = openPropertyDefinition(node, textViewer, offset);
-        if(link != null) {
-          hyperlinks.add(link);
-        }
-        //now check if the dependency/plugin has a version element or not, if not, try searching for it in DM/PM of effective pom
-        link = openDPManagement(node, textViewer, offset);
-        if(link != null) {
-          hyperlinks.add(link);
-        }
-        //check if <module> text is selected.
-        link = openModule(node, textViewer, offset);
-        if(link != null) {
-          hyperlinks.add(link);
-        }
-        link = openPOMbyID(node, textViewer, offset);
-        if(link != null) {
-          hyperlinks.add(link);
-        }
+      }
+      //check if we have a property expression at cursor
+      IHyperlink link = openPropertyDefinition(node, textViewer, offset);
+      if(link != null) {
+        hyperlinks.add(link);
+      }
+      //now check if the dependency/plugin has a version element or not, if not, try searching for it in DM/PM of effective pom
+      link = openDPManagement(node, textViewer, offset);
+      if(link != null) {
+        hyperlinks.add(link);
+      }
+      //check if <module> text is selected.
+      link = openModule(node, textViewer, offset);
+      if(link != null) {
+        hyperlinks.add(link);
+      }
+      link = openPOMbyID(node, textViewer, offset);
+      if(link != null) {
+        hyperlinks.add(link);
       }
     });
 
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTextHover.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTextHover.java
index a420cfb..dce3eec 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTextHover.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTextHover.java
@@ -17,10 +17,7 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.w3c.dom.Node;
-
 import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IInformationControl;
 import org.eclipse.jface.text.IInformationControlCreator;
 import org.eclipse.jface.text.IRegion;
 import org.eclipse.jface.text.ITextHover;
@@ -33,9 +30,7 @@
 import org.eclipse.jface.text.source.ISourceViewer;
 import org.eclipse.jface.viewers.StyledString;
 import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.texteditor.MarkerAnnotation;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 
 import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.InputSource;
@@ -47,7 +42,6 @@
 import org.eclipse.m2e.editor.xml.PomHyperlinkDetector.ManagedArtifactRegion;
 import org.eclipse.m2e.editor.xml.internal.MarkerHoverControl;
 import org.eclipse.m2e.editor.xml.internal.Messages;
-import org.eclipse.m2e.editor.xml.internal.NodeOperation;
 import org.eclipse.m2e.editor.xml.internal.XmlUtils;
 
 
@@ -146,18 +140,16 @@
       return null;
     }
     final IRegion[] regs = new IRegion[2];
-    XmlUtils.performOnCurrentElement(document, offset, new NodeOperation<Node>() {
-      public void process(Node node, IStructuredDocument structured) {
-        ExpressionRegion region = PomHyperlinkDetector.findExpressionRegion(node, textViewer, offset);
-        if(region != null) {
-          regs[0] = region;
-          return;
-        }
-        ManagedArtifactRegion manReg = PomHyperlinkDetector.findManagedArtifactRegion(node, textViewer, offset);
-        if(manReg != null) {
-          regs[1] = manReg;
-          return;
-        }
+    XmlUtils.performOnCurrentElement(document, offset, (node, structured) -> {
+      ExpressionRegion region = PomHyperlinkDetector.findExpressionRegion(node, textViewer, offset);
+      if(region != null) {
+        regs[0] = region;
+        return;
+      }
+      ManagedArtifactRegion manReg = PomHyperlinkDetector.findManagedArtifactRegion(node, textViewer, offset);
+      if(manReg != null) {
+        regs[1] = manReg;
+        return;
       }
     });
     CompoundRegion toRet = new CompoundRegion(textViewer, offset);
@@ -193,11 +185,7 @@
   }
 
   public IInformationControlCreator getHoverControlCreator() {
-    return new IInformationControlCreator() {
-      public IInformationControl createInformationControl(Shell parent) {
-        return new MarkerHoverControl(parent);
-      }
-    };
+    return parent -> new MarkerHoverControl(parent);
   }
 
   public static class CompoundRegion implements IRegion {
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/AbstractPomProblemResolution.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/AbstractPomProblemResolution.java
index 9b0871a..7856ef8 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/AbstractPomProblemResolution.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/AbstractPomProblemResolution.java
@@ -63,21 +63,13 @@
 

   @Override

   protected final void fix(IDocument document, List<IMarker> markers, IProgressMonitor monitor) {

-    XmlUtils.performOnRootElement(document, new NodeOperation<Element>() {

-      public void process(Element node, IStructuredDocument structured) {

-        processFix(structured, node, markers);

-      }

-    });

+    XmlUtils.performOnRootElement(document, (NodeOperation<Element>) (node, structured) -> processFix(structured, node, markers));

   }

 

   @Override

   protected final void fix(IResource resource, List<IMarker> markers, IProgressMonitor monitor) {

     try {

-      XmlUtils.performOnRootElement((IFile) resource, new NodeOperation<Element>() {

-        public void process(Element node, IStructuredDocument structured) {

-          processFix(structured, node, markers);

-        }

-      }, true);

+      XmlUtils.performOnRootElement((IFile) resource, (node, structured) -> processFix(structured, node, markers), true);

     } catch(IOException e) {

       LOG.error("Error processing marker", e);

     } catch(CoreException e) {

diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/IdPartRemovalResolution.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/IdPartRemovalResolution.java
index 5f9f291..6041a59 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/IdPartRemovalResolution.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/IdPartRemovalResolution.java
@@ -71,13 +71,11 @@
       final IDocument doc = getQuickAssistContext().getSourceViewer().getDocument();

       //oh, how do I miss scala here..

       final String[] toRet = new String[1];

-      XmlUtils.performOnRootElement(doc, new NodeOperation<Element>() {

-        public void process(Element root, IStructuredDocument structured) {

-          //now check parent version and groupid against the current project's ones..

-          if(PROJECT_NODE.equals(root.getNodeName())) {

-            Element value = XmlUtils.findChild(root, isVersion ? VERSION_NODE : GROUP_ID_NODE);

-            toRet[0] = previewForRemovedElement(doc, value);

-          }

+      XmlUtils.performOnRootElement(doc, (NodeOperation<Element>) (root, structured) -> {

+        //now check parent version and groupid against the current project's ones..

+        if(PROJECT_NODE.equals(root.getNodeName())) {

+          Element value = XmlUtils.findChild(root, isVersion ? VERSION_NODE : GROUP_ID_NODE);

+          toRet[0] = previewForRemovedElement(doc, value);

         }

       });

       if(toRet[0] != null) {

diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/ManagedVersionRemovalResolution.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/ManagedVersionRemovalResolution.java
index 8612805..b1a8ebe 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/ManagedVersionRemovalResolution.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/markers/ManagedVersionRemovalResolution.java
@@ -70,13 +70,11 @@
     if(getQuickAssistContext() != null) {

       final IDocument doc = getQuickAssistContext().getSourceViewer().getDocument();

       final String[] toRet = new String[1];

-      XmlUtils.performOnRootElement(doc, new NodeOperation<Element>() {

-        public void process(Element node, IStructuredDocument structured) {

-          Element artifact = findArtifactElement(node, getMarker());

-          if(artifact != null) {

-            Element value = XmlUtils.findChild(artifact, VERSION_NODE);

-            toRet[0] = previewForRemovedElement(doc, value);

-          }

+      XmlUtils.performOnRootElement(doc, (NodeOperation<Element>) (node, structured) -> {

+        Element artifact = findArtifactElement(node, getMarker());

+        if(artifact != null) {

+          Element value = XmlUtils.findChild(artifact, VERSION_NODE);

+          toRet[0] = previewForRemovedElement(doc, value);

         }

       });

       if(toRet[0] != null) {

diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java
index 4aabe1c..d882ef5 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java
@@ -22,7 +22,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 
 import org.slf4j.Logger;
@@ -42,7 +41,6 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.ui.PlatformUI;
 
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -119,28 +117,21 @@
     try {
       String key = pluginKey.toPortableString() + "/" + className;
 
-      return cache.get(key, new Callable<MojoParameter>() {
-        public MojoParameter call() throws Exception {
+      return cache.get(key, () -> execute(pluginKey, (context, monitor) -> {
+        PluginDescriptor pd = getPluginDescriptor(pluginKey, context, monitor);
 
-          return execute(pluginKey, new ICallable<MojoParameter>() {
-            public MojoParameter call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException {
-              PluginDescriptor pd = getPluginDescriptor(pluginKey, context, monitor);
-
-              List<MojoParameter> parameters = null;
-              if(pd != null) {
-                Class<?> clazz;
-                try {
-                  clazz = pd.getClassRealm().loadClass(className);
-                } catch(ClassNotFoundException ex) {
-                  return null;
-                }
-                parameters = new PlexusConfigHelper().loadParameters(pd.getClassRealm(), clazz, monitor);
-              }
-              return new MojoParameter("", className, parameters); //$NON-NLS-1$
-            }
-          });
+        List<MojoParameter> parameters = null;
+        if(pd != null) {
+          Class<?> clazz;
+          try {
+            clazz = pd.getClassRealm().loadClass(className);
+          } catch(ClassNotFoundException ex) {
+            return null;
+          }
+          parameters = new PlexusConfigHelper().loadParameters(pd.getClassRealm(), clazz, monitor);
         }
-      });
+        return new MojoParameter("", className, parameters); //$NON-NLS-1$
+      }));
 
     } catch(ExecutionException e) {
       Throwable t = e.getCause();
@@ -183,22 +174,15 @@
     String key = pluginKey.toPortableString() + "/mojo/" + (mojo == null ? "*" : mojo); //$NON-NLS-1$ //$NON-NLS-2$
 
     try {
-      return cache.get(key, new Callable<MojoParameter>() {
-        public MojoParameter call() throws Exception {
+      return cache.get(key, () -> execute(pluginKey, (context, monitor) -> {
+        PluginDescriptor pd = getPluginDescriptor(pluginKey, context, monitor);
 
-          return execute(pluginKey, new ICallable<MojoParameter>() {
-            public MojoParameter call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException {
-              PluginDescriptor pd = getPluginDescriptor(pluginKey, context, monitor);
-
-              List<MojoParameter> parameters = null;
-              if(pd != null) {
-                parameters = loadMojoParameters(pd, mojo, monitor);
-              }
-              return new MojoParameter("", mojo, parameters); //$NON-NLS-1$
-            }
-          });
+        List<MojoParameter> parameters = null;
+        if(pd != null) {
+          parameters = loadMojoParameters(pd, mojo, monitor);
         }
-      });
+        return new MojoParameter("", mojo, parameters); //$NON-NLS-1$
+      }));
 
     } catch(ExecutionException e) {
       Throwable t = e.getCause();
@@ -242,34 +226,30 @@
     final CoreException[] innerException = new CoreException[1];
 
     try {
-      PlatformUI.getWorkbench().getActiveWorkbenchWindow().run(true, true, new IRunnableWithProgress() {
-        public void run(IProgressMonitor monitor) {
-          monitor.beginTask(org.eclipse.m2e.editor.xml.internal.Messages.PomTemplateContext_resolvingPlugin, 100);
-          try {
+      PlatformUI.getWorkbench().getActiveWorkbenchWindow().run(true, true, monitor -> {
+        monitor.beginTask(org.eclipse.m2e.editor.xml.internal.Messages.PomTemplateContext_resolvingPlugin, 100);
+        try {
 
-            MavenExecutionContext context = maven.createExecutionContext();
-            context.getExecutionRequest().setCacheTransferError(false);
-            T res = context.execute(new ICallable<T>() {
-              public T call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException {
-                MavenProject mp = getProject(context);
-                if(mp != null) {
-                  return context.execute(mp, callable, monitor);
-                }
-                return null;
-              }
-            }, monitor);
+          MavenExecutionContext context = maven.createExecutionContext();
+          context.getExecutionRequest().setCacheTransferError(false);
+          T res = context.execute((context1, monitor1) -> {
+            MavenProject mp = getProject(context1);
+            if(mp != null) {
+              return context1.execute(mp, callable, monitor1);
+            }
+            return null;
+          }, monitor);
 
-            if(monitor.isCanceled())
-              return;
-            result[0] = res;
+          if(monitor.isCanceled())
+            return;
+          result[0] = res;
 
-          } catch(CoreException ex) {
-            if(monitor.isCanceled())
-              return;
-            innerException[0] = ex;
-          }
-
+        } catch(CoreException ex) {
+          if(monitor.isCanceled())
+            return;
+          innerException[0] = ex;
         }
+
       });
     } catch(InvocationTargetException | InterruptedException ex) {
       throw new CoreException(new Status(IStatus.ERROR, MvnIndexPlugin.PLUGIN_ID, ex.getMessage(), ex));
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java
index 736379e..b066e30 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java
@@ -32,7 +32,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 import org.eclipse.core.resources.IFile;
@@ -282,17 +281,15 @@
   }
 
   public static Operation createRemoveVersionOperation(final List<Dependency> modelDeps) {
-    return new Operation() {
-      public void process(Document document) {
-        List<Element> deps = findChilds(findChild(document.getDocumentElement(), DEPENDENCIES), DEPENDENCY);
-        for(Element dep : deps) {
-          String grid = getTextValue(findChild(dep, GROUP_ID));
-          String artid = getTextValue(findChild(dep, ARTIFACT_ID));
-          for(Dependency modelDep : modelDeps) {
-            if(modelDep.getGroupId() != null && modelDep.getGroupId().equals(grid) && modelDep.getArtifactId() != null
-                && modelDep.getArtifactId().equals(artid)) {
-              removeChild(dep, findChild(dep, VERSION));
-            }
+    return document -> {
+      List<Element> deps = findChilds(findChild(document.getDocumentElement(), DEPENDENCIES), DEPENDENCY);
+      for(Element dep : deps) {
+        String grid = getTextValue(findChild(dep, GROUP_ID));
+        String artid = getTextValue(findChild(dep, ARTIFACT_ID));
+        for(Dependency modelDep : modelDeps) {
+          if(modelDep.getGroupId() != null && modelDep.getGroupId().equals(grid) && modelDep.getArtifactId() != null
+              && modelDep.getArtifactId().equals(artid)) {
+            removeChild(dep, findChild(dep, VERSION));
           }
         }
       }
@@ -301,32 +298,30 @@
   }
 
   public static Operation createManageOperation(final List<Dependency> modelDeps) {
-    return new Operation() {
-      public void process(Document document) {
-        List<Dependency> modelDependencies = new ArrayList<Dependency>(modelDeps);
-        Element managedDepsElement = getChild(document.getDocumentElement(), DEPENDENCY_MANAGEMENT, DEPENDENCIES);
-        List<Element> existing = findChilds(managedDepsElement, DEPENDENCY);
-        for(Element dep : existing) {
-          String artifactId = getTextValue(findChild(dep, ARTIFACT_ID));
-          String groupId = getTextValue(findChild(dep, GROUP_ID));
-          //cloned list, shall not modify shared resource (used by the remove operation)
-          Iterator<Dependency> mdIter = modelDependencies.iterator();
-          while(mdIter.hasNext()) {
-            //TODO: here we iterate to find existing managed dependencies and decide not to overwrite them.
-            // but this could eventually break the current project when the versions are diametrally different
-            // we should have shown this information to the user in the UI in the first place (for him to decide what to do)
-            Dependency md = mdIter.next();
-            if(artifactId.equals(md.getArtifactId()) && groupId.equals(md.getGroupId())) {
-              mdIter.remove();
-              break;
-            }
+    return document -> {
+      List<Dependency> modelDependencies = new ArrayList<Dependency>(modelDeps);
+      Element managedDepsElement = getChild(document.getDocumentElement(), DEPENDENCY_MANAGEMENT, DEPENDENCIES);
+      List<Element> existing = findChilds(managedDepsElement, DEPENDENCY);
+      for(Element dep : existing) {
+        String artifactId = getTextValue(findChild(dep, ARTIFACT_ID));
+        String groupId = getTextValue(findChild(dep, GROUP_ID));
+        //cloned list, shall not modify shared resource (used by the remove operation)
+        Iterator<Dependency> mdIter = modelDependencies.iterator();
+        while(mdIter.hasNext()) {
+          //TODO: here we iterate to find existing managed dependencies and decide not to overwrite them.
+          // but this could eventually break the current project when the versions are diametrally different
+          // we should have shown this information to the user in the UI in the first place (for him to decide what to do)
+          Dependency md = mdIter.next();
+          if(artifactId.equals(md.getArtifactId()) && groupId.equals(md.getGroupId())) {
+            mdIter.remove();
+            break;
           }
         }
-        //TODO is the version is defined by property expression, we should make sure the property is defined in the current project
-        for(Dependency modelDependency : modelDependencies) {
-          PomHelper.createDependency(managedDepsElement, modelDependency.getGroupId(), modelDependency.getArtifactId(),
-              modelDependency.getVersion());
-        }
+      }
+      //TODO is the version is defined by property expression, we should make sure the property is defined in the current project
+      for(Dependency modelDependency : modelDependencies) {
+        PomHelper.createDependency(managedDepsElement, modelDependency.getGroupId(), modelDependency.getArtifactId(),
+            modelDependency.getVersion());
       }
     };
 
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/FormUtils.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/FormUtils.java
index 543bc33..a768f29 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/FormUtils.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/FormUtils.java
@@ -247,13 +247,10 @@
   private static FormHoverProvider.Execute createDefaultPerformer(final ScrolledForm form, final String message,
       final String ttip, final int severity) {
     if(ttip != null && ttip.length() > 0 && message != null) {
-      return new FormHoverProvider.Execute() {
-
-        public void run(Point point) {
-          int dialogSev = IMessageProvider.ERROR == severity ? MessageDialog.ERROR : MessageDialog.WARNING;
-          MavenMessageDialog.openWithSeverity(form.getShell(), Messages.FormUtils_error_info,
-              Messages.FormUtils_pom_error, ttip, dialogSev);
-        }
+      return point -> {
+        int dialogSev = IMessageProvider.ERROR == severity ? MessageDialog.ERROR : MessageDialog.WARNING;
+        MavenMessageDialog.openWithSeverity(form.getShell(), Messages.FormUtils_error_info,
+            Messages.FormUtils_pom_error, ttip, dialogSev);
       };
     }
     return null;
diff --git a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/AbstractPomRefactoring.java b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/AbstractPomRefactoring.java
index 6ba286b..6d0c5f0 100644
--- a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/AbstractPomRefactoring.java
+++ b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/AbstractPomRefactoring.java
@@ -52,8 +52,6 @@
 import org.apache.maven.project.MavenProject;
 
 import org.eclipse.m2e.core.MavenPlugin;
-import org.eclipse.m2e.core.embedder.ICallable;
-import org.eclipse.m2e.core.embedder.IMavenExecutionContext;
 import org.eclipse.m2e.core.project.IMavenProjectFacade;
 import org.eclipse.m2e.core.project.IMavenProjectRegistry;
 import org.eclipse.m2e.model.edit.pom.Model;
@@ -282,12 +280,7 @@
   protected MavenProject getParentProject(IMavenProjectFacade project, final MavenProject current,
       final IProgressMonitor monitor) throws CoreException {
     IMavenProjectRegistry projectManager = MavenPlugin.getMavenProjectRegistry();
-    return projectManager.execute(project, new ICallable<MavenProject>() {
-      @Override
-      public MavenProject call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException {
-        return MavenPlugin.getMaven().resolveParentProject(current, monitor);
-      }
-    }, monitor);
+    return projectManager.execute(project, (context, monitor1) -> MavenPlugin.getMaven().resolveParentProject(current, monitor1), monitor);
   }
 
   // title for a composite change
diff --git a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/rename/RenameRefactoring.java b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/rename/RenameRefactoring.java
index 12ca79e..a639a94 100644
--- a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/rename/RenameRefactoring.java
+++ b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/rename/RenameRefactoring.java
@@ -278,15 +278,11 @@
 
   @Override
   public PomVisitor getVisitor() {
-    return new PomVisitor() {
-
-      @Override
-      public CompoundCommand applyChanges(RefactoringModelResources current, IProgressMonitor pm) throws Exception {
-        //process <project> element only for the refactored file itself
-        boolean processRoot = current.getPomFile().equals(file);
-        return RenameRefactoring.this.applyModel(current, page.getNewGroupId(), page.getNewArtifactId(),
-            page.getNewVersion(), processRoot);
-      }
+    return (current, pm) -> {
+      //process <project> element only for the refactored file itself
+      boolean processRoot = current.getPomFile().equals(file);
+      return RenameRefactoring.this.applyModel(current, page.getNewGroupId(), page.getNewArtifactId(),
+          page.getNewVersion(), processRoot);
     };
   }
 
diff --git a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/AbstractMavenProjectTestCase.java b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/AbstractMavenProjectTestCase.java
index ce8a486..0e811e6 100644
--- a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/AbstractMavenProjectTestCase.java
+++ b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/AbstractMavenProjectTestCase.java
@@ -257,25 +257,23 @@
   protected IProject createProject(String projectName, final String pomResource) throws CoreException {
     final IProject project = workspace.getRoot().getProject(projectName);
 
-    workspace.run(new IWorkspaceRunnable() {
-      public void run(IProgressMonitor monitor) throws CoreException {
-        project.create(monitor);
+    workspace.run((IWorkspaceRunnable) monitor -> {
+      project.create(monitor);
 
-        if(!project.isOpen()) {
-          project.open(monitor);
-        }
+      if(!project.isOpen()) {
+        project.open(monitor);
+      }
 
-        IFile pomFile = project.getFile("pom.xml");
-        if(!pomFile.exists()) {
-          InputStream is = null;
-          try {
-            is = new FileInputStream(pomResource);
-            pomFile.create(is, true, monitor);
-          } catch(FileNotFoundException ex) {
-            throw new CoreException(new Status(IStatus.ERROR, "", 0, ex.toString(), ex));
-          } finally {
-            IOUtil.close(is);
-          }
+      IFile pomFile = project.getFile("pom.xml");
+      if(!pomFile.exists()) {
+        InputStream is = null;
+        try {
+          is = new FileInputStream(pomResource);
+          pomFile.create(is, true, monitor);
+        } catch(FileNotFoundException ex) {
+          throw new CoreException(new Status(IStatus.ERROR, "", 0, ex.toString(), ex));
+        } finally {
+          IOUtil.close(is);
         }
       }
     }, null);
@@ -297,19 +295,17 @@
 
     final IProject project = workspace.getRoot().getProject(projectName);
 
-    workspace.run(new IWorkspaceRunnable() {
-      public void run(IProgressMonitor monitor) throws CoreException {
-        if(!project.exists()) {
-          IProjectDescription projectDescription = workspace.newProjectDescription(project.getName());
-          if(addNature) {
-            projectDescription.setNatureIds(new String[] {IMavenConstants.NATURE_ID});
-          }
-          projectDescription.setLocation(null);
-          project.create(projectDescription, monitor);
-          project.open(IResource.NONE, monitor);
-        } else {
-          project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
+    workspace.run((IWorkspaceRunnable) monitor -> {
+      if(!project.exists()) {
+        IProjectDescription projectDescription = workspace.newProjectDescription(project.getName());
+        if(addNature) {
+          projectDescription.setNatureIds(new String[] {IMavenConstants.NATURE_ID});
         }
+        projectDescription.setLocation(null);
+        project.create(projectDescription, monitor);
+        project.open(IResource.NONE, monitor);
+      } else {
+        project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
       }
     }, null);
 
@@ -406,12 +402,10 @@
 
     final ArrayList<IMavenProjectImportResult> importResults = new ArrayList<IMavenProjectImportResult>();
 
-    workspace.run(new IWorkspaceRunnable() {
-      public void run(IProgressMonitor monitor) throws CoreException {
-        importResults.addAll(MavenPlugin.getProjectConfigurationManager().importProjects(projectInfos,
-            importConfiguration, listener, monitor));
-      }
-    }, MavenPlugin.getProjectConfigurationManager().getRule(), IWorkspace.AVOID_UPDATE, monitor);
+    workspace.run(
+        (IWorkspaceRunnable) monitor -> importResults.addAll(MavenPlugin.getProjectConfigurationManager()
+            .importProjects(projectInfos, importConfiguration, listener, monitor)),
+        MavenPlugin.getProjectConfigurationManager().getRule(), IWorkspace.AVOID_UPDATE, monitor);
 
     IProject[] projects = new IProject[projectInfos.size()];
     for(int i = 0; i < projectInfos.size(); i++ ) {
@@ -462,13 +456,11 @@
     final MavenProjectInfo projectInfo = new MavenProjectInfo(projectName, pomFile, model, null);
     setBasedirRename(projectInfo);
 
-    workspace.run(new IWorkspaceRunnable() {
-      public void run(IProgressMonitor monitor) throws CoreException {
-        MavenPlugin.getProjectConfigurationManager().importProjects(Collections.singleton(projectInfo),
-            importConfiguration, monitor);
-        IProject project = workspace.getRoot().getProject(importConfiguration.getProjectName(projectInfo.getModel()));
-        assertNotNull("Failed to import project " + projectInfo, project);
-      }
+    workspace.run((IWorkspaceRunnable) monitor -> {
+      MavenPlugin.getProjectConfigurationManager().importProjects(Collections.singleton(projectInfo),
+          importConfiguration, monitor);
+      IProject project = workspace.getRoot().getProject(importConfiguration.getProjectName(projectInfo.getModel()));
+      assertNotNull("Failed to import project " + projectInfo, project);
     }, MavenPlugin.getProjectConfigurationManager().getRule(), IWorkspace.AVOID_UPDATE, monitor);
 
     return workspace.getRoot().getProject(projectName);
diff --git a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/FileHelpers.java b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/FileHelpers.java
index eb5d7b8..d259330 100644
--- a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/FileHelpers.java
+++ b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/FileHelpers.java
@@ -33,11 +33,7 @@
 public class FileHelpers {
 
   public static void copyDir(File src, File dst) throws IOException {
-    copyDir(src, dst, new FileFilter() {
-      public boolean accept(File pathname) {
-        return !".svn".equals(pathname.getName());
-      }
-    });
+    copyDir(src, dst, pathname -> !".svn".equals(pathname.getName()));
   }
 
   public static void copyDir(File src, File dst, FileFilter filter) throws IOException {
diff --git a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/JobHelpers.java b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/JobHelpers.java
index 25886d4..a07fb52 100644
--- a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/JobHelpers.java
+++ b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/JobHelpers.java
@@ -80,9 +80,7 @@
           jobs[i].join();
         }
       }
-      workspace.run(new IWorkspaceRunnable() {
-        public void run(IProgressMonitor monitor) {
-        }
+      workspace.run((IWorkspaceRunnable) monitor1 -> {
       }, workspace.getRoot(), 0, monitor);
 
       // Now we flush all background processing queues
diff --git a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/WorkspaceHelpers.java b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/WorkspaceHelpers.java
index 92e5db3..1983e66 100644
--- a/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/WorkspaceHelpers.java
+++ b/org.eclipse.m2e.tests.common/src/org/eclipse/m2e/tests/common/WorkspaceHelpers.java
@@ -17,7 +17,6 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Comparator;
 import java.util.List;
 import java.util.SortedMap;
 import java.util.TreeMap;
@@ -31,7 +30,6 @@
 import org.eclipse.core.resources.IWorkspaceRunnable;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
@@ -76,19 +74,17 @@
     }
 
     // must be a timeout
-    throw new CoreException(new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID,
-        "Could not delete workspace resources (after " + i + " retries): "
-            + Arrays.asList(ResourcesPlugin.getWorkspace().getRoot().getProjects()), cause));
+    throw new CoreException(
+        new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID, "Could not delete workspace resources (after " + i
+            + " retries): " + Arrays.asList(ResourcesPlugin.getWorkspace().getRoot().getProjects()), cause));
   }
 
   private static void doCleanWorkspace() throws InterruptedException, CoreException, IOException {
     final IWorkspace workspace = ResourcesPlugin.getWorkspace();
-    workspace.run(new IWorkspaceRunnable() {
-      public void run(IProgressMonitor monitor) throws CoreException {
-        IProject[] projects = workspace.getRoot().getProjects();
-        for(int i = 0; i < projects.length; i++ ) {
-          projects[i].delete(true, true, monitor);
-        }
+    workspace.run((IWorkspaceRunnable) monitor -> {
+      IProject[] projects = workspace.getRoot().getProjects();
+      for(int i = 0; i < projects.length; i++ ) {
+        projects[i].delete(true, true, monitor);
       }
     }, new NullProgressMonitor());
 
@@ -144,21 +140,19 @@
 
   public static List<IMarker> findMarkers(IProject project, int targetSeverity, String withAttribute)
       throws CoreException {
-    SortedMap<IMarker, IMarker> errors = new TreeMap<IMarker, IMarker>(new Comparator<IMarker>() {
-      public int compare(IMarker o1, IMarker o2) {
-        int lineNumber1 = o1.getAttribute(IMarker.LINE_NUMBER, -1);
-        int lineNumber2 = o2.getAttribute(IMarker.LINE_NUMBER, -1);
-        if(lineNumber1 < lineNumber2) {
-          return -1;
-        }
-        if(lineNumber1 > lineNumber2) {
-          return 1;
-        }
-        // Markers on the same line
-        String message1 = o1.getAttribute(IMarker.MESSAGE, "");
-        String message2 = o2.getAttribute(IMarker.MESSAGE, "");
-        return message1.compareTo(message2);
+    SortedMap<IMarker, IMarker> errors = new TreeMap<IMarker, IMarker>((o1, o2) -> {
+      int lineNumber1 = o1.getAttribute(IMarker.LINE_NUMBER, -1);
+      int lineNumber2 = o2.getAttribute(IMarker.LINE_NUMBER, -1);
+      if(lineNumber1 < lineNumber2) {
+        return -1;
       }
+      if(lineNumber1 > lineNumber2) {
+        return 1;
+      }
+      // Markers on the same line
+      String message1 = o1.getAttribute(IMarker.MESSAGE, "");
+      String message2 = o2.getAttribute(IMarker.MESSAGE, "");
+      return message1.compareTo(message2);
     });
     for(IMarker marker : project.findMarkers(null /* all markers */, true /* subtypes */, IResource.DEPTH_INFINITE)) {
       int severity = marker.getAttribute(IMarker.SEVERITY, 0);
@@ -225,8 +219,8 @@
       if(resourceRelativePath == null) {
         resourceRelativePath = "";
       }
-      Assert.assertEquals("Marker not on the expected resource:" + toString(marker), resourceRelativePath, marker
-          .getResource().getProjectRelativePath().toString());
+      Assert.assertEquals("Marker not on the expected resource:" + toString(marker), resourceRelativePath,
+          marker.getResource().getProjectRelativePath().toString());
 
       return marker;
     }
@@ -248,8 +242,8 @@
     List<IMarker> markers = findMarkers(project, severity);
     IMarker marker = findMarker(type, message, lineNumber, resourceRelativePath, markers);
     if(marker == null) {
-      Assert.fail("Expected marker not found. Found " + (markers.isEmpty() ? "no markers" : "markers :")
-          + toString(markers));
+      Assert.fail(
+          "Expected marker not found. Found " + (markers.isEmpty() ? "no markers" : "markers :") + toString(markers));
     }
     Assert.assertTrue("Marker type " + type + " is not a subtype of " + IMarker.PROBLEM,
         marker.isSubtypeOf(IMarker.PROBLEM));