Merge remote-tracking branch 'origin/master' into BETA_JAVA_12
diff --git a/apitools/org.eclipse.pde.api.tools.ui/META-INF/MANIFEST.MF b/apitools/org.eclipse.pde.api.tools.ui/META-INF/MANIFEST.MF
index 531b119..a94f200 100644
--- a/apitools/org.eclipse.pde.api.tools.ui/META-INF/MANIFEST.MF
+++ b/apitools/org.eclipse.pde.api.tools.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.pde.api.tools.ui; singleton:=true
-Bundle-Version: 1.1.500.qualifier
+Bundle-Version: 1.1.600.qualifier
 Bundle-Localization: plugin
 Eclipse-LazyStart: true
 Bundle-ActivationPolicy: lazy
diff --git a/apitools/org.eclipse.pde.api.tools.ui/pom.xml b/apitools/org.eclipse.pde.api.tools.ui/pom.xml
index 95105cc..7c20a46 100644
--- a/apitools/org.eclipse.pde.api.tools.ui/pom.xml
+++ b/apitools/org.eclipse.pde.api.tools.ui/pom.xml
@@ -19,6 +19,6 @@
   </parent>
   <groupId>org.eclipse.pde</groupId>
   <artifactId>org.eclipse.pde.api.tools.ui</artifactId>
-  <version>1.1.500-SNAPSHOT</version>
+  <version>1.1.600-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiUseScanPreferencePage.java b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiUseScanPreferencePage.java
index f845ff0..361451b 100644
--- a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiUseScanPreferencePage.java
+++ b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiUseScanPreferencePage.java
@@ -332,7 +332,7 @@
 			for (String locationString : locations) {
 				String values[] = locationString.split(UseScanManager.ESCAPE_REGEX + UseScanManager.STATE_DELIM);
 				fLocationList.add(values[0]);
-				if (Boolean.valueOf(values[1]).booleanValue()) {
+				if (Boolean.parseBoolean(values[1])) {
 					checkedLocations.add(values[0]);
 				}
 			}
@@ -396,7 +396,7 @@
 			String[] locations = oldLocations.split(UseScanManager.ESCAPE_REGEX + UseScanManager.LOCATION_DELIM);
 			for (String location : locations) {
 				String values[] = location.split(UseScanManager.ESCAPE_REGEX + UseScanManager.STATE_DELIM);
-				if (Boolean.valueOf(values[1]).booleanValue()) {
+				if (Boolean.parseBoolean(values[1])) {
 					oldCheckedElements.add(values[0]);
 				}
 			}
diff --git a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/CompareOperation.java b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/CompareOperation.java
index 8ae331f..236c7a8 100644
--- a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/CompareOperation.java
+++ b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/CompareOperation.java
@@ -22,10 +22,10 @@
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jdt.core.IClassFile;
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.eclipse.jdt.core.IPackageFragment;
 import org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.eclipse.jdt.core.IType;
@@ -206,8 +206,8 @@
 			return;
 		}
 		if (isArchive) {
-			IClassFile[] classFiles = packageFragment.getClassFiles();
-			for (IClassFile classFile : classFiles) {
+			IOrdinaryClassFile[] classFiles = packageFragment.getOrdinaryClassFiles();
+			for (IOrdinaryClassFile classFile : classFiles) {
 				addElementFor(classFile, apiComponent, scope);
 			}
 		} else {
@@ -218,7 +218,7 @@
 		}
 	}
 
-	private static void addElementFor(IClassFile classFile, IApiComponent apiComponent, ApiScope scope) {
+	private static void addElementFor(IOrdinaryClassFile classFile, IApiComponent apiComponent, ApiScope scope) {
 		try {
 			IApiTypeRoot typeRoot = apiComponent.findTypeRoot(classFile.getType().getFullyQualifiedName());
 			if (typeRoot != null) {
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiDescriptionProcessor.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiDescriptionProcessor.java
index d07420d..6371330 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiDescriptionProcessor.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiDescriptionProcessor.java
@@ -758,7 +758,7 @@
 		String value = element.getAttribute(name);
 		int lres = res;
 		if (value.length() > 0) {
-			if (!Boolean.valueOf(value).booleanValue()) {
+			if (!Boolean.parseBoolean(value)) {
 				lres = res | flag;
 			}
 		}
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ProjectApiDescription.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ProjectApiDescription.java
index a7bb891..3379000 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ProjectApiDescription.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ProjectApiDescription.java
@@ -33,6 +33,7 @@
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.eclipse.jdt.core.IPackageFragment;
 import org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.eclipse.jdt.core.IType;
@@ -368,8 +369,8 @@
 									String cuName = unit.getElementName();
 									String tName = cuName.substring(0, cuName.length() - ".java".length()); //$NON-NLS-1$
 									visit(visitor, unit.getType(tName));
-								} else if (child instanceof IClassFile) {
-									visit(visitor, ((IClassFile) child).getType());
+								} else if (child instanceof IOrdinaryClassFile) {
+									visit(visitor, ((IOrdinaryClassFile) child).getType());
 								}
 							}
 						} else {
@@ -489,8 +490,8 @@
 								}
 							} else {
 								IClassFile file = fragment.getClassFile(name + ".class"); //$NON-NLS-1$
-								if (file.exists()) {
-									type = file.getType();
+								if (file.exists() && file instanceof IOrdinaryClassFile) {
+									type = ((IOrdinaryClassFile) file).getType();
 								}
 							}
 						}
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java
index e4d5033..e6d64cf 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2018 IBM Corporation and others.
+ * Copyright (c) 2007, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -415,7 +415,8 @@
 									}
 									if (root != null) {
 										IApiType type = root.getStructure();
-										if (type != null && getDefaultDefined(type, name, desc, false) != null) {
+										if (type != null && (!"<init>".equals(name)) //$NON-NLS-1$
+												&& getDefaultDefined(type, name, desc, false) != null) {
 											flags = IReference.F_DEFAULT_METHOD;
 										}
 									}
@@ -1397,7 +1398,9 @@
 					IApiType def = null;
 					if (fVersion >= Opcodes.V1_8) {
 						// See if we are overriding a default interface method
-						def = getDefaultDefined(owner, name, desc, true);
+						if (!"<init>".equals(name)) { //$NON-NLS-1$
+							def = getDefaultDefined(owner, name, desc, true);
+						}
 					}
 					if (def != null) {
 						addReference(Reference.methodReference(method, def.getName(), method.getName(), method.getSignature(), IReference.REF_OVERRIDE, IReference.F_DEFAULT_METHOD));
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseScanManager.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseScanManager.java
index a3899ec..cd18bf3 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseScanManager.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/UseScanManager.java
@@ -376,7 +376,7 @@
 		ArrayList<String> locationList = new ArrayList<>(locations.length);
 		for (String location : locations) {
 			String values[] = location.split(ESCAPE_REGEX + STATE_DELIM);
-			if (Boolean.valueOf(values[1]).booleanValue()) {
+			if (Boolean.parseBoolean(values[1])) {
 				locationList.add(values[0]);
 			}
 		}
diff --git a/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ApiFileGenerationTask.java b/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ApiFileGenerationTask.java
index 9a633bb..30853cb 100644
--- a/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ApiFileGenerationTask.java
+++ b/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/ApiFileGenerationTask.java
@@ -200,7 +200,7 @@
 	 * @param allow
 	 */
 	public void setAllowNonApiProject(String allow) {
-		this.allowNonApiProject = Boolean.valueOf(allow).booleanValue();
+		this.allowNonApiProject = Boolean.parseBoolean(allow);
 	}
 
 	/**
@@ -509,7 +509,7 @@
 						Object directive = directiveKeys.nextElement();
 						if ("x-internal".equals(directive)) { //$NON-NLS-1$
 							String value = packageName.getDirective((String) directive);
-							if (Boolean.valueOf(value).booleanValue()) {
+							if (Boolean.parseBoolean(value)) {
 								include = false;
 								break loop;
 							}
diff --git a/ua/org.eclipse.pde.ua.ui/META-INF/MANIFEST.MF b/ua/org.eclipse.pde.ua.ui/META-INF/MANIFEST.MF
index eeac35e..5c1de44 100644
--- a/ua/org.eclipse.pde.ua.ui/META-INF/MANIFEST.MF
+++ b/ua/org.eclipse.pde.ua.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.pde.ua.ui;singleton:=true
-Bundle-Version: 1.1.300.qualifier
+Bundle-Version: 1.1.400.qualifier
 Bundle-Activator: org.eclipse.pde.internal.ua.ui.PDEUserAssistanceUIPlugin
 Require-Bundle: org.eclipse.ui;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
diff --git a/ua/org.eclipse.pde.ua.ui/pom.xml b/ua/org.eclipse.pde.ua.ui/pom.xml
index 4d2ec03..0e0b5b1 100644
--- a/ua/org.eclipse.pde.ua.ui/pom.xml
+++ b/ua/org.eclipse.pde.ua.ui/pom.xml
@@ -20,7 +20,7 @@
   </parent>
   <groupId>org.eclipse.pde</groupId>
   <artifactId>org.eclipse.pde.ua.ui</artifactId>
-  <version>1.1.300-SNAPSHOT</version>
+  <version>1.1.400-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
   <properties>
diff --git a/ua/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocTreeSection.java b/ua/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocTreeSection.java
index 2b5140b..26454e4 100755
--- a/ua/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocTreeSection.java
+++ b/ua/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocTreeSection.java
@@ -1109,8 +1109,12 @@
 	 * Remove the selected objects from the TOC tree
 	 */
 	private void handleDeleteAction() {
-		ArrayList objects = new ArrayList<>(
-				fTocTree.getStructuredSelection().toList());
+		List<?> list = fTocTree.getStructuredSelection().toList();
+		ArrayList<TocObject> objects = new ArrayList<>(list.size());
+		for (Object o : list) {
+			if (o instanceof TocObject)
+				objects.add((TocObject) o);
+		}
 		boolean beep = false;
 
 		// Iterate through the list of selected objects, removing ones
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
index f99d23a..98881e3 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
@@ -296,7 +296,7 @@
 					if ("default".equals(auto)) {//$NON-NLS-1$
 						isAuto = defaultAutoStart;
 					} else {
-						isAuto = Boolean.valueOf(auto).booleanValue();
+						isAuto = Boolean.parseBoolean(auto);
 					}
 					if ("default".equals(levelString)) {//$NON-NLS-1$
 						level = defaultStartLevel;
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java
index 4aab67f..aa833d8 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2017 IBM Corporation and others.
+ * Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -52,7 +52,7 @@
 		prefs.putInt(CompilerFlags.P_BUILD_ENCODINGS, CompilerFlags.IGNORE);
 
 		prefs.putInt(CompilerFlags.P_INCOMPATIBLE_ENV, CompilerFlags.WARNING);
-		prefs.putInt(CompilerFlags.P_MISSING_EXPORT_PKGS, CompilerFlags.IGNORE);
+		prefs.putInt(CompilerFlags.P_MISSING_EXPORT_PKGS, CompilerFlags.WARNING);
 
 		prefs.putInt(CompilerFlags.P_MISSING_VERSION_EXP_PKG, CompilerFlags.IGNORE);
 		prefs.putInt(CompilerFlags.P_MISSING_VERSION_IMP_PKG, CompilerFlags.IGNORE);
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPlatformHelper.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPlatformHelper.java
index 7d3c76b..f41c729 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPlatformHelper.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPlatformHelper.java
@@ -296,7 +296,7 @@
 				continue;
 			}
 			String visiblity = elements[0].getAttribute("visible"); //$NON-NLS-1$
-			boolean visible = visiblity == null ? true : Boolean.valueOf(visiblity).booleanValue();
+			boolean visible = visiblity == null ? true : Boolean.parseBoolean(visiblity);
 			if (id != null && visible) {
 				result.add(id);
 			}
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java
index ea0ac4f..dee6c32 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java
@@ -112,7 +112,7 @@
 	 * @return the boolean value for the given preference id
 	 */
 	public static boolean getBoolean(IProject project, String flagId) {
-		return Boolean.valueOf(getString(project, flagId)).booleanValue();
+		return Boolean.parseBoolean(getString(project, flagId));
 	}
 
 	/**
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/plugin/ImportObject.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/plugin/ImportObject.java
index 5eaed5c..4172ab4 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/plugin/ImportObject.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/plugin/ImportObject.java
@@ -15,6 +15,7 @@
 
 import java.io.PrintWriter;
 import java.io.Serializable;
+import org.eclipse.osgi.service.resolver.VersionRange;
 import org.eclipse.pde.core.ISourceObject;
 import org.eclipse.pde.core.IWritable;
 import org.eclipse.pde.core.plugin.IPluginBase;
@@ -86,7 +87,9 @@
 
 	@Override
 	protected IPluginModelBase findModel() {
-		return PluginRegistry.findModel(getId(), iimport.getVersion(), iimport.getMatch(), null);
+		String version = iimport.getVersion();
+		VersionRange range = new VersionRange(version);
+		return PluginRegistry.findModel(getId(), range, null);
 	}
 
 }
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/JREInfo.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/JREInfo.java
index c50bdc4..2fd53c7 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/JREInfo.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/JREInfo.java
@@ -103,7 +103,7 @@
 			Node child = list.item(i);
 			if (child.getNodeType() == Node.ELEMENT_NODE) {
 				Node includeNode = child.getAttributes().getNamedItem("include"); //$NON-NLS-1$
-				boolean include = includeNode != null ? Boolean.valueOf(includeNode.getNodeValue()).booleanValue() : true;
+				boolean include = includeNode != null ? Boolean.parseBoolean(includeNode.getNodeValue()) : true;
 				if (child.getNodeName().equals(JRE_LIN)) {
 					fJVMLin = getPath(child);
 					bIncludeLin = include;
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/PluginConfiguration.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/PluginConfiguration.java
index 0bd47a0..36b7bc1 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/PluginConfiguration.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/PluginConfiguration.java
@@ -41,7 +41,7 @@
 		if (node.getNodeType() == Node.ELEMENT_NODE) {
 			Element element = (Element) node;
 			fId = element.getAttribute("id"); //$NON-NLS-1$
-			fAutoStart = Boolean.valueOf(element.getAttribute(P_AUTO_START)).booleanValue();
+			fAutoStart = Boolean.parseBoolean(element.getAttribute(P_AUTO_START));
 			fStartLevel = Integer.parseInt(element.getAttribute(P_START_LEVEL));
 		}
 
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ProductPlugin.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ProductPlugin.java
index bc5c53a..a1d0399 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ProductPlugin.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ProductPlugin.java
@@ -48,7 +48,7 @@
 			fId = element.getAttribute("id"); //$NON-NLS-1$
 			fVersion = element.getAttribute("version"); //$NON-NLS-1$
 			String fragment = element.getAttribute("fragment"); //$NON-NLS-1$
-			fFragment = Boolean.valueOf(fragment).booleanValue();
+			fFragment = Boolean.parseBoolean(fragment);
 		}
 	}
 
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/RepositoryInfo.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/RepositoryInfo.java
index a57adb6..b7e4f44 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/RepositoryInfo.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/RepositoryInfo.java
@@ -66,7 +66,7 @@
 		if (node.getNodeType() == Node.ELEMENT_NODE) {
 			Element element = (Element) node;
 			fURL = element.getAttribute("location"); //$NON-NLS-1$
-			fEnabled = Boolean.valueOf(element.getAttribute(P_ENABLED)).booleanValue();
+			fEnabled = Boolean.parseBoolean(element.getAttribute(P_ENABLED));
 		}
 	}
 
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/schema/Schema.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/schema/Schema.java
index 5462c11..5b96438 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/schema/Schema.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/schema/Schema.java
@@ -783,7 +783,7 @@
 
 									// set internal
 									String internal = getAttribute(meta, ISchemaRootElement.P_INTERNAL);
-									((ISchemaRootElement) element).setInternal(Boolean.valueOf(internal).booleanValue());
+									((ISchemaRootElement) element).setInternal(Boolean.parseBoolean(internal));
 								}
 							}
 						}
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/site/RepositoryReference.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/site/RepositoryReference.java
index dcf0faa..13b21ee 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/site/RepositoryReference.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/site/RepositoryReference.java
@@ -64,7 +64,7 @@
 		if (node.getNodeType() == Node.ELEMENT_NODE) {
 			Element element = (Element) node;
 			fURL = element.getAttribute("location"); //$NON-NLS-1$
-			fEnabled = Boolean.valueOf(element.getAttribute(P_ENABLED)).booleanValue();
+			fEnabled = Boolean.parseBoolean(element.getAttribute(P_ENABLED));
 		}
 	}
 
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractTargetHandle.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractTargetHandle.java
index 5f6b918..1b249ae 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractTargetHandle.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractTargetHandle.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2011 IBM Corporation and others.
+ * Copyright (c) 2008, 2018 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -8,13 +8,14 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     EclipseSource Inc. - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.core.target;
 
-import org.eclipse.core.filebuffers.ITextFileBuffer;
+import java.io.InputStream;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.pde.core.target.ITargetDefinition;
 import org.eclipse.pde.core.target.ITargetHandle;
@@ -30,7 +31,7 @@
 	public ITargetDefinition getTargetDefinition() throws CoreException {
 		TargetDefinition definition = new TargetDefinition(this);
 		if (exists()) {
-			definition.setContents(getTextFileBuffer());
+			definition.setContents(getInputStream());
 		}
 		return definition;
 	}
@@ -38,11 +39,11 @@
 	/**
 	 * Returns an input stream of the target definition's contents.
 	 *
-	 * @return file buffer of content
+	 * @return stream of content
 	 * @throws CoreException
-	 *                           if an error occurs
+	 *             if an error occurs
 	 */
-	protected abstract ITextFileBuffer getTextFileBuffer() throws CoreException;
+	protected abstract InputStream getInputStream() throws CoreException;
 
 	/**
 	 * Deletes the underlying target definition.
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ExternalFileTargetHandle.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ExternalFileTargetHandle.java
index 6cc71cf..b143d03 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ExternalFileTargetHandle.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ExternalFileTargetHandle.java
Binary files differ
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/IULocationFactory.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/IULocationFactory.java
index 8d20da6..abdacd6 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/IULocationFactory.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/IULocationFactory.java
Binary files differ
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/LocalTargetHandle.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/LocalTargetHandle.java
index 1943d84..89015ff 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/LocalTargetHandle.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/LocalTargetHandle.java
@@ -13,15 +13,17 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.core.target;
 
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.filebuffers.ITextFileBufferManager;
-import org.eclipse.core.filebuffers.LocationKind;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IStatus;
@@ -115,22 +117,12 @@
 	}
 
 	@Override
-	protected ITextFileBuffer getTextFileBuffer() throws CoreException {
-		File file = getFile();
+	protected InputStream getInputStream() throws CoreException {
 		try {
-			if (!file.exists()) {
-				file.getParentFile().mkdirs();
-				file.createNewFile();
-			}
+			return new BufferedInputStream(new FileInputStream(getFile()));
 		} catch (FileNotFoundException e) {
 			throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, Messages.LocalTargetHandle_1, e));
-		} catch (IOException e) {
-			throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, Messages.LocalTargetHandle_5, e));
 		}
-		IPath path = Path.fromOSString(getFile().getAbsolutePath());
-		ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
-		manager.connect(path, LocationKind.LOCATION, null);
-		return manager.getTextFileBuffer(path, LocationKind.LOCATION);
 	}
 
 	@Override
@@ -187,9 +179,31 @@
 		P2TargetUtils.deleteProfile(this);
 	}
 
+	protected OutputStream getOutputStream() throws CoreException {
+		try {
+			File file = getFile();
+			if (!file.exists()) {
+				file.getParentFile().mkdirs();
+				file.createNewFile();
+			}
+			return new BufferedOutputStream(new FileOutputStream(file));
+		} catch (FileNotFoundException e) {
+			throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, Messages.LocalTargetHandle_1, e));
+		} catch (IOException e) {
+			throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, Messages.LocalTargetHandle_5, e));
+		}
+	}
+
 	@Override
 	void save(ITargetDefinition definition) throws CoreException {
-		((TargetDefinition) definition).write(getTextFileBuffer());
+		OutputStream stream = getOutputStream();
+		((TargetDefinition) definition).write(stream);
+		try {
+			stream.close();
+		} catch (IOException e) {
+			throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID,
+					NLS.bind(Messages.LocalTargetHandle_4, getFile().getName()), e));
+		}
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java
index 2ff4ced..72cf3d8 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java
@@ -532,7 +532,7 @@
 		boolean all = false;
 		String value = fProfile.getProperty(PROP_ALL_ENVIRONMENTS);
 		if (value != null) {
-			all = Boolean.valueOf(value).booleanValue();
+			all = Boolean.parseBoolean(value);
 			if (!Boolean.toString(getIncludeAllEnvironments()).equals(value)) {
 				return false;
 			}
@@ -559,11 +559,11 @@
 		}
 
 		// check that the include source flag matches what the profile represents
-		if (getIncludeSource() != Boolean.valueOf(fProfile.getProperty(PROP_AUTO_INCLUDE_SOURCE)).booleanValue()) {
+		if (getIncludeSource() != Boolean.parseBoolean(fProfile.getProperty(PROP_AUTO_INCLUDE_SOURCE))) {
 			return false;
 		}
 
-		if (getIncludeConfigurePhase() != Boolean.valueOf(fProfile.getProperty(PROP_INCLUDE_CONFIGURE_PHASE)).booleanValue()) {
+		if (getIncludeConfigurePhase() != Boolean.parseBoolean(fProfile.getProperty(PROP_INCLUDE_CONFIGURE_PHASE))) {
 			return false;
 		}
 
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinition.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinition.java
index ab9b977..693cf98 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinition.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinition.java
@@ -17,6 +17,8 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -33,7 +35,6 @@
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -776,12 +777,12 @@
 	/**
 	 * Build contents from the given stream.
 	 *
-	 * @param input
-	 *                  input file buffer
+	 * @param stream
+	 *            input stream
 	 * @throws CoreException
-	 *                           if an error occurs
+	 *             if an error occurs
 	 */
-	void setContents(ITextFileBuffer input) throws CoreException {
+	void setContents(InputStream stream) throws CoreException {
 		try {
 			fArch = null;
 			fContainers = null;
@@ -797,7 +798,7 @@
 			fSequenceNumber = 0;
 			fDocument = null;
 			fRoot = null;
-			TargetDefinitionPersistenceHelper.initFromXML(this, input);
+			TargetDefinitionPersistenceHelper.initFromXML(this, stream);
 		} catch (ParserConfigurationException | SAXException | IOException e) {
 			setDocument(createNewDocument());
 			abort(Messages.TargetDefinition_0, e);
@@ -807,14 +808,19 @@
 	/**
 	 * Persists contents to the given stream.
 	 *
-	 * @param output
-	 *                   output file buffer
+	 * @param stream
+	 *            output stream
 	 * @throws CoreException
-	 *                           if an error occurs
+	 *             if an error occurs
 	 */
-	void write(ITextFileBuffer output) throws CoreException {
+	void write(OutputStream stream) throws CoreException {
 		try {
-			TargetDefinitionPersistenceHelper.persistXML(this, output);
+			if (fContainers != null && fContainers.length != 0) {
+				Element containersElement = TargetDefinitionDocumentTools.getChildElement(fRoot,
+						TargetDefinitionPersistenceHelper.LOCATIONS);
+				serializeBundleContainers(fContainers, containersElement);
+			}
+			TargetDefinitionPersistenceHelper.persistXML(this, stream);
 		} catch (IOException | ParserConfigurationException | TransformerException | SAXException e) {
 			abort(Messages.TargetDefinition_3, e);
 		}
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinitionPersistenceHelper.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinitionPersistenceHelper.java
index c7dc9c8..76bd039 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinitionPersistenceHelper.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinitionPersistenceHelper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2017 IBM Corporation and others.
+ * Copyright (c) 2008, 2018 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -8,13 +8,12 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.pde.internal.core.target;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -29,11 +28,9 @@
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.text.TextUtilities;
 import org.eclipse.pde.core.target.ITargetDefinition;
 import org.eclipse.pde.core.target.ITargetPlatformService;
 import org.eclipse.pde.internal.core.ICoreConstants;
@@ -101,83 +98,48 @@
 	private static ITargetPlatformService fTargetService;
 
 	/**
-	 * Serializes a target definition to xml and writes the xml to the given stream
+	 * Serializes a target definition to xml and writes the xml to the given
+	 * stream
 	 *
 	 * @param definition
-	 *                       target definition to serialize
+	 *            target definition to serialize
 	 * @param output
-	 *                       output file buffer to write xml to
+	 *            output stream to write xml to
 	 * @throws CoreException
 	 * @throws ParserConfigurationException
 	 * @throws TransformerException
 	 * @throws IOException
 	 * @throws SAXException
 	 */
-	public static void persistXML(ITargetDefinition definition, ITextFileBuffer output)
+	public static void persistXML(ITargetDefinition definition, OutputStream output)
 			throws CoreException, ParserConfigurationException, TransformerException, IOException, SAXException {
-		if (output == null) {
-			return;
-		}
 		Document document = definition.getDocument();
 		DOMSource source = new DOMSource(document);
 
-		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-		StreamResult outputTarget = new StreamResult(outputStream);
+		StreamResult outputTarget = new StreamResult(output);
 		TransformerFactory factory = TransformerFactory.newInstance();
 		Transformer transformer = factory.newTransformer();
 		transformer.transform(source, outputTarget);
-
-		// Convert the line separators
-		byte[] bytes = outputStream.toByteArray();
-		String encoding = output.getEncoding();
-		String strContent = outputStream.toString(encoding);
-		strContent = strContent.replace(System.getProperty("line.separator"), //$NON-NLS-1$
-				TextUtilities.getDefaultLineDelimiter(output.getDocument()));
-		bytes = strContent.getBytes(encoding);
-
-		try (OutputStream stream = output.getFileStore().openOutputStream(0, null)) {
-			stream.write(bytes);
-		}
 	}
 
 	/**
-	 * Parses an xml document from the text file buffer and deserializes it into a
+	 * Parses an xml document from the input stream and deserializes it into a
 	 * target definition.
 	 *
 	 * @param definition
-	 *                       definition to be filled with the result of
-	 *                       deserialization
+	 *            definition to be filled with the result of deserialization
 	 * @param input
-	 *                       text file buffer to get xml input from
+	 *            stream to get xml input from
 	 * @throws CoreException
 	 * @throws ParserConfigurationException
 	 * @throws IOException
 	 * @throws SAXException
 	 */
-	public static void initFromXML(ITargetDefinition definition, ITextFileBuffer input)
+	public static void initFromXML(ITargetDefinition definition, InputStream input)
 			throws CoreException, ParserConfigurationException, SAXException, IOException {
-		if (input == null) {
-			return;
-		}
-		InputStream stream = null;
-		if (input.isDirty()) {
-			String documentContent = input.getDocument().get();
-			if (!documentContent.isEmpty()) {
-				stream = new ByteArrayInputStream(documentContent.getBytes());
-			} else {
-				return;
-			}
-		} else {
-			stream = input.getFileStore().openInputStream(0, null);
-			if (stream.available() == 0) {
-				// do not process empty stream
-				return;
-			}
-		}
 		DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
 		parser.setErrorHandler(new DefaultHandler());
-		Document doc = parser.parse(new InputSource(stream));
-		stream.close();
+		Document doc = parser.parse(new InputSource(input));
 
 		Element root = doc.getDocumentElement();
 		if (!root.getNodeName().equalsIgnoreCase(ROOT)) {
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence34Helper.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence34Helper.java
index 71298ad..3847f50 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence34Helper.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence34Helper.java
@@ -197,7 +197,7 @@
 		String def = location.getAttribute(TargetDefinitionPersistenceHelper.ATTR_USE_DEFAULT);
 		String path = null;
 		String type = null;
-		if (def.length() > 0 && Boolean.valueOf(def).booleanValue()) {
+		if (def.length() > 0 && Boolean.parseBoolean(def)) {
 			path = "${eclipse_home}"; //$NON-NLS-1$
 			type = ProfileBundleContainer.TYPE;
 		} else {
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence35Helper.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence35Helper.java
index 9500fba..85419a0 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence35Helper.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence35Helper.java
@@ -241,7 +241,7 @@
 					flags = 0;
 				}
 			}
-			flags |= Boolean.valueOf(includeAllPlatforms).booleanValue() ? IUBundleContainer.INCLUDE_ALL_ENVIRONMENTS : 0;
+			flags |= Boolean.parseBoolean(includeAllPlatforms) ? IUBundleContainer.INCLUDE_ALL_ENVIRONMENTS : 0;
 			container = new IUBundleContainer(iuIDs, iuVer, uris, flags);
 		}
 
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence36Helper.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence36Helper.java
index 6d617ef..6ec2dea 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence36Helper.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPersistence36Helper.java
@@ -248,8 +248,8 @@
 					flags = 0;
 				}
 			}
-			flags |= Boolean.valueOf(includeAllPlatforms).booleanValue() ? IUBundleContainer.INCLUDE_ALL_ENVIRONMENTS : 0;
-			flags |= Boolean.valueOf(includeSource).booleanValue() ? IUBundleContainer.INCLUDE_SOURCE : 0;
+			flags |= Boolean.parseBoolean(includeAllPlatforms) ? IUBundleContainer.INCLUDE_ALL_ENVIRONMENTS : 0;
+			flags |= Boolean.parseBoolean(includeSource) ? IUBundleContainer.INCLUDE_SOURCE : 0;
 			container = new IUBundleContainer(iuIDs, iuVer, uris, flags);
 		}
 		return container;
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java
index 0090d28..1915c3f 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java
@@ -13,6 +13,9 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.core.target;
 
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FilenameFilter;
 import java.io.IOException;
@@ -28,10 +31,6 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.StringTokenizer;
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.filebuffers.ITextFileBufferManager;
-import org.eclipse.core.filebuffers.LocationKind;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IResourceProxy;
@@ -65,6 +64,7 @@
 import org.eclipse.pde.internal.core.PDECore;
 import org.eclipse.pde.internal.core.PDECoreMessages;
 import org.eclipse.pde.internal.core.PDEPreferencesManager;
+import org.eclipse.pde.internal.core.TargetDefinitionManager;
 import org.eclipse.pde.internal.core.TargetPlatformHelper;
 import org.osgi.service.prefs.BackingStoreException;
 
@@ -100,7 +100,7 @@
 	 */
 	class ResourceProxyVisitor implements IResourceProxyVisitor {
 
-		private final List<IResource> fList;
+		private List<IResource> fList;
 
 		protected ResourceProxyVisitor(List<IResource> list) {
 			fList = list;
@@ -399,22 +399,10 @@
 
 	@Override
 	public void copyTargetDefinition(ITargetDefinition from, ITargetDefinition to) throws CoreException {
-		File tempFile = null;
-		try {
-			tempFile = File.createTempFile("targetDefinition", null); //$NON-NLS-1$
-			IPath path = Path.fromOSString(tempFile.getAbsolutePath());
-			ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
-			manager.connect(path, LocationKind.LOCATION, null);
-			ITextFileBuffer holdFileBuffer = manager.getTextFileBuffer(path, LocationKind.LOCATION);
-			((TargetDefinition) from).write(holdFileBuffer);
-			((TargetDefinition) to).setContents(holdFileBuffer);
-		} catch (IOException e) {
-			throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, e.getLocalizedMessage()));
-		} finally {
-			if (tempFile != null) {
-				tempFile.delete();
-			}
-		}
+		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+		((TargetDefinition) from).write(outputStream);
+		ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
+		((TargetDefinition) to).setContents(inputStream);
 	}
 
 	@Override
@@ -424,10 +412,15 @@
 			throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, NLS.bind(Messages.TargetPlatformService_2, targetExtensionId)));
 		}
 		String path = elem.getAttribute("definition"); //$NON-NLS-1$
-		if (path != null) {
-			ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
-			ITextFileBuffer fileBuffer = manager.getTextFileBuffer(Path.fromOSString(path), LocationKind.LOCATION);
-			((TargetDefinition) definition).setContents(fileBuffer);
+		String symbolicName = elem.getDeclaringExtension().getContributor().getName();
+		URL url = TargetDefinitionManager.getResourceURL(symbolicName, path);
+		if (url != null) {
+			try {
+				((TargetDefinition) definition).setContents(new BufferedInputStream(url.openStream()));
+			} catch (IOException e) {
+				throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID,
+						NLS.bind(Messages.TargetPlatformService_3, path), e));
+			}
 		} else {
 			throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, NLS.bind(Messages.TargetPlatformService_4, path)));
 		}
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/WorkspaceFileTargetHandle.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/WorkspaceFileTargetHandle.java
index 0eb9ec7..9533f1b 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/WorkspaceFileTargetHandle.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/WorkspaceFileTargetHandle.java
@@ -14,15 +14,12 @@
 package org.eclipse.pde.internal.core.target;
 
 import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.HashMap;
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.filebuffers.ITextFileBufferManager;
-import org.eclipse.core.filebuffers.LocationKind;
 import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
@@ -84,9 +81,12 @@
 	}
 
 	@Override
-	protected ITextFileBuffer getTextFileBuffer() throws CoreException {
+	public void save(ITargetDefinition definition) throws CoreException {
+		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+		((TargetDefinition) definition).write(outputStream);
+		ByteArrayInputStream stream = new ByteArrayInputStream(outputStream.toByteArray());
 		if (!fFile.exists()) {
-			fFile.create(new ByteArrayInputStream(new byte[0]), false, null);
+			fFile.create(stream, false, null);
 		} else {
 			// validate edit
 			if (fFile.isReadOnly()) {
@@ -95,10 +95,13 @@
 					throw new CoreException(status);
 				}
 			}
+			fFile.setContents(stream, true, false, null);
 		}
-		ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
-		manager.connect(fFile.getFullPath(), LocationKind.IFILE, null);
-		return manager.getTextFileBuffer(fFile.getFullPath(), LocationKind.IFILE);
+	}
+
+	@Override
+	protected InputStream getInputStream() throws CoreException {
+		return fFile.getContents();
 	}
 
 	@Override
@@ -128,13 +131,6 @@
 		P2TargetUtils.deleteProfile(this);
 	}
 
-	@Override
-	public void save(ITargetDefinition definition) throws CoreException {
-		((TargetDefinition) definition).write(getTextFileBuffer());
-		if (fFile.exists()) {
-			fFile.refreshLocal(IResource.DEPTH_ZERO, null);
-		}
-	}
 
 	@Override
 	public String toString() {
diff --git a/ui/org.eclipse.pde.genericeditor.extension.tests/META-INF/MANIFEST.MF b/ui/org.eclipse.pde.genericeditor.extension.tests/META-INF/MANIFEST.MF
index bc9b74f..32b27e3 100644
--- a/ui/org.eclipse.pde.genericeditor.extension.tests/META-INF/MANIFEST.MF
+++ b/ui/org.eclipse.pde.genericeditor.extension.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Tests for Generic Target Platform Editor
 Bundle-SymbolicName: org.eclipse.pde.genericeditor.extension.tests
-Bundle-Version: 1.0.200.qualifier
+Bundle-Version: 1.0.300.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: Eclipse.org
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/ui/org.eclipse.pde.genericeditor.extension.tests/pom.xml b/ui/org.eclipse.pde.genericeditor.extension.tests/pom.xml
index b686c98..d2c50f5 100644
--- a/ui/org.eclipse.pde.genericeditor.extension.tests/pom.xml
+++ b/ui/org.eclipse.pde.genericeditor.extension.tests/pom.xml
@@ -19,7 +19,7 @@
   </parent>
   <groupId>org.eclipse.pde</groupId>
   <artifactId>org.eclipse.pde.genericeditor.extension.tests</artifactId>
-  <version>1.0.200-SNAPSHOT</version>
+  <version>1.0.300-SNAPSHOT</version>
   <packaging>eclipse-test-plugin</packaging>
 
   <properties>
diff --git a/ui/org.eclipse.pde.genericeditor.extension.tests/src/org/eclipse/pde/genericeditor/extension/tests/Bug528706CompletionWithMultilineTagsTest.java b/ui/org.eclipse.pde.genericeditor.extension.tests/src/org/eclipse/pde/genericeditor/extension/tests/Bug528706CompletionWithMultilineTagsTest.java
index ebd0fba..50fccff 100644
--- a/ui/org.eclipse.pde.genericeditor.extension.tests/src/org/eclipse/pde/genericeditor/extension/tests/Bug528706CompletionWithMultilineTagsTest.java
+++ b/ui/org.eclipse.pde.genericeditor.extension.tests/src/org/eclipse/pde/genericeditor/extension/tests/Bug528706CompletionWithMultilineTagsTest.java
@@ -39,17 +39,17 @@
 
 	@Test
 	public void testTagValueCompletionBeforeAMultiline() {
-		confirmCompletionAtOffset(151, "carbon");
+		confirmCompletionAtOffset(150, "cocoa");
 	}
 
 	@Test
 	public void testTagValueCompletionAsAMultiline() {
-		confirmCompletionAtOffset(167, "linux");
+		confirmCompletionAtOffset(166, "linux");
 	}
 
 	@Test
 	public void testTagValueCompletionAfterAMultiline() {
-		confirmCompletionAtOffset(187, "PA_RISC");
+		confirmCompletionAtOffset(181, "x86");
 	}
 
 	@Test
diff --git a/ui/org.eclipse.pde.genericeditor.extension.tests/src/org/eclipse/pde/genericeditor/extension/tests/Bug531602FormattingTests.java b/ui/org.eclipse.pde.genericeditor.extension.tests/src/org/eclipse/pde/genericeditor/extension/tests/Bug531602FormattingTests.java
index 0da2cff..cb86bba 100644
--- a/ui/org.eclipse.pde.genericeditor.extension.tests/src/org/eclipse/pde/genericeditor/extension/tests/Bug531602FormattingTests.java
+++ b/ui/org.eclipse.pde.genericeditor.extension.tests/src/org/eclipse/pde/genericeditor/extension/tests/Bug531602FormattingTests.java
@@ -15,19 +15,14 @@
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.File;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URI;
-import java.net.URL;
-import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
 import java.util.Arrays;
 import java.util.Scanner;
 
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
 import org.eclipse.core.runtime.preferences.InstanceScope;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
@@ -43,22 +38,20 @@
 import org.osgi.framework.FrameworkUtil;
 
 public class Bug531602FormattingTests extends AbstractTargetEditorTest {
-	private static final String TEST_FILE_LINE_SEPERATOR = "\n";
 
 	@Test
 	public void testSettingNullPersists() throws Exception {
 		ITargetPlatformService service = PDECore.getDefault().acquireService(ITargetPlatformService.class);
 		ITargetDefinition targetDefinition = service.newTarget();
 		targetDefinition.setName("test");
-		tempFile = File.createTempFile("targetDefinition", null);
-		ITextFileBuffer buffer = getTextFileBufferFromFile(tempFile);
-		TargetDefinitionPersistenceHelper.persistXML(targetDefinition, buffer);
-		String expectedOutput = readFile(tempFile.toPath(), StandardCharsets.UTF_8);
+		ByteArrayOutputStream expectedOutput = new ByteArrayOutputStream();
+		TargetDefinitionPersistenceHelper.persistXML(targetDefinition, expectedOutput);
 
+		ByteArrayOutputStream actualOutput = new ByteArrayOutputStream();
 		targetDefinition.setProgramArguments(null);
-		TargetDefinitionPersistenceHelper.persistXML(targetDefinition, buffer);
-		String actualOutput = readFile(tempFile.toPath(), StandardCharsets.UTF_8);
-		assertEquals(expectedOutput, actualOutput);
+		TargetDefinitionPersistenceHelper.persistXML(targetDefinition, actualOutput);
+		assertEquals(expectedOutput.toString(StandardCharsets.UTF_8.toString()),
+				actualOutput.toString(StandardCharsets.UTF_8.toString()));
 	}
 
 	@Test
@@ -66,18 +59,18 @@
 		ITargetPlatformService service = PDECore.getDefault().acquireService(ITargetPlatformService.class);
 		ITargetDefinition targetDefinition = service.newTarget();
 		targetDefinition.setOS("test_os");
+		ByteArrayOutputStream actualOutput = new ByteArrayOutputStream();
+		TargetDefinitionPersistenceHelper.persistXML(targetDefinition, actualOutput);
 		confirmMatch(targetDefinition, "IndentingTestCaseTarget.txt");
 	}
 
 	@Test
 	public void testCommentsAndWhitespacePersists() throws Exception {
-		URL url = FrameworkUtil.getBundle(this.getClass())
-				.getEntry("testing-files/target-files/PersistTestCaseTarget.txt");
-		File inputFile = new File(FileLocator.toFileURL(url).getFile());
+		InputStream inputStream = FrameworkUtil.getBundle(this.getClass())
+				.getEntry("testing-files/target-files/PersistTestCaseTarget.txt").openStream();
 		ITargetPlatformService service = PDECore.getDefault().acquireService(ITargetPlatformService.class);
 		ITargetDefinition targetDefinition = service.newTarget();
-		ITextFileBuffer buffer = getTextFileBufferFromFile(inputFile);
-		TargetDefinitionPersistenceHelper.initFromXML(targetDefinition, buffer);
+		TargetDefinitionPersistenceHelper.initFromXML(targetDefinition, inputStream);
 		confirmMatch(targetDefinition, "PersistTestCaseTarget.txt");
 	}
 
@@ -116,8 +109,6 @@
 		StringAsserts.assertEqualStringIgnoreDelim(actual, expected);
 	}
 	private void confirmMatch(ITargetDefinition targetDefinition, String expectedDefinitionPath) throws Exception {
-		String lineSeparator = System.getProperty("line.separator");
-		boolean requireReplaceLineSeparator = !lineSeparator.equals(TEST_FILE_LINE_SEPERATOR);
 		try (Scanner s = new Scanner(FrameworkUtil.getBundle(this.getClass())
 				.getEntry("testing-files/target-files/" + expectedDefinitionPath).openStream()).useDelimiter("\\A")) {
 			String result = s.hasNext() ? s.next() : "";
@@ -129,14 +120,10 @@
 				Arrays.fill(chars, ' ');
 				result.replace("\t", new String(chars));
 			}
-			tempFile = File.createTempFile("targetDefinition", null);
-			ITextFileBuffer buffer = getTextFileBufferFromFile(tempFile);
-			TargetDefinitionPersistenceHelper.persistXML(targetDefinition, buffer);
-			String fileContent = readFile(tempFile.toPath(), StandardCharsets.UTF_8);
-			if (requireReplaceLineSeparator) {
-				fileContent = fileContent.replace(lineSeparator, TEST_FILE_LINE_SEPERATOR);
-			}
-			assertEquals(result, fileContent);
+			ByteArrayOutputStream actualOutput = new ByteArrayOutputStream();
+			TargetDefinitionPersistenceHelper.persistXML(targetDefinition, actualOutput);
+
+			assertEqualStringIgnoreDelim(result, actualOutput.toString(StandardCharsets.UTF_8.toString()));
 		} catch (IOException e) {
 		}
 	}
@@ -164,9 +151,4 @@
 		targetDefinition.setTargetLocations(new ITargetLocation[] { dirContainer, profileContainer, featureContainer,
 				restrictedProfileContainer, siteContainer });
 	}
-
-	static String readFile(Path path, Charset encoding) throws IOException {
-		byte[] encoded = Files.readAllBytes(path);
-		return new String(encoded, encoding);
-	}
 }
\ No newline at end of file
diff --git a/ui/org.eclipse.pde.genericeditor.extension.tests/testing-files/target-files/MultilineTagTestCaseTarget.txt b/ui/org.eclipse.pde.genericeditor.extension.tests/testing-files/target-files/MultilineTagTestCaseTarget.txt
index d51da58..acf4660 100644
--- a/ui/org.eclipse.pde.genericeditor.extension.tests/testing-files/target-files/MultilineTagTestCaseTarget.txt
+++ b/ui/org.eclipse.pde.genericeditor.extension.tests/testing-files/target-files/MultilineTagTestCaseTarget.txt
@@ -11,12 +11,12 @@
 <pro
 </locations>
 <environment>
-<ws>carb</ws>
+<ws>coc</ws>
 <os>
 
 linu
 
 </os>
-<arch>PA_RIS</arch>
+<arch>x</arch>
 </environment>
 </target>
\ No newline at end of file
diff --git a/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/reconciler/folding/FoldingReconcilerStrategy.java b/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/reconciler/folding/FoldingReconcilerStrategy.java
index 6cbd364..e1b8e1e 100644
--- a/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/reconciler/folding/FoldingReconcilerStrategy.java
+++ b/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/reconciler/folding/FoldingReconcilerStrategy.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others
+ * Copyright (c) 2017, 2019 Red Hat Inc. and others
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -172,16 +172,18 @@
 					}
 					break;
 				case END_OF_LINE:
-					if (currentChar == '\n' || characters == currentCharIndex + 1) {
-						List<Integer> listOfAnnotationIndexes = startOfAnnotation.get(word);
-						int start = listOfAnnotationIndexes.get(0);
-						if (document.getLineOfOffset(start) != document.getLineOfOffset(currentCharIndex)) {
-							positions.add(new Position(start, currentCharIndex + 1 - start));
-						}
-						if (listOfAnnotationIndexes.size() > 0) {
-							listOfAnnotationIndexes.remove(0);
-						}else {
-							startOfAnnotation.remove(word);
+					if (startOfAnnotation.containsKey(word)) {
+						if (currentChar == '\n' || characters == currentCharIndex + 1) {
+							List<Integer> listOfAnnotationIndexes = startOfAnnotation.get(word);
+							int start = listOfAnnotationIndexes.get(0);
+							if (document.getLineOfOffset(start) != document.getLineOfOffset(currentCharIndex)) {
+								positions.add(new Position(start, currentCharIndex + 1 - start));
+							}
+							if (listOfAnnotationIndexes.size() > 0) {
+								listOfAnnotationIndexes.remove(0);
+							} else {
+								startOfAnnotation.remove(word);
+							}
 						}
 						searchingFor = SearchingFor.START_OF_TAG;
 					}
diff --git a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java
index faf998a..e46ad69 100644
--- a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java
+++ b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java
@@ -607,7 +607,7 @@
 		if (userAddedPlugins != null) {
 			for (String addedPlugin : userAddedPlugins) {
 				String[] pluginData = addedPlugin.split(":"); //$NON-NLS-1$
-				boolean checked = Boolean.valueOf(pluginData[3]).booleanValue();
+				boolean checked = Boolean.parseBoolean(pluginData[3]);
 				if (!onlyEnabled || checked) {
 					String id = pluginData[0];
 					String version = pluginData[1];
diff --git a/ui/org.eclipse.pde.ui.templates.tests/META-INF/MANIFEST.MF b/ui/org.eclipse.pde.ui.templates.tests/META-INF/MANIFEST.MF
index 12724bf..8ee78a4 100644
--- a/ui/org.eclipse.pde.ui.templates.tests/META-INF/MANIFEST.MF
+++ b/ui/org.eclipse.pde.ui.templates.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Tests for PDE templates
 Bundle-SymbolicName: org.eclipse.pde.ui.templates.tests
-Bundle-Version: 1.0.200.qualifier
+Bundle-Version: 1.0.300.qualifier
 Bundle-Vendor: Eclipse.org
 Bundle-ClassPath: tests.jar
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/ui/org.eclipse.pde.ui.templates.tests/pom.xml b/ui/org.eclipse.pde.ui.templates.tests/pom.xml
index 835e49b..11233e0 100644
--- a/ui/org.eclipse.pde.ui.templates.tests/pom.xml
+++ b/ui/org.eclipse.pde.ui.templates.tests/pom.xml
@@ -19,7 +19,7 @@
   </parent>
   <groupId>org.eclipse.pde</groupId>
   <artifactId>org.eclipse.pde.ui.templates.tests</artifactId>
-  <version>1.0.200-SNAPSHOT</version>
+  <version>1.0.300-SNAPSHOT</version>
   <packaging>eclipse-test-plugin</packaging>
 
   <properties>
diff --git a/ui/org.eclipse.pde.ui.templates.tests/src/org/eclipse/pde/ui/templates/tests/TestPDETemplates.java b/ui/org.eclipse.pde.ui.templates.tests/src/org/eclipse/pde/ui/templates/tests/TestPDETemplates.java
index 9346d3e..2783088 100644
--- a/ui/org.eclipse.pde.ui.templates.tests/src/org/eclipse/pde/ui/templates/tests/TestPDETemplates.java
+++ b/ui/org.eclipse.pde.ui.templates.tests/src/org/eclipse/pde/ui/templates/tests/TestPDETemplates.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others
+ * Copyright (c) 2017, 2019 Red Hat Inc. and others
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -24,6 +24,8 @@
 import org.eclipse.osgi.storage.BundleInfo.Generation;
 import org.eclipse.pde.core.target.*;
 import org.eclipse.pde.internal.core.ICoreConstants;
+import org.eclipse.pde.internal.core.builders.CompilerFlags;
+import org.eclipse.pde.internal.core.builders.PDEMarkerFactory;
 import org.eclipse.pde.internal.core.target.TargetPlatformService;
 import org.eclipse.pde.internal.ui.wizards.IProjectProvider;
 import org.eclipse.pde.internal.ui.wizards.WizardElement;
@@ -159,6 +161,12 @@
 		this.project.build(IncrementalProjectBuilder.FULL_BUILD, new NullProgressMonitor());
 
 		IMarker[] markers = this.project.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE);
+
+		// ignore missing package export marker
+		if (markers.length == 1 && CompilerFlags.P_MISSING_EXPORT_PKGS
+				.equals(markers[0].getAttribute(PDEMarkerFactory.compilerKey, ""))) {
+			markers = new IMarker[0];
+		}
 		if (markers.length > 0) {
 			System.out.println("Template '" + template.getLabel() + "' generates errors.");
 			for (IMarker marker : markers) {
diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/runtime/AbstractRegistryModelTest.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/runtime/AbstractRegistryModelTest.java
index e6f80c7..b004e4e 100644
--- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/runtime/AbstractRegistryModelTest.java
+++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/runtime/AbstractRegistryModelTest.java
@@ -92,7 +92,7 @@
 		testServiceReference = registration.getReference();

 

 		testExtPoint = Platform.getExtensionRegistry().getExtensionPoint(TEST_EXT_POINT);

-		testExtPointBundle = TestUtils.getBundle(TEST_EXT_POINT_BUNDLE);

+		testExtPointBundle = Platform.getBundle(TEST_EXT_POINT_BUNDLE);

 	}

 

 	@Override

diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/runtime/TestUtils.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/runtime/TestUtils.java
index 4a3314e..b05b944 100644
--- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/runtime/TestUtils.java
+++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/runtime/TestUtils.java
@@ -26,32 +26,11 @@
 import org.eclipse.pde.ui.tests.PDETestsPlugin;

 import org.eclipse.swt.widgets.Display;

 import org.junit.Assert;

-import org.osgi.framework.Bundle;

-import org.osgi.service.packageadmin.PackageAdmin;

 

 /**

  * Utility methods for JUnit tests.

  */

-@SuppressWarnings("deprecation")

-// We use package admin to access bundles during the tests

 public class TestUtils {

-

-	private static PackageAdmin packageAdmin;

-

-	public static Bundle getBundle(String symbolicName) {

-		if (packageAdmin == null) {

-			packageAdmin = PDETestsPlugin.getBundleContext()

-					.getService(PDETestsPlugin.getBundleContext().getServiceReference(PackageAdmin.class));

-		}

-		Bundle[] bundles = packageAdmin.getBundles(symbolicName, null);

-

-		if (bundles != null) {

-			return bundles[0];

-		}

-

-		return null;

-	}

-

 	public static IExtensionPoint getExtensionPoint(String extensionPointId) {

 		return Platform.getExtensionRegistry().getExtensionPoint(extensionPointId);

 	}

diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/IUBundleContainerTests.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/IUBundleContainerTests.java
index 85b9c81..2a8621c 100644
--- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/IUBundleContainerTests.java
+++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/IUBundleContainerTests.java
@@ -13,17 +13,16 @@
  *******************************************************************************/
 package org.eclipse.pde.ui.tests.target;
 
-import java.io.File;
+import java.io.*;
 import java.net.URI;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
 import org.eclipse.core.filesystem.URIUtil;
 import org.eclipse.core.runtime.*;
 import org.eclipse.equinox.frameworkadmin.BundleInfo;
-import org.eclipse.equinox.internal.p2.metadata.InstallableUnit;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
 import org.eclipse.equinox.p2.query.IQueryResult;
 import org.eclipse.equinox.p2.query.QueryUtil;
@@ -43,15 +42,6 @@
  * Tests for the IU bundle container
  */
 public class IUBundleContainerTests extends AbstractTargetTest {
-	protected File tempFile;
-
-	@Override
-	protected void tearDown() throws Exception {
-		if (tempFile != null) {
-			tempFile.delete();
-		}
-		super.tearDown();
-	}
 
 	/**
 	 * Returns the metadata repository at the specified location.
@@ -89,7 +79,7 @@
 	 */
 	protected IInstallableUnit getUnit(String id, IMetadataRepository repository) {
 		IQueryResult<IInstallableUnit> result = repository.query(QueryUtil.createIUQuery(id), null);
-		IInstallableUnit[] units  = result.toArray(IInstallableUnit.class);
+		IInstallableUnit[] units = result.toArray(IInstallableUnit.class);
 		if (units.length == 1) {
 			return units[0];
 		}
@@ -147,38 +137,6 @@
 	}
 
 	/**
-	 * P2TargetUtils should not consume much memory if all target definitions
-	 * are deleted
-	 */
-	public void testSynchronizerLeak() throws Exception {
-		ITargetPlatformService service = getTargetService();
-		URI[] uris = new URI[] { getURI("/tests/sites/site.a.b") };
-
-		long bundleCount = 0;
-		long memoryLimit = usedMemory() + 200_000_000;
-		for (int i = 0; i < 1000; i++) {
-			ITargetDefinition target = service.newTarget();
-			try {
-				IInstallableUnit[] units = new IInstallableUnit[10000];
-				for (int m = 0; m < units.length; m++) {
-					InstallableUnit unit = new InstallableUnit();
-					unit.setId("bundle.a" + (bundleCount++));
-					units[m] = unit;
-				}
-				IUBundleContainer container = createContainer(units, uris, 0);
-				target.setTargetLocations(new ITargetLocation[] { container });
-			} finally {
-				// Free up memory and disk used by target
-				service.deleteTarget(target.getHandle());
-				P2TargetUtils.cleanOrphanedTargetDefinitionProfiles();
-			}
-			// If we omit this assertion, further tests won't be executed due
-			// to VM fatal error
-			assertTrue("Memory should not be consumed if all targets are deleted", usedMemory() < memoryLimit);
-		}
-	}
-
-	/**
 	 * Tests all bundles are resolved for a single feature
 	 *
 	 * @throws Exception
@@ -296,11 +254,12 @@
 		IUBundleContainer container = createContainer(unitIds);
 		ITargetDefinition target = getTargetService().newTarget();
 		target.setTargetLocations(new ITargetLocation[]{container});
-		tempFile = File.createTempFile("targetDefinition", null);
-		ITextFileBuffer fileBuffer = getTextFileBufferFromFile(tempFile);
-		TargetDefinitionPersistenceHelper.persistXML(target, fileBuffer);
+
+		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+		TargetDefinitionPersistenceHelper.persistXML(target, outputStream);
 		ITargetDefinition definitionB = getTargetService().newTarget();
-		TargetDefinitionPersistenceHelper.initFromXML(definitionB, fileBuffer);
+		ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
+		TargetDefinitionPersistenceHelper.initFromXML(definitionB, inputStream);
 		assertTrue("Target content not equal",((TargetDefinition)target).isContentEqual(definitionB));
 
 		// resolve the restored target and ensure bundles are correct
@@ -555,12 +514,12 @@
 	public void deserializationTest(IUBundleContainer location) throws Exception {
 		ITargetDefinition td = getTargetService().newTarget();
 		td.setTargetLocations(new ITargetLocation[] {location});
-		tempFile = File.createTempFile("targetDefinition", null);
-		ITextFileBuffer fileBuffer = getTextFileBufferFromFile(tempFile);
-		TargetDefinitionPersistenceHelper.persistXML(td, fileBuffer);
+		ByteArrayOutputStream out = new ByteArrayOutputStream();
+		TargetDefinitionPersistenceHelper.persistXML(td, out);
+		String xml = new String(out.toByteArray());
 		DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
 		parser.setErrorHandler(new DefaultHandler());
-		Document doc = parser.parse(new InputSource(fileBuffer.getFileStore().openInputStream(0, null)));
+		Document doc = parser.parse(new InputSource(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8))));
 
 		ITargetDefinition definition = getTargetService().newTarget();
 		Element root = doc.getDocumentElement();
@@ -588,10 +547,4 @@
 		String actualValue = xml.substring(start, start + String.valueOf(expectedValue).length()) ;
 		assertEquals(String.valueOf(expectedValue), actualValue);
 	}
-
-	private long usedMemory() {
-		System.gc();
-		return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
-	}
-
 }
diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/LocalTargetDefinitionTests.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/LocalTargetDefinitionTests.java
index ce5c241..49e4c0c 100644
--- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/LocalTargetDefinitionTests.java
+++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/LocalTargetDefinitionTests.java
@@ -450,7 +450,9 @@
 		for (TargetBundle bundle : bundles) {
 			expected.remove(bundle.getBundleInfo().getSymbolicName());
 		}
-		for (String name : expected) {
+		Iterator<String> iterator = expected.iterator();
+		while (iterator.hasNext()) {
+			String name = iterator.next();
 			System.err.println("Missing: " + name);
 		}
 		assertTrue("Wrong bundles in JDT feature", expected.isEmpty());
@@ -500,7 +502,9 @@
 				}
 			}
 		}
-		for (String name : expected) {
+		Iterator<String> iterator = expected.iterator();
+		while (iterator.hasNext()) {
+			String name = iterator.next();
 			System.err.println("Missing: " + name);
 		}
 		assertTrue("Wrong bundles in JDT feature", expected.isEmpty());
@@ -613,7 +617,9 @@
 				expected.remove(model.getPluginBase().getId());
 				assertTrue(model.isEnabled());
 			}
-			for (String name : expected) {
+			Iterator<String> iterator = expected.iterator();
+			while (iterator.hasNext()) {
+				String name = iterator.next();
 				System.err.println("Missing: " + name);
 			}
 			assertTrue("Wrong bundles in target platform", expected.isEmpty());
@@ -657,7 +663,9 @@
 		URL url = PDETestsPlugin.getBundleContext().getBundle().getEntry("/tests/targets/target-files/" + name + ".target");
 		File file = new File(FileLocator.toFileURL(url).getFile());
 		ITargetDefinition target = getNewTarget();
-		TargetDefinitionPersistenceHelper.initFromXML(target, getTextFileBufferFromFile(file));
+		try (FileInputStream stream = new FileInputStream(file)) {
+			TargetDefinitionPersistenceHelper.initFromXML(target, stream);
+		}
 		return target;
 	}
 
diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/MinimalTargetDefinitionPersistenceTests.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/MinimalTargetDefinitionPersistenceTests.java
index c734620..66d6294 100644
--- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/MinimalTargetDefinitionPersistenceTests.java
+++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/MinimalTargetDefinitionPersistenceTests.java
@@ -13,12 +13,11 @@
  *******************************************************************************/
 package org.eclipse.pde.ui.tests.target;
 
-import java.io.File;
+import java.io.*;
 import java.net.*;
 import java.util.HashSet;
 import java.util.Set;
 import junit.framework.TestCase;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.*;
@@ -38,15 +37,6 @@
  *
  */
 public class MinimalTargetDefinitionPersistenceTests extends TestCase {
-	protected File tempFile;
-
-	@Override
-	protected void tearDown() throws Exception {
-		if (tempFile != null) {
-			tempFile.delete();
-		}
-		super.tearDown();
-	}
 
 	protected void assertTargetDefinitionsEqual(ITargetDefinition targetA, ITargetDefinition targetB) {
 		assertTrue("Target content not equal", ((TargetDefinition) targetA).isContentEqual(targetB));
@@ -185,11 +175,11 @@
 	 */
 	public void testPersistEmptyDefinition() throws Exception {
 		ITargetDefinition definitionA = getTargetService().newTarget();
-		tempFile = File.createTempFile("targetDefinition", null);
-		ITextFileBuffer fileBuffer = AbstractTargetTest.getTextFileBufferFromFile(tempFile);
-		TargetDefinitionPersistenceHelper.persistXML(definitionA, fileBuffer);
+		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+		TargetDefinitionPersistenceHelper.persistXML(definitionA, outputStream);
 		ITargetDefinition definitionB = getTargetService().newTarget();
-		TargetDefinitionPersistenceHelper.initFromXML(definitionB, fileBuffer);
+		ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
+		TargetDefinitionPersistenceHelper.initFromXML(definitionB, inputStream);
 		assertTargetDefinitionsEqual(definitionA, definitionB);
 	}
 
@@ -206,7 +196,9 @@
 				.getEntry("/tests/targets/target-files/" + name + ".trgt");
 		File file = new File(FileLocator.toFileURL(url).getFile());
 		ITargetDefinition target = getTargetService().newTarget();
-		TargetDefinitionPersistenceHelper.initFromXML(target, AbstractTargetTest.getTextFileBufferFromFile(file));
+		try (FileInputStream stream = new FileInputStream(file)) {
+			TargetDefinitionPersistenceHelper.initFromXML(target, stream);
+		}
 		return target;
 	}
 
diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/TargetDefinitionPersistenceTests.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/TargetDefinitionPersistenceTests.java
index df02f84..3074609 100644
--- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/TargetDefinitionPersistenceTests.java
+++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/TargetDefinitionPersistenceTests.java
@@ -13,21 +13,18 @@
  *******************************************************************************/
 package org.eclipse.pde.ui.tests.target;
 
-import static org.junit.Assert.assertArrayEquals;
-
-import java.io.File;
-import java.net.*;
-import java.nio.file.Files;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
+import java.io.*;
+import java.net.URI;
+import java.net.URISyntaxException;
 import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
 import org.eclipse.jdt.launching.JavaRuntime;
 import org.eclipse.pde.core.plugin.TargetPlatform;
 import org.eclipse.pde.core.target.*;
 import org.eclipse.pde.internal.core.target.IUBundleContainer;
 import org.eclipse.pde.internal.core.target.TargetDefinitionPersistenceHelper;
-import org.eclipse.pde.ui.tests.PDETestsPlugin;
 
 /**
  * Tests the persistence of target definitions.  Tests memento creation, reading of old target files, and writing of the model.
@@ -49,47 +46,18 @@
 		ITargetDefinition definitionA = getTargetService().newTarget();
 		initComplexDefiniton(definitionA);
 
-		tempFile = File.createTempFile("targetDefinition", null);
-		ITextFileBuffer fileBuffer = AbstractTargetTest.getTextFileBufferFromFile(tempFile);
-		TargetDefinitionPersistenceHelper.persistXML(definitionA, fileBuffer);
+		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+		TargetDefinitionPersistenceHelper.persistXML(definitionA, outputStream);
 		ITargetDefinition definitionB = getTargetService().newTarget();
-		TargetDefinitionPersistenceHelper.initFromXML(definitionB, fileBuffer);
+		ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
+		TargetDefinitionPersistenceHelper.initFromXML(definitionB, inputStream);
 
 		assertTargetDefinitionsEqual(definitionA, definitionB);
 	}
 
 	/**
-	 * Tests that a target definition file with a non system default line delimiters
-	 * can be deserialized and serialized back to xml without having it's line
-	 * delimiters changed.
-	 *
-	 * @throws Exception
-	 */
-	public void testPersistLineDelimiters() throws Exception {
-		String lineSeparator = System.getProperty("line.separator");
-		URL url;
-		if (!lineSeparator.equals("\n")) {
-			url = PDETestsPlugin.getBundleContext().getBundle()
-					.getEntry("/tests/targets/target-files/unixLineDelimiters.trgt");
-		} else {
-			url = PDETestsPlugin.getBundleContext().getBundle()
-					.getEntry("/tests/targets/target-files/windowsLineDelimiters.trgt");
-		}
-		File file = new File(FileLocator.toFileURL(url).getFile());
-		byte[] f1 = Files.readAllBytes(file.toPath());
-
-		ITextFileBuffer fileBuffer = AbstractTargetTest.getTextFileBufferFromFile(file);
-		ITargetDefinition target = getTargetService().newTarget();
-		TargetDefinitionPersistenceHelper.initFromXML(target, fileBuffer);
-		TargetDefinitionPersistenceHelper.persistXML(target, fileBuffer);
-		byte[] f2 = Files.readAllBytes(fileBuffer.getFileStore().toLocalFile(0, null).toPath());
-
-		assertArrayEquals(f1, f2);
-	}
-
-	/**
-	 * Tests that a complex workspace file based target definition can be serialized
-	 * to xml, then deserialized without any loss of data.
+	 * Tests that a complex workspace file based target definition can be
+	 * serialized to xml, then deserialized without any loss of data.
 	 *
 	 * @throws Exception
 	 */
diff --git a/ui/org.eclipse.pde.ui/plugin.properties b/ui/org.eclipse.pde.ui/plugin.properties
index 63b77fb..ccacf9e 100644
--- a/ui/org.eclipse.pde.ui/plugin.properties
+++ b/ui/org.eclipse.pde.ui/plugin.properties
@@ -52,26 +52,26 @@
 
 new.category.name=Plug-in Development
 new.pluginProject.name=Plug-in Project
-new.pluginProject.description=Create a Plug-in Project
+new.pluginProject.description=Create a plug-in project
 new.pluginWithJarsProject.name=Plug-in from Existing JAR Archives
 new.pluginWithJarsProject.description=Create a plug-in project from existing JAR archives
 new.fragmentProject.name=Fragment Project
-new.fragmentProject.description=Create a Plug-in Fragment Project
+new.fragmentProject.description=Create a plug-in fragment project
 new.schemaFile.name = Extension Point Schema
-new.schemaFile.description = Create an Extension Point Schema File
-new.cheat.sheet.description = Create a Cheat Sheet
+new.schemaFile.description = Create an extension point schema file
+new.cheat.sheet.description = Create a cheat sheet
 new.convert.name= Convert to Plug-in Projects...
 new.feature.name=Feature Project
-new.feature.description=Create a Feature project
+new.feature.description=Create a feature project
 new.patch.name=Feature Patch
-new.patch.description=Create a Feature Patch
+new.patch.description=Create a feature patch
 new.site.name=Update Site Project
-new.site.description=Create an Update Site project
+new.site.description=Create an update site project
 new.toc.name=Help Table of Contents
-new.toc.description=Create a Table of Contents
+new.toc.description=Create a table of contents
 new.ctxhelp.name=Context Help
-new.ctxhelp.description=Create a Context Help file
-new.categoryDefinition.description=Create a Category Definition file
+new.ctxhelp.description=Create a context help file
+new.categoryDefinition.description=Create a category definition file
 
 PluginImportWizard.label=Plug-ins and Fragments
 PluginImportWizard.description=Create projects from plug-ins and fragments in the file system.
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractManifestMarkerResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractManifestMarkerResolution.java
index 0940180..c766311 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractManifestMarkerResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractManifestMarkerResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.pde.core.IBaseModel;
 import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase;
 import org.eclipse.pde.internal.core.text.bundle.BundleModel;
@@ -23,6 +24,10 @@
 		super(type);
 	}
 
+	public AbstractManifestMarkerResolution(int type, IMarker marker) {
+		super(type, marker);
+	}
+
 	protected abstract void createChange(BundleModel model);
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractPDEMarkerResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractPDEMarkerResolution.java
index eea7af8..a6b8fff 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractPDEMarkerResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractPDEMarkerResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2017 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,10 +13,12 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import java.util.HashSet;
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.pde.core.IBaseModel;
+import org.eclipse.pde.internal.core.builders.PDEMarkerFactory;
 import org.eclipse.pde.internal.ui.PDEPluginImages;
 import org.eclipse.pde.internal.ui.util.ModelModification;
 import org.eclipse.pde.internal.ui.util.PDEModelUtility;
@@ -37,15 +39,31 @@
 	 * ie. its not the be used in getImage()/getType()/getDesciption()
 	 */
 	protected IResource fResource;
+	protected IMarker marker = null;
 
 	public AbstractPDEMarkerResolution(int type) {
 		fType = type;
 	}
 
+	public AbstractPDEMarkerResolution(int type, IMarker marker2) {
+		fType = type;
+		marker = marker2;
+	}
+
 	@Override
 	public IMarker[] findOtherMarkers(IMarker[] markers) {
-		return new IMarker[0];
+		HashSet<IMarker> mset = new HashSet<>(markers.length);
+		for (IMarker iMarker : markers) {
+			if (iMarker.equals(marker))
+				continue;
+			String str = iMarker.getAttribute(PDEMarkerFactory.compilerKey, ""); //$NON-NLS-1$
+			if (str.equals(marker.getAttribute(PDEMarkerFactory.compilerKey, ""))) //$NON-NLS-1$
+				mset.add(iMarker);
+		}
+		int size = mset.size();
+		return mset.toArray(new IMarker[size]);
 	}
+
 	@Override
 	public Image getImage() {
 		if (image == null) {
@@ -78,6 +96,7 @@
 
 	@Override
 	public void run(IMarker marker) {
+		this.marker = marker;
 		fResource = marker.getResource();
 		ModelModification modification = new ModelModification((IFile) marker.getResource()) {
 			@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractXMLMarkerResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractXMLMarkerResolution.java
index bfad172..9beb42f 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractXMLMarkerResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AbstractXMLMarkerResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -30,7 +30,7 @@
 	protected String fLocationPath;
 
 	public AbstractXMLMarkerResolution(int resolutionType, IMarker marker) {
-		super(resolutionType);
+		super(resolutionType, marker);
 		try {
 			fLocationPath = (String) marker.getAttribute(PDEMarkerFactory.MPK_LOCATION_PATH);
 		} catch (CoreException e) {
@@ -46,6 +46,10 @@
 	}
 
 	protected Object findNode(IPluginModelBase base) {
+		try {
+			fLocationPath = (String) marker.getAttribute(PDEMarkerFactory.MPK_LOCATION_PATH);
+		} catch (CoreException e) {
+		}
 		if (fLocationPath == null)
 			return null;
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddActivationHeaderResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddActivationHeaderResolution.java
index 8f1f3c2..b24463d 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddActivationHeaderResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddActivationHeaderResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2015 IBM Corporation and others.
+ * Copyright (c) 2008, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.ICoreConstants;
 import org.eclipse.pde.internal.core.TargetPlatformHelper;
@@ -27,13 +28,14 @@
 
 	String fHeader = null;
 
-	public AddActivationHeaderResolution(int type, String currentHeader) {
-		super(type);
+	public AddActivationHeaderResolution(int type, String currentHeader, IMarker marker) {
+		super(type, marker);
 		fHeader = currentHeader;
 	}
 
 	@Override
 	protected void createChange(BundleModel model) {
+		marker.getAttribute("header", ICoreConstants.ECLIPSE_AUTOSTART); //$NON-NLS-1$
 		IBundle bundle = model.getBundle();
 		IManifestHeader header = bundle.getManifestHeader(fHeader);
 		if (header instanceof LazyStartHeader) {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddActivationPolicyResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddActivationPolicyResolution.java
index 31e6032..6258959 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddActivationPolicyResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddActivationPolicyResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2015 Alex Blewitt and others.
+ * Copyright (c) 2015, 2019 Alex Blewitt and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.pde.internal.core.ibundle.IBundle;
 import org.eclipse.pde.internal.core.ibundle.IManifestHeader;
 import org.eclipse.pde.internal.core.text.bundle.Bundle;
@@ -22,8 +23,8 @@
 
 public class AddActivationPolicyResolution extends AbstractManifestMarkerResolution {
 
-	public AddActivationPolicyResolution(int type) {
-		super(type);
+	public AddActivationPolicyResolution(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddAutomaticModuleResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddAutomaticModuleResolution.java
index 3148a1e..306aa51 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddAutomaticModuleResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddAutomaticModuleResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2017 IBM Corporation and others.
+ *  Copyright (c) 2017, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -28,7 +28,7 @@
 	private IMarker mark;
 
 	public AddAutomaticModuleResolution(int type, IMarker marker) {
-		super(type);
+		super(type, marker);
 		mark = marker;
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBuildEntryResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBuildEntryResolution.java
index d8f0f22..cf365f5 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBuildEntryResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBuildEntryResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -16,6 +16,7 @@
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.internal.core.builders.PDEMarkerFactory;
 import org.eclipse.pde.internal.core.text.build.*;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
 
@@ -39,6 +40,11 @@
 	@Override
 	protected void createChange(Build build) {
 		try {
+			fEntry = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_ENTRY);
+			fToken = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_TOKEN);
+		} catch (CoreException e) {
+		}
+		try {
 			BuildModel buildModel = build.getModel();
 			if (buildModel.isStale()) {
 				buildModel.reconciled(buildModel.getDocument());
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBundleClassPathMarkerResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBundleClassPathMarkerResolution.java
index d991cef..09ce2db 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBundleClassPathMarkerResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBundleClassPathMarkerResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2015 IBM Corporation and others.
+ *  Copyright (c) 2007, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.ibundle.IBundle;
 import org.eclipse.pde.internal.core.text.bundle.*;
@@ -23,8 +24,8 @@
 
 	private String fValue;
 
-	public AddBundleClassPathMarkerResolution(int type, String value) {
-		super(type);
+	public AddBundleClassPathMarkerResolution(int type, String value, IMarker marker) {
+		super(type, marker);
 		this.fValue = value;
 	}
 
@@ -35,6 +36,7 @@
 
 	@Override
 	protected void createChange(BundleModel model) {
+		this.fValue = marker.getAttribute("entry", null) ;//$NON-NLS-1$
 		IBundle bundle = model.getBundle();
 		if (bundle instanceof Bundle) {
 			BundleClasspathHeader header = (BundleClasspathHeader) bundle.getManifestHeader(Constants.BUNDLE_CLASSPATH);
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBundleManifestVersionResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBundleManifestVersionResolution.java
index 612fa7f..f491ec1 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBundleManifestVersionResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddBundleManifestVersionResolution.java
@@ -1,11 +1,11 @@
 /*******************************************************************************

- * Copyright (c) 2011, 2015 IBM Corporation and others.

- *
+ * Copyright (c) 2011, 2019 IBM Corporation and others.

+ *

  * This program and the accompanying materials

  * are made available under the terms of the Eclipse Public License 2.0

  * which accompanies this distribution, and is available at

- * https://www.eclipse.org/legal/epl-2.0/
- *
+ * https://www.eclipse.org/legal/epl-2.0/

+ *

  * SPDX-License-Identifier: EPL-2.0

  *

  * Contributors:

@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;

 

+import org.eclipse.core.resources.IMarker;

 import org.eclipse.pde.internal.core.text.bundle.BundleModel;

 import org.eclipse.pde.internal.ui.PDEUIMessages;

 import org.osgi.framework.Constants;

@@ -23,8 +24,8 @@
  */

 public class AddBundleManifestVersionResolution extends AbstractManifestMarkerResolution {

 

-	public AddBundleManifestVersionResolution() {

-		super(AbstractPDEMarkerResolution.CREATE_TYPE);

+	public AddBundleManifestVersionResolution(IMarker marker) {

+		super(AbstractPDEMarkerResolution.CREATE_TYPE, marker);

 	}

 

 	@Override

diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddDefaultExecutionEnvironmentResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddDefaultExecutionEnvironmentResolution.java
index f96771b..55d671f 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddDefaultExecutionEnvironmentResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddDefaultExecutionEnvironmentResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2015 IBM Corporation and others.
+ *  Copyright (c) 2007, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.jdt.launching.JavaRuntime;
 import org.eclipse.jdt.launching.environments.IExecutionEnvironment;
 import org.eclipse.osgi.util.NLS;
@@ -27,13 +28,14 @@
 
 	private String id;
 
-	public AddDefaultExecutionEnvironmentResolution(int type, String id) {
-		super(type);
+	public AddDefaultExecutionEnvironmentResolution(int type, String id, IMarker marker) {
+		super(type, marker);
 		this.id = id;
 	}
 
 	@Override
 	protected void createChange(BundleModel model) {
+		id = this.marker.getAttribute("ee_id", null); //$NON-NLS-1$
 
 		IManifestHeader header = model.getBundle().getManifestHeader(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT);
 		if (header == null) {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddExportPackageMarkerResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddExportPackageMarkerResolution.java
index b911fa0..7ad6fd7 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddExportPackageMarkerResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddExportPackageMarkerResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2006, 2018 IBM Corporation and others.
+ *  Copyright (c) 2006, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,10 +13,8 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
-import java.util.HashSet;
 import java.util.regex.Pattern;
 import org.eclipse.core.resources.IMarker;
-import org.eclipse.pde.internal.core.builders.PDEMarkerFactory;
 import org.eclipse.pde.internal.core.ibundle.IBundle;
 import org.eclipse.pde.internal.core.text.bundle.*;
 import org.eclipse.pde.internal.core.util.PatternConstructor;
@@ -28,10 +26,9 @@
 public class AddExportPackageMarkerResolution extends AbstractManifestMarkerResolution {
 
 	private String fValues;
-	IMarker marker = null;
 
 	public AddExportPackageMarkerResolution(IMarker mark, int type, String values) {
-		super(type);
+		super(type, mark);
 		this.fValues = values;
 		this.marker = mark;
 	}
@@ -42,12 +39,6 @@
 	}
 
 	@Override
-	public void run(IMarker marker) {
-		this.marker = marker;
-		super.run(marker);
-	}
-
-	@Override
 	protected void createChange(BundleModel model) {
 		IBundle bundle = model.getBundle();
 		if (bundle instanceof Bundle) {
@@ -78,18 +69,4 @@
 		}
 	}
 
-	@Override
-	public IMarker[] findOtherMarkers(IMarker[] markers) {
-		HashSet<IMarker> mset = new HashSet<>(markers.length);
-		for (IMarker iMarker : markers) {
-			if (iMarker.equals(marker))
-				continue;
-			String str = iMarker.getAttribute(PDEMarkerFactory.compilerKey, ""); //$NON-NLS-1$
-			if (str.equals(marker.getAttribute(PDEMarkerFactory.compilerKey, ""))) //$NON-NLS-1$
-				mset.add(iMarker);
-		}
-		int size = mset.size();
-		return mset.toArray(new IMarker[size]);
-	}
-
 }
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddNewExtensionPointResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddNewExtensionPointResolution.java
index 11cb269..3a4a13b 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddNewExtensionPointResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddNewExtensionPointResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2015 IBM Corporation and others.
+ * Copyright (c) 2008, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.pde.core.IBaseModel;
 import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase;
@@ -25,8 +26,8 @@
 
 public class AddNewExtensionPointResolution extends AbstractPDEMarkerResolution {
 
-	public AddNewExtensionPointResolution(int type) {
-		super(type);
+	public AddNewExtensionPointResolution(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddNewExtensionResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddNewExtensionResolution.java
index 1fe5504..c56c137 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddNewExtensionResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddNewExtensionResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2015 IBM Corporation and others.
+ * Copyright (c) 2008, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.pde.core.IBaseModel;
 import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase;
@@ -25,8 +26,8 @@
 
 public class AddNewExtensionResolution extends AbstractPDEMarkerResolution {
 
-	public AddNewExtensionResolution(int type) {
-		super(type);
+	public AddNewExtensionResolution(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddSingletonToSymbolicName.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddSingletonToSymbolicName.java
index 68216f8..342ebdb 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddSingletonToSymbolicName.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddSingletonToSymbolicName.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.pde.internal.core.TargetPlatformHelper;
 import org.eclipse.pde.internal.core.ibundle.IBundle;
 import org.eclipse.pde.internal.core.ibundle.IManifestHeader;
@@ -24,8 +25,8 @@
 
 	private boolean fisDirective;
 
-	public AddSingletonToSymbolicName(int type, boolean directive) {
-		super(type);
+	public AddSingletonToSymbolicName(int type, boolean directive, IMarker marker) {
+		super(type, marker);
 		fisDirective = directive;
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddSourceBuildEntryResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddSourceBuildEntryResolution.java
index 88fe0f5..333671f 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddSourceBuildEntryResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddSourceBuildEntryResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -22,6 +22,7 @@
 import org.eclipse.pde.core.build.IBuildEntry;
 import org.eclipse.pde.internal.build.IBuildPropertiesConstants;
 import org.eclipse.pde.internal.core.builders.PDEBuilderHelper;
+import org.eclipse.pde.internal.core.builders.PDEMarkerFactory;
 import org.eclipse.pde.internal.core.text.build.Build;
 import org.eclipse.pde.internal.core.text.build.BuildEntry;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -40,6 +41,11 @@
 	@Override
 	protected void createChange(Build build) {
 		try {
+			fEntry = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_ENTRY);
+			fToken = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_TOKEN);
+		} catch (CoreException e) {
+		}
+		try {
 			BuildEntry buildEntry = (BuildEntry) build.getEntry(fEntry);
 			boolean unlistedOnly = true;
 			if (buildEntry == null) {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AppendSeperatorBuildEntryResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AppendSeperatorBuildEntryResolution.java
index 6c03f0f..1d04fd0 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AppendSeperatorBuildEntryResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AppendSeperatorBuildEntryResolution.java
@@ -16,6 +16,7 @@
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.internal.core.builders.PDEMarkerFactory;
 import org.eclipse.pde.internal.core.text.build.Build;
 import org.eclipse.pde.internal.core.text.build.BuildEntry;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -29,6 +30,11 @@
 	@Override
 	protected void createChange(Build build) {
 		try {
+			fEntry = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_ENTRY);
+			fToken = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_TOKEN);
+		} catch (CoreException e) {
+		}
+		try {
 			BuildEntry buildEntry = (BuildEntry) build.getEntry(fEntry);
 			buildEntry.renameToken(fToken, fToken + '/');
 		} catch (CoreException e) {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/BuildEntryMarkerResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/BuildEntryMarkerResolution.java
index a544807..2ec55c9 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/BuildEntryMarkerResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/BuildEntryMarkerResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -26,7 +26,7 @@
 	protected String fToken;
 
 	public BuildEntryMarkerResolution(int type, IMarker marker) {
-		super(type);
+		super(type, marker);
 		try {
 			fEntry = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_ENTRY);
 			fToken = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_TOKEN);
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ChooseManifestClassResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ChooseManifestClassResolution.java
index ea840a7..937e34a 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ChooseManifestClassResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ChooseManifestClassResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.jdt.ui.IJavaElementSearchConstants;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.ibundle.IManifestHeader;
@@ -24,8 +25,8 @@
 
 	private String fHeader;
 
-	public ChooseManifestClassResolution(int type, String headerName) {
-		super(type);
+	public ChooseManifestClassResolution(int type, String headerName, IMarker marker) {
+		super(type, marker);
 		fHeader = headerName;
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ConfigureProblemSeverityForPDECompilerResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ConfigureProblemSeverityForPDECompilerResolution.java
index d9b08ea..2a6a81b 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ConfigureProblemSeverityForPDECompilerResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ConfigureProblemSeverityForPDECompilerResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2017, 2018 IBM Corporation and others.
+ * Copyright (c) 2017, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -45,12 +45,10 @@
 public class ConfigureProblemSeverityForPDECompilerResolution extends AbstractManifestMarkerResolution
 		implements IJavaCompletionProposal, IMarkerResolutionRelevance {
 	private static final String CONFIGURE_PROBLEM_SEVERITY_DIALOG_ID = "configure_problem_severity_dialog_id_compiler"; //$NON-NLS-1$
-	IMarker marker = null;
 	String id = ""; //$NON-NLS-1$
 
 	public ConfigureProblemSeverityForPDECompilerResolution(IMarker mker, int type, String key) {
-		super(type);
-		marker = mker;
+		super(type, mker);
 		id = key;
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/CreateJREBundleHeaderResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/CreateJREBundleHeaderResolution.java
index 46e4f54..5965cd4 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/CreateJREBundleHeaderResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/CreateJREBundleHeaderResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -13,14 +13,15 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.pde.internal.core.ICoreConstants;
 import org.eclipse.pde.internal.core.text.bundle.BundleModel;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
 
 public class CreateJREBundleHeaderResolution extends AbstractManifestMarkerResolution {
 
-	public CreateJREBundleHeaderResolution(int type) {
-		super(type);
+	public CreateJREBundleHeaderResolution(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/CreateManifestClassResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/CreateManifestClassResolution.java
index fdbb4d6..6789edb 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/CreateManifestClassResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/CreateManifestClassResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.core.plugin.IPluginModelBase;
@@ -28,8 +29,8 @@
 
 	private String fHeader;
 
-	public CreateManifestClassResolution(int type, String headerName) {
-		super(type);
+	public CreateManifestClassResolution(int type, String headerName, IMarker marker) {
+		super(type, marker);
 		fHeader = headerName;
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/DeletePluginBaseResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/DeletePluginBaseResolution.java
index 075c4d0..96ad632 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/DeletePluginBaseResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/DeletePluginBaseResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2015 IBM Corporation and others.
+ * Copyright (c) 2008, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -29,8 +29,8 @@
 
 public class DeletePluginBaseResolution extends AbstractPDEMarkerResolution {
 
-	public DeletePluginBaseResolution(int type) {
-		super(type);
+	public DeletePluginBaseResolution(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ExternalizeResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ExternalizeResolution.java
index c1c259a..fef96d7 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ExternalizeResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ExternalizeResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -128,6 +128,11 @@
 		PDEModelUtility.modifyModel(modification, null);
 	}
 
+	@Override
+	public IMarker[] findOtherMarkers(IMarker[] markers) {
+		return new IMarker[0];
+	}
+
 	private void checkPropertiesFile(IFile file) {
 		if (!file.exists()) {
 			String propertiesFileComment = ExternalizeStringsOperation.getPropertiesFileComment(file);
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ExternalizeStringsResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ExternalizeStringsResolution.java
index c1ba345..ffc7654 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ExternalizeStringsResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ExternalizeStringsResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2018 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -24,16 +24,22 @@
 
 public class ExternalizeStringsResolution extends AbstractPDEMarkerResolution {
 
-	public ExternalizeStringsResolution(int type) {
-		super(type);
+	private boolean hasRun = false;
+
+	public ExternalizeStringsResolution(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
 	public void run(final IMarker marker) {
+		// even for multiple error markers, this wizard must be run only once
+		if (hasRun)
+			return;
 		BusyIndicator.showWhile(SWTUtil.getStandardDisplay(), () -> {
 			GetNonExternalizedStringsAction fGetExternAction = new GetNonExternalizedStringsAction();
 			IStructuredSelection selection = new StructuredSelection(marker.getResource().getProject());
 			fGetExternAction.runGetNonExternalizedStringsAction(selection);
+			hasRun = true;
 		});
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/NoLineTerminationResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/NoLineTerminationResolution.java
index 50b8b64..499b0eb 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/NoLineTerminationResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/NoLineTerminationResolution.java
@@ -1,11 +1,11 @@
 /*******************************************************************************

- *  Copyright (c) 2011, 2015 IBM Corporation and others.

- *
+ *  Copyright (c) 2011, 2019 IBM Corporation and others.

+ *

  *  This program and the accompanying materials

  *  are made available under the terms of the Eclipse Public License 2.0

  *  which accompanies this distribution, and is available at

- *  https://www.eclipse.org/legal/epl-2.0/
- *
+ *  https://www.eclipse.org/legal/epl-2.0/

+ *

  *  SPDX-License-Identifier: EPL-2.0

  *

  *  Contributors:

@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;

 

+import org.eclipse.core.resources.IMarker;

 import org.eclipse.jface.text.*;

 import org.eclipse.pde.internal.core.text.bundle.BundleModel;

 import org.eclipse.pde.internal.ui.PDEUIMessages;

@@ -28,8 +29,8 @@
 	 * @param type Either {@link AbstractPDEMarkerResolution#REMOVE_TYPE} to delete a whitespace only line

 	 * or {@link AbstractPDEMarkerResolution#CREATE_TYPE} to add a new line

 	 */

-	public NoLineTerminationResolution(int type) {

-		super(type);

+	public NoLineTerminationResolution(int type, IMarker marker) {

+		super(type, marker);

 	}

 

 	/**

diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OptionalImportPackageResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OptionalImportPackageResolution.java
index 0cef825..4f8d84a 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OptionalImportPackageResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OptionalImportPackageResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.text.bundle.*;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -22,13 +23,14 @@
 
 	private String fPackageName;
 
-	public OptionalImportPackageResolution(int type, String packageName) {
-		super(type);
+	public OptionalImportPackageResolution(int type, String packageName, IMarker marker) {
+		super(type, marker);
 		fPackageName = packageName;
 	}
 
 	@Override
 	protected void createChange(BundleModel model) {
+		fPackageName = marker.getAttribute("packageName", (String) null); //$NON-NLS-1$
 		Bundle bundle = (Bundle) model.getBundle();
 		ImportPackageHeader header = (ImportPackageHeader) bundle.getManifestHeader(Constants.IMPORT_PACKAGE);
 		if (header != null) {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OptionalRequireBundleResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OptionalRequireBundleResolution.java
index 265ab9a..0496196 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OptionalRequireBundleResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OptionalRequireBundleResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.text.bundle.*;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -22,13 +23,14 @@
 
 	private String fBundleId;
 
-	public OptionalRequireBundleResolution(int type, String bundleId) {
-		super(type);
+	public OptionalRequireBundleResolution(int type, String bundleId, IMarker marker) {
+		super(type, marker);
 		fBundleId = bundleId;
 	}
 
 	@Override
 	protected void createChange(BundleModel model) {
+		fBundleId= marker.getAttribute("bundleId", (String) null); //$NON-NLS-1$
 		Bundle bundle = (Bundle) model.getBundle();
 		RequireBundleHeader header = (RequireBundleHeader) bundle.getManifestHeader(Constants.REQUIRE_BUNDLE);
 		if (header != null) {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeExportPackageResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeExportPackageResolution.java
index 724472d..7713ea7 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeExportPackageResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeExportPackageResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,14 +13,15 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.pde.internal.core.text.bundle.BundleModel;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
 import org.eclipse.pde.internal.ui.wizards.tools.OrganizeManifest;
 
 public class OrganizeExportPackageResolution extends AbstractManifestMarkerResolution {
 
-	public OrganizeExportPackageResolution(int type) {
-		super(type);
+	public OrganizeExportPackageResolution(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeImportPackageResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeImportPackageResolution.java
index a00af87..1f93d32 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeImportPackageResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeImportPackageResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.pde.internal.core.text.bundle.BundleModel;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
 import org.eclipse.pde.internal.ui.wizards.tools.OrganizeManifest;
@@ -21,8 +22,8 @@
 
 	private boolean fRemoveImports;
 
-	public OrganizeImportPackageResolution(int type, boolean removeImports) {
-		super(type);
+	public OrganizeImportPackageResolution(int type, boolean removeImports, IMarker marker) {
+		super(type, marker);
 		fRemoveImports = removeImports;
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeRequireBundleResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeRequireBundleResolution.java
index aa5bbb1..20f7beb 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeRequireBundleResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/OrganizeRequireBundleResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.pde.internal.core.text.bundle.BundleModel;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
 import org.eclipse.pde.internal.ui.wizards.tools.OrganizeManifest;
@@ -21,8 +22,8 @@
 
 	private boolean fRemoveImports;
 
-	public OrganizeRequireBundleResolution(int type, boolean removeImports) {
-		super(type);
+	public OrganizeRequireBundleResolution(int type, boolean removeImports, IMarker marker) {
+		super(type, marker);
 		fRemoveImports = removeImports;
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveBuildEntryResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveBuildEntryResolution.java
index fd3f5d2..80b533d 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveBuildEntryResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveBuildEntryResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -16,6 +16,7 @@
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.internal.core.builders.PDEMarkerFactory;
 import org.eclipse.pde.internal.core.text.build.Build;
 import org.eclipse.pde.internal.core.text.build.BuildEntry;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -36,6 +37,11 @@
 	@Override
 	protected void createChange(Build build) {
 		try {
+			fEntry = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_ENTRY);
+			fToken = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_TOKEN);
+		} catch (CoreException e) {
+		}
+		try {
 			BuildEntry buildEntry = (BuildEntry) build.getEntry(fEntry);
 			if (buildEntry == null)
 				return;
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveExportPackageResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveExportPackageResolution.java
index 5bb0ae0..08ca783 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveExportPackageResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveExportPackageResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.text.bundle.*;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -22,13 +23,14 @@
 
 	String fPackage;
 
-	public RemoveExportPackageResolution(int type, String pkgName) {
-		super(type);
+	public RemoveExportPackageResolution(int type, String pkgName, IMarker marker) {
+		super(type, marker);
 		fPackage = pkgName;
 	}
 
 	@Override
 	protected void createChange(BundleModel model) {
+		fPackage = marker.getAttribute("packageName", (String) null); //$NON-NLS-1$
 		Bundle bundle = (Bundle) model.getBundle();
 		ExportPackageHeader header = (ExportPackageHeader) bundle.getManifestHeader(Constants.EXPORT_PACKAGE);
 		if (header != null)
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveImportExportServicesResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveImportExportServicesResolution.java
index 7d375dd..396ba56 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveImportExportServicesResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveImportExportServicesResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2006, 2015 IBM Corporation and others.
+ *  Copyright (c) 2006, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.ibundle.IManifestHeader;
 import org.eclipse.pde.internal.core.text.bundle.Bundle;
@@ -23,8 +24,8 @@
 
 	String fServiceHeader;
 
-	public RemoveImportExportServicesResolution(int type, String serviceHeader) {
-		super(type);
+	public RemoveImportExportServicesResolution(int type, String serviceHeader, IMarker marker) {
+		super(type, marker);
 		fServiceHeader = serviceHeader;
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveImportPackageResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveImportPackageResolution.java
index cc2fad7..450f856 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveImportPackageResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveImportPackageResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.text.bundle.*;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -22,13 +23,14 @@
 
 	private String fPkgName;
 
-	public RemoveImportPackageResolution(int type, String packageName) {
-		super(type);
+	public RemoveImportPackageResolution(int type, String packageName, IMarker marker) {
+		super(type, marker);
 		fPkgName = packageName;
 	}
 
 	@Override
 	protected void createChange(BundleModel model) {
+		fPkgName = marker.getAttribute("packageName", (String) null); //$NON-NLS-1$
 		Bundle bundle = (Bundle) model.getBundle();
 		ImportPackageHeader header = (ImportPackageHeader) bundle.getManifestHeader(Constants.IMPORT_PACKAGE);
 		if (header != null)
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveInternalDirectiveEntryResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveInternalDirectiveEntryResolution.java
index 19be364..448b481 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveInternalDirectiveEntryResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveInternalDirectiveEntryResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2006, 2015 IBM Corporation and others.
+ *  Copyright (c) 2006, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.pde.internal.core.ibundle.IManifestHeader;
 import org.eclipse.pde.internal.core.text.bundle.*;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -22,13 +23,14 @@
 
 	private String fPackageName;
 
-	public RemoveInternalDirectiveEntryResolution(int type, String packageName) {
-		super(type);
+	public RemoveInternalDirectiveEntryResolution(int type, String packageName, IMarker marker) {
+		super(type, marker);
 		fPackageName = packageName;
 	}
 
 	@Override
 	protected void createChange(BundleModel model) {
+		fPackageName= marker.getAttribute("packageName", (String) null); //$NON-NLS-1$
 		IManifestHeader header = model.getBundle().getManifestHeader(Constants.EXPORT_PACKAGE);
 		if (header instanceof ExportPackageHeader) {
 			ExportPackageObject exportedPackage = ((ExportPackageHeader) header).getPackage(fPackageName);
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveLazyLoadingDirectiveResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveLazyLoadingDirectiveResolution.java
index 7da2d30..d568a65 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveLazyLoadingDirectiveResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveLazyLoadingDirectiveResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2015 IBM Corporation and others.
+ * Copyright (c) 2008, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,8 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.pde.internal.core.ICoreConstants;
 import org.eclipse.pde.internal.core.text.bundle.BundleModel;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
 
@@ -21,13 +23,14 @@
 
 	private String fHeader = null;
 
-	public RemoveLazyLoadingDirectiveResolution(int type, String currentHeader) {
-		super(type);
+	public RemoveLazyLoadingDirectiveResolution(int type, String currentHeader, IMarker marker) {
+		super(type, marker);
 		fHeader = currentHeader;
 	}
 
 	@Override
 	protected void createChange(BundleModel model) {
+		fHeader = marker.getAttribute("header", ICoreConstants.ECLIPSE_LAZYSTART) ;//$NON-NLS-1$
 		model.getBundle().setHeader(fHeader, null);
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveRequireBundleResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveRequireBundleResolution.java
index feedb25..c2cee3a 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveRequireBundleResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveRequireBundleResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.text.bundle.*;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -22,13 +23,14 @@
 
 	private String fBundleId;
 
-	public RemoveRequireBundleResolution(int type, String bundleID) {
-		super(type);
+	public RemoveRequireBundleResolution(int type, String bundleID, IMarker marker) {
+		super(type, marker);
 		fBundleId = bundleID;
 	}
 
 	@Override
 	protected void createChange(BundleModel model) {
+		fBundleId = marker.getAttribute("bundleId", null); //$NON-NLS-1$
 		Bundle bundle = (Bundle) model.getBundle();
 		RequireBundleHeader header = (RequireBundleHeader) bundle.getManifestHeader(Constants.REQUIRE_BUNDLE);
 		if (header != null)
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveSeperatorBuildEntryResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveSeperatorBuildEntryResolution.java
index de605be..7992c53 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveSeperatorBuildEntryResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveSeperatorBuildEntryResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -16,6 +16,7 @@
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.internal.core.builders.PDEMarkerFactory;
 import org.eclipse.pde.internal.core.text.build.Build;
 import org.eclipse.pde.internal.core.text.build.BuildEntry;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -29,6 +30,11 @@
 	@Override
 	protected void createChange(Build build) {
 		try {
+			fEntry = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_ENTRY);
+			fToken = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_TOKEN);
+		} catch (CoreException e) {
+		}
+		try {
 			BuildEntry buildEntry = (BuildEntry) build.getEntry(fEntry);
 			buildEntry.renameToken(fToken, fToken.substring(0, fToken.length() - 1));
 		} catch (CoreException e) {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveStaticProjectReferences.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveStaticProjectReferences.java
index f13c5a4..bfc27e2 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveStaticProjectReferences.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveStaticProjectReferences.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -20,8 +20,8 @@
 
 public class RemoveStaticProjectReferences extends AbstractPDEMarkerResolution {
 
-	public RemoveStaticProjectReferences(int type) {
-		super(type);
+	public RemoveStaticProjectReferences(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveUnknownExecEnvironments.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveUnknownExecEnvironments.java
index 2d9a936..88202a2 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveUnknownExecEnvironments.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RemoveUnknownExecEnvironments.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.jdt.launching.JavaRuntime;
 import org.eclipse.jdt.launching.environments.IExecutionEnvironment;
 import org.eclipse.pde.internal.core.ibundle.IManifestHeader;
@@ -22,8 +23,8 @@
 
 public class RemoveUnknownExecEnvironments extends AbstractManifestMarkerResolution {
 
-	public RemoveUnknownExecEnvironments(int type) {
-		super(type);
+	public RemoveUnknownExecEnvironments(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RenameProvidePackageResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RenameProvidePackageResolution.java
index b47a1b8..4acceba 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RenameProvidePackageResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/RenameProvidePackageResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2015 IBM Corporation and others.
+ *  Copyright (c) 2007, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.pde.internal.core.ICoreConstants;
 import org.eclipse.pde.internal.core.text.bundle.BundleModel;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -21,8 +22,8 @@
 
 public class RenameProvidePackageResolution extends AbstractManifestMarkerResolution {
 
-	public RenameProvidePackageResolution(int type) {
-		super(type);
+	public RenameProvidePackageResolution(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ReplaceBuildEntryResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ReplaceBuildEntryResolution.java
index 692b8fe..b00a84a 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ReplaceBuildEntryResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ReplaceBuildEntryResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2009, 2015 IBM Corporation and others.
+ *  Copyright (c) 2009, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -16,6 +16,7 @@
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.internal.core.builders.PDEMarkerFactory;
 import org.eclipse.pde.internal.core.text.build.Build;
 import org.eclipse.pde.internal.core.text.build.BuildEntry;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -34,6 +35,11 @@
 	@Override
 	protected void createChange(Build build) {
 		try {
+			fEntry = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_ENTRY);
+			fToken = (String) marker.getAttribute(PDEMarkerFactory.BK_BUILD_TOKEN);
+		} catch (CoreException e) {
+		}
+		try {
 			BuildEntry buildEntry = (BuildEntry) build.getEntry(fEntry);
 			if (buildEntry == null)
 				return;
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ResolutionGenerator.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ResolutionGenerator.java
index 94b4771..49c75e2 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ResolutionGenerator.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ResolutionGenerator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2018 IBM Corporation and others.
+ * Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -53,18 +53,18 @@
 			case PDEMarkerFactory.M_DEPRECATED_AUTOSTART :
 				// if targetVersion <= 3.3, we can add Eclipse-LazyStart header even if previous header's value was false.  We can't do this for 3.4+ since Bundle-AcativationPolicy does not have a "false" value.
 				if (marker.getAttribute(PDEMarkerFactory.ATTR_CAN_ADD, true) || TargetPlatformHelper.getTargetVersion() <= 3.3)
-					return new IMarkerResolution[] {new UpdateActivationResolution(AbstractPDEMarkerResolution.RENAME_TYPE, marker.getAttribute(PDEMarkerFactory.ATTR_HEADER, ICoreConstants.ECLIPSE_AUTOSTART)), new AddActivationHeaderResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker.getAttribute("header", ICoreConstants.ECLIPSE_AUTOSTART))}; //$NON-NLS-1$
-				return new IMarkerResolution[] {new UpdateActivationResolution(AbstractPDEMarkerResolution.RENAME_TYPE, marker.getAttribute(PDEMarkerFactory.ATTR_HEADER, ICoreConstants.ECLIPSE_AUTOSTART))};
+					return new IMarkerResolution[] {new UpdateActivationResolution(AbstractPDEMarkerResolution.RENAME_TYPE, marker.getAttribute(PDEMarkerFactory.ATTR_HEADER, ICoreConstants.ECLIPSE_AUTOSTART),marker), new AddActivationHeaderResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker.getAttribute("header", ICoreConstants.ECLIPSE_AUTOSTART), marker)}; //$NON-NLS-1$
+				return new IMarkerResolution[] {new UpdateActivationResolution(AbstractPDEMarkerResolution.RENAME_TYPE, marker.getAttribute(PDEMarkerFactory.ATTR_HEADER, ICoreConstants.ECLIPSE_AUTOSTART), marker)};
 			case PDEMarkerFactory.M_JAVA_PACKAGE__PORTED :
-				return new IMarkerResolution[] {new CreateJREBundleHeaderResolution(AbstractPDEMarkerResolution.CREATE_TYPE)};
+				return new IMarkerResolution[] {new CreateJREBundleHeaderResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker)};
 			case PDEMarkerFactory.M_SINGLETON_DIR_NOT_SET :
-				return new IMarkerResolution[] {new AddSingletonToSymbolicName(AbstractPDEMarkerResolution.RENAME_TYPE, true)};
+				return new IMarkerResolution[] {new AddSingletonToSymbolicName(AbstractPDEMarkerResolution.RENAME_TYPE, true, marker)};
 			case PDEMarkerFactory.M_SINGLETON_ATT_NOT_SET :
-				return new IMarkerResolution[] {new AddSingletonToSymbolicName(AbstractPDEMarkerResolution.RENAME_TYPE, false)};
+				return new IMarkerResolution[] {new AddSingletonToSymbolicName(AbstractPDEMarkerResolution.RENAME_TYPE, false,marker)};
 			case PDEMarkerFactory.M_SINGLETON_DIR_NOT_SUPPORTED :
-				return new IMarkerResolution[] {new UnsupportedSingletonDirectiveResolution(AbstractPDEMarkerResolution.RENAME_TYPE)};
+				return new IMarkerResolution[] {new UnsupportedSingletonDirectiveResolution(AbstractPDEMarkerResolution.RENAME_TYPE, marker)};
 			case PDEMarkerFactory.M_PROJECT_BUILD_ORDER_ENTRIES :
-				return new IMarkerResolution[] {new RemoveStaticProjectReferences(AbstractPDEMarkerResolution.REMOVE_TYPE)};
+				return new IMarkerResolution[] {new RemoveStaticProjectReferences(AbstractPDEMarkerResolution.REMOVE_TYPE, marker)};
 			case PDEMarkerFactory.M_EXPORT_PKG_NOT_EXIST :
 				return getUnresolvedExportProposals(marker);
 			case PDEMarkerFactory.M_IMPORT_PKG_NOT_AVAILABLE :
@@ -72,21 +72,21 @@
 			case PDEMarkerFactory.M_REQ_BUNDLE_NOT_AVAILABLE :
 				return getUnresolvedBundle(marker);
 			case PDEMarkerFactory.M_UNKNOWN_ACTIVATOR :
-				return new IMarkerResolution[] {new CreateManifestClassResolution(AbstractPDEMarkerResolution.CREATE_TYPE, Constants.BUNDLE_ACTIVATOR), new ChooseManifestClassResolution(AbstractPDEMarkerResolution.RENAME_TYPE, Constants.BUNDLE_ACTIVATOR)};
+				return new IMarkerResolution[] {new CreateManifestClassResolution(AbstractPDEMarkerResolution.CREATE_TYPE, Constants.BUNDLE_ACTIVATOR, marker), new ChooseManifestClassResolution(AbstractPDEMarkerResolution.RENAME_TYPE, Constants.BUNDLE_ACTIVATOR, marker)};
 			case PDEMarkerFactory.M_UNKNOWN_CLASS :
-				return new IMarkerResolution[] {new CreateManifestClassResolution(AbstractPDEMarkerResolution.CREATE_TYPE, ICoreConstants.PLUGIN_CLASS), new ChooseManifestClassResolution(AbstractPDEMarkerResolution.RENAME_TYPE, ICoreConstants.PLUGIN_CLASS)};
+				return new IMarkerResolution[] {new CreateManifestClassResolution(AbstractPDEMarkerResolution.CREATE_TYPE, ICoreConstants.PLUGIN_CLASS, marker), new ChooseManifestClassResolution(AbstractPDEMarkerResolution.RENAME_TYPE, ICoreConstants.PLUGIN_CLASS, marker)};
 			case PDEMarkerFactory.M_DIRECTIVE_HAS_NO_EFFECT :
 				return getRemoveInternalDirectiveResolution(marker);
 			case PDEMarkerFactory.M_MISMATCHED_EXEC_ENV :
-				return new IMarkerResolution[] {new UpdateClasspathResolution(AbstractPDEMarkerResolution.RENAME_TYPE)};
+				return new IMarkerResolution[] {new UpdateClasspathResolution(AbstractPDEMarkerResolution.RENAME_TYPE, marker)};
 			case PDEMarkerFactory.M_UNKNOW_EXEC_ENV :
-				return new IMarkerResolution[] {new RemoveUnknownExecEnvironments(AbstractPDEMarkerResolution.REMOVE_TYPE)};
+				return new IMarkerResolution[] {new RemoveUnknownExecEnvironments(AbstractPDEMarkerResolution.REMOVE_TYPE,marker)};
 			case PDEMarkerFactory.M_DEPRECATED_IMPORT_SERVICE :
-				return new IMarkerResolution[] {new RemoveImportExportServicesResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, ICoreConstants.IMPORT_SERVICE)};
+				return new IMarkerResolution[] {new RemoveImportExportServicesResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, ICoreConstants.IMPORT_SERVICE, marker)};
 			case PDEMarkerFactory.M_DEPRECATED_EXPORT_SERVICE :
-				return new IMarkerResolution[] {new RemoveImportExportServicesResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, ICoreConstants.EXPORT_SERVICE)};
+				return new IMarkerResolution[] {new RemoveImportExportServicesResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, ICoreConstants.EXPORT_SERVICE, marker)};
 			case PDEMarkerFactory.M_UNECESSARY_DEP :
-				return new IMarkerResolution[] {new RemoveRequireBundleResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, marker.getAttribute("bundleId", null))}; //$NON-NLS-1$
+				return new IMarkerResolution[] {new RemoveRequireBundleResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, marker.getAttribute("bundleId", null), marker)}; //$NON-NLS-1$
 			case PDEMarkerFactory.M_MISSING_EXPORT_PKGS :
 				return new IMarkerResolution[] { new AddExportPackageMarkerResolution(marker,AbstractPDEMarkerResolution.CREATE_TYPE, marker.getAttribute("packages", null)) }; //$NON-NLS-1$
 			case PDEMarkerFactory.B_REMOVE_SLASH_FILE_ENTRY :
@@ -106,29 +106,29 @@
 			case PDEMarkerFactory.P_ILLEGAL_XML_NODE :
 				return new IMarkerResolution[] {new RemoveNodeXMLResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, marker)};
 			case PDEMarkerFactory.P_UNTRANSLATED_NODE :
-				return new IMarkerResolution[] {new ExternalizeResolution(AbstractPDEMarkerResolution.RENAME_TYPE, marker), new ExternalizeStringsResolution(AbstractPDEMarkerResolution.RENAME_TYPE)};
+				return new IMarkerResolution[] {new ExternalizeResolution(AbstractPDEMarkerResolution.RENAME_TYPE, marker), new ExternalizeStringsResolution(AbstractPDEMarkerResolution.RENAME_TYPE, marker)};
 			case PDEMarkerFactory.P_UNKNOWN_CLASS :
 				return new IMarkerResolution[] {new CreateClassXMLResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker), new ChooseClassXMLResolution(AbstractPDEMarkerResolution.RENAME_TYPE, marker)};
 			case PDEMarkerFactory.P_USELESS_FILE :
-				return new IMarkerResolution[] {new DeletePluginBaseResolution(AbstractPDEMarkerResolution.REMOVE_TYPE), new AddNewExtensionResolution(AbstractPDEMarkerResolution.CREATE_TYPE), new AddNewExtensionPointResolution(AbstractPDEMarkerResolution.CREATE_TYPE)};
+				return new IMarkerResolution[] {new DeletePluginBaseResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, marker), new AddNewExtensionResolution(AbstractPDEMarkerResolution.CREATE_TYPE,marker), new AddNewExtensionPointResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker)};
 			case PDEMarkerFactory.M_DEPRECATED_PROVIDE_PACKAGE :
-				return new IMarkerResolution[] {new RenameProvidePackageResolution(AbstractPDEMarkerResolution.RENAME_TYPE)};
+				return new IMarkerResolution[] {new RenameProvidePackageResolution(AbstractPDEMarkerResolution.RENAME_TYPE,marker)};
 			case PDEMarkerFactory.M_EXECUTION_ENVIRONMENT_NOT_SET :
-				return new IMarkerResolution[] {new AddDefaultExecutionEnvironmentResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker.getAttribute("ee_id", null))}; //$NON-NLS-1$
+				return new IMarkerResolution[] {new AddDefaultExecutionEnvironmentResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker.getAttribute("ee_id", null),marker)}; //$NON-NLS-1$
 			case PDEMarkerFactory.M_MISSING_BUNDLE_CLASSPATH_ENTRY :
-				return new IMarkerResolution[] {new AddBundleClassPathMarkerResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker.getAttribute("entry", null))}; //$NON-NLS-1$
+				return new IMarkerResolution[] {new AddBundleClassPathMarkerResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker.getAttribute("entry", null), marker)}; //$NON-NLS-1$
 			case PDEMarkerFactory.M_LAZYLOADING_HAS_NO_EFFECT :
-				return new IMarkerResolution[] {new RemoveLazyLoadingDirectiveResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, marker.getAttribute("header", ICoreConstants.ECLIPSE_LAZYSTART))}; //$NON-NLS-1$
+				return new IMarkerResolution[] {new RemoveLazyLoadingDirectiveResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, marker.getAttribute("header", ICoreConstants.ECLIPSE_LAZYSTART), marker)}; //$NON-NLS-1$
 			case PDEMarkerFactory.M_NO_LINE_TERMINATION :
 				if (marker.getAttribute(PDEMarkerFactory.ATTR_HAS_CONTENT, true)) {
-					return new IMarkerResolution[] {new NoLineTerminationResolution(AbstractPDEMarkerResolution.CREATE_TYPE)};
+					return new IMarkerResolution[] {new NoLineTerminationResolution(AbstractPDEMarkerResolution.CREATE_TYPE,marker)};
 				}
-				return new IMarkerResolution[] {new NoLineTerminationResolution(AbstractPDEMarkerResolution.REMOVE_TYPE)};
+				return new IMarkerResolution[] {new NoLineTerminationResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, marker)};
 			case PDEMarkerFactory.M_R4_SYNTAX_IN_R3_BUNDLE :
-				return new IMarkerResolution[] {new AddBundleManifestVersionResolution()};
+				return new IMarkerResolution[] {new AddBundleManifestVersionResolution(marker)};
 		case PDEMarkerFactory.M_SERVICECOMPONENT_MISSING_LAZY:
 			return new IMarkerResolution[] {
-					new AddActivationPolicyResolution(AbstractPDEMarkerResolution.CREATE_TYPE) };
+					new AddActivationPolicyResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker) };
 		case PDEMarkerFactory.M_NO_AUTOMATIC_MODULE:
 			return new IMarkerResolution[] {
 					new AddAutomaticModuleResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker) };
@@ -187,7 +187,7 @@
 		if (packageName != null) {
 			IResource res = marker.getResource();
 			if (res != null)
-				return new IMarkerResolution[] {new RemoveInternalDirectiveEntryResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, packageName)};
+				return new IMarkerResolution[] {new RemoveInternalDirectiveEntryResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, packageName,marker)};
 		}
 		return NO_RESOLUTIONS;
 	}
@@ -197,7 +197,7 @@
 		if (packageName != null) {
 			IResource res = marker.getResource();
 			if (res != null)
-				return new IMarkerResolution[] {new RemoveExportPackageResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, packageName)};
+				return new IMarkerResolution[] {new RemoveExportPackageResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, packageName, marker)};
 		}
 		return NO_RESOLUTIONS;
 	}
@@ -209,9 +209,9 @@
 
 		boolean optionalPkg = marker.getAttribute("optional", false); //$NON-NLS-1$
 		if (optionalPkg)
-			return new IMarkerResolution[] {new RemoveImportPackageResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, packageName), new ConfigureTargetPlatformResolution()};
+			return new IMarkerResolution[] {new RemoveImportPackageResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, packageName, marker), new ConfigureTargetPlatformResolution()};
 
-		return new IMarkerResolution[] {new RemoveImportPackageResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, packageName), new OptionalImportPackageResolution(AbstractPDEMarkerResolution.RENAME_TYPE, packageName), new ConfigureTargetPlatformResolution()};
+		return new IMarkerResolution[] {new RemoveImportPackageResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, packageName, marker), new OptionalImportPackageResolution(AbstractPDEMarkerResolution.RENAME_TYPE, packageName, marker), new ConfigureTargetPlatformResolution()};
 	}
 
 	private IMarkerResolution[] getUnresolvedBundle(IMarker marker) {
@@ -221,12 +221,12 @@
 
 		boolean optionalBundle = marker.getAttribute("optional", false); //$NON-NLS-1$
 		if (optionalBundle) {
-			return new IMarkerResolution[] {new RemoveRequireBundleResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, bundleId), new ConfigureTargetPlatformResolution()};
+			return new IMarkerResolution[] {new RemoveRequireBundleResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, bundleId, marker), new ConfigureTargetPlatformResolution()};
 		}
 
 		//		IPreferenceStore store = PDEPlugin.getDefault().getPreferenceStore();
 		//		boolean removeImports = store.getString(IPreferenceConstants.PROP_RESOLVE_IMPORTS).equals(IPreferenceConstants.VALUE_REMOVE_IMPORT);
-		return new IMarkerResolution[] {new RemoveRequireBundleResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, bundleId), new OptionalRequireBundleResolution(AbstractPDEMarkerResolution.RENAME_TYPE, bundleId), new ConfigureTargetPlatformResolution()
+		return new IMarkerResolution[] {new RemoveRequireBundleResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, bundleId, marker), new OptionalRequireBundleResolution(AbstractPDEMarkerResolution.RENAME_TYPE, bundleId, marker), new ConfigureTargetPlatformResolution()
 		//				new OrganizeRequireBundleResolution(AbstractPDEMarkerResolution.RENAME_TYPE, removeImports)
 		};
 	}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UnsupportedSingletonDirectiveResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UnsupportedSingletonDirectiveResolution.java
index 5f00554..9489c32 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UnsupportedSingletonDirectiveResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UnsupportedSingletonDirectiveResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.correction;
 
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.pde.internal.core.ibundle.IBundle;
 import org.eclipse.pde.internal.core.ibundle.IManifestHeader;
 import org.eclipse.pde.internal.core.text.bundle.*;
@@ -21,8 +22,8 @@
 
 public class UnsupportedSingletonDirectiveResolution extends AbstractManifestMarkerResolution {
 
-	public UnsupportedSingletonDirectiveResolution(int type) {
-		super(type);
+	public UnsupportedSingletonDirectiveResolution(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UpdateActivationResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UpdateActivationResolution.java
index 2098fcd..bade7ac 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UpdateActivationResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UpdateActivationResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2015 IBM Corporation and others.
+ * Copyright (c) 2008, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -14,9 +14,11 @@
 package org.eclipse.pde.internal.ui.correction;
 
 import java.util.Map;
+import org.eclipse.core.resources.IMarker;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.pde.internal.core.ICoreConstants;
 import org.eclipse.pde.internal.core.TargetPlatformHelper;
+import org.eclipse.pde.internal.core.builders.PDEMarkerFactory;
 import org.eclipse.pde.internal.core.ibundle.IManifestHeader;
 import org.eclipse.pde.internal.core.text.bundle.*;
 import org.eclipse.pde.internal.ui.PDEUIMessages;
@@ -26,13 +28,14 @@
 
 	private String fHeader = null;
 
-	public UpdateActivationResolution(int type, String currentHeader) {
-		super(type);
+	public UpdateActivationResolution(int type, String currentHeader, IMarker marker) {
+		super(type, marker);
 		fHeader = currentHeader;
 	}
 
 	@Override
 	protected void createChange(BundleModel model) {
+		fHeader = marker.getAttribute(PDEMarkerFactory.ATTR_HEADER, ICoreConstants.ECLIPSE_AUTOSTART);
 		if (TargetPlatformHelper.getTargetVersion() >= 3.4) {
 			// get the header we wish to replace
 			LazyStartHeader header = (LazyStartHeader) model.getBundle().getManifestHeader(fHeader);
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UpdateClasspathResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UpdateClasspathResolution.java
index ee25073..49f2112 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UpdateClasspathResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/UpdateClasspathResolution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2015 IBM Corporation and others.
+ *  Copyright (c) 2005, 2019 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -24,8 +24,8 @@
 
 public class UpdateClasspathResolution extends AbstractPDEMarkerResolution {
 
-	public UpdateClasspathResolution(int type) {
-		super(type);
+	public UpdateClasspathResolution(int type, IMarker marker) {
+		super(type, marker);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/category/RepositoryReferenceSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/category/RepositoryReferenceSection.java
index c0eacc7..e5b9f96 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/category/RepositoryReferenceSection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/category/RepositoryReferenceSection.java
@@ -441,7 +441,7 @@
 			combo.addSelectionListener(widgetSelectedAdapter(e -> {
 				item.setText(1, combo.getText());
 				try {
-					repo.setEnabled(Boolean.valueOf(combo.getText()).booleanValue());
+					repo.setEnabled(Boolean.parseBoolean(combo.getText()));
 				} catch (CoreException ex) {
 					PDEPlugin.log(ex);
 				}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/ManifestContentAssistProcessor.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/ManifestContentAssistProcessor.java
index fbab565..cee2e47 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/ManifestContentAssistProcessor.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/contentassist/ManifestContentAssistProcessor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2017 IBM Corporation and others.
+ * Copyright (c) 2006, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -51,14 +51,6 @@
 	private static final String[] fHeader = {Constants.BUNDLE_ACTIVATIONPOLICY, Constants.BUNDLE_ACTIVATOR, Constants.BUNDLE_CATEGORY, Constants.BUNDLE_CLASSPATH, Constants.BUNDLE_CONTACTADDRESS, Constants.BUNDLE_COPYRIGHT, Constants.BUNDLE_DESCRIPTION, Constants.BUNDLE_DOCURL, Constants.BUNDLE_LOCALIZATION, Constants.BUNDLE_MANIFESTVERSION, Constants.BUNDLE_NAME, Constants.BUNDLE_NATIVECODE, Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, Constants.BUNDLE_SYMBOLICNAME, Constants.BUNDLE_UPDATELOCATION, Constants.BUNDLE_VENDOR, Constants.BUNDLE_VERSION, Constants.DYNAMICIMPORT_PACKAGE, ICoreConstants.ECLIPSE_BUDDY_POLICY, ICoreConstants.ECLIPSE_BUNDLE_SHAPE, ICoreConstants.ECLIPSE_GENERIC_CAPABILITY, ICoreConstants.ECLIPSE_GENERIC_REQUIRED, ICoreConstants.ECLIPSE_LAZYSTART,
 			ICoreConstants.PLATFORM_FILTER, ICoreConstants.ECLIPSE_REGISTER_BUDDY, ICoreConstants.ECLIPSE_SOURCE_REFERENCES, Constants.EXPORT_PACKAGE, ICoreConstants.EXPORT_SERVICE, Constants.FRAGMENT_HOST, Constants.IMPORT_PACKAGE, ICoreConstants.IMPORT_SERVICE, Constants.PROVIDE_CAPABILITY, Constants.REQUIRE_BUNDLE, Constants.REQUIRE_CAPABILITY};
 
-	private static final String BAUMAN = "Brian Bauman"; //$NON-NLS-1$
-	private static final String ANISZCZYK = "Chris Aniszczyk"; //$NON-NLS-1$
-	private static final String LASOCKI_BICZYSKO = "Janek Lasocki-Biczysko"; //$NON-NLS-1$
-	private static final String PAWLOWSKI = "Mike Pawlowski"; //$NON-NLS-1$
-	private static final String MELHEM = "Wassim Melhem"; //$NON-NLS-1$
-	private static final String WINDATT = "Curtis Windatt"; //$NON-NLS-1$
-
-	private static final String[] fNames = {BAUMAN, ANISZCZYK, LASOCKI_BICZYSKO, PAWLOWSKI, MELHEM, WINDATT};
 
 	private static final char[] fAutoActivationChars = { ':', ' ', ',', '.', ';', '=' };
 
@@ -245,23 +237,6 @@
 	 */
 	protected ICompletionProposal[] handleBundleNameCompletion(String currentValue, int offset) {
 		currentValue = removeLeadingSpaces(currentValue);
-		int length = currentValue.length();
-
-		// only show when there is no bundle name
-		if (length == 0) {
-			return new ICompletionProposal[] {new TypeCompletionProposal(BAUMAN, null, BAUMAN, offset - length, length), new TypeCompletionProposal(ANISZCZYK, null, ANISZCZYK, offset - length, length), new TypeCompletionProposal(LASOCKI_BICZYSKO, null, LASOCKI_BICZYSKO, offset - length, length), new TypeCompletionProposal(PAWLOWSKI, null, PAWLOWSKI, offset - length, length), new TypeCompletionProposal(MELHEM, null, MELHEM, offset - length, length), new TypeCompletionProposal(WINDATT, null, WINDATT, offset - length, length)};
-		}
-
-		// only show when we are trying to complete a name
-		for (String fName : fNames) {
-			StringTokenizer tokenizer = new StringTokenizer(currentValue, " "); //$NON-NLS-1$
-			while (tokenizer.hasMoreTokens()) {
-				String token = tokenizer.nextToken();
-				if (fName.regionMatches(true, 0, token, 0, token.length())) {
-					return new ICompletionProposal[] {new TypeCompletionProposal(fName, null, fName, offset - token.length(), token.length())};
-				}
-			}
-		}
 		return new ICompletionProposal[0];
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java
index 694fb06..2d95577 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java
@@ -112,8 +112,8 @@
 		IJavaElement element = javaProject.findElement(new Path(fileName));
 		if (element == null)
 			return null;
-		if (element instanceof IClassFile) {
-			type = ((IClassFile) element).getType();
+		if (element instanceof IOrdinaryClassFile) {
+			type = ((IOrdinaryClassFile) element).getType();
 		} else if (element instanceof ICompilationUnit) {
 			IType[] types = ((ICompilationUnit) element).getTypes();
 			type = types[0];
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/GeneralInfoSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/GeneralInfoSection.java
index 00bce8c..55fa40b 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/GeneralInfoSection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/GeneralInfoSection.java
@@ -204,7 +204,7 @@
 		} else if (prop.equals(IProduct.P_VERSION)) {
 			fVersionEntry.setValue(e.getNewValue().toString(), true);
 		} else if (prop.equals(IProduct.P_INCLUDE_LAUNCHERS)) {
-			fLaunchersButton.setSelection(Boolean.valueOf(e.getNewValue().toString()).booleanValue());
+			fLaunchersButton.setSelection(Boolean.parseBoolean(e.getNewValue().toString()));
 		}
 	}
 
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/PluginConfigurationSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/PluginConfigurationSection.java
index 80c868b..343d3dd 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/PluginConfigurationSection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/PluginConfigurationSection.java
@@ -478,7 +478,7 @@
 			combo.pack();
 			combo.addSelectionListener(widgetSelectedAdapter(e -> {
 				item.setText(2, combo.getText());
-				ppc.setAutoStart(Boolean.valueOf(combo.getText()).booleanValue());
+				ppc.setAutoStart(Boolean.parseBoolean(combo.getText()));
 			}));
 			fAutoColumnEditor.setEditor(combo, item, 2);
 		}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/UpdatesSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/UpdatesSection.java
index 938c104..73b50a1 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/UpdatesSection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/UpdatesSection.java
@@ -433,7 +433,7 @@
 			combo.pack();
 			combo.addSelectionListener(widgetSelectedAdapter(e -> {
 				item.setText(1, combo.getText());
-				repo.setEnabled(Boolean.valueOf(combo.getText()).booleanValue());
+				repo.setEnabled(Boolean.parseBoolean(combo.getText()));
 			}));
 			fEnabledColumnEditor.setEditor(combo, item, 1);
 		}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/TargetEditor.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/TargetEditor.java
index aef4fd3..3b283f6 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/TargetEditor.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/TargetEditor.java
@@ -16,15 +16,13 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.ui.editor.targetdefinition;
 
-import java.io.File;
-import java.io.IOException;
+import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.filebuffers.ITextFileBufferManager;
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.core.runtime.jobs.Job;
@@ -99,8 +97,8 @@
 	protected void pageChange(int newPageIndex) {
 		try {
 			if (newPageIndex != fSourceTabIndex && getCurrentPage() == fSourceTabIndex) {
-				ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
-				TargetDefinitionPersistenceHelper.initFromXML(getTarget(), manager.getTextFileBuffer(fTargetDocument));
+				InputStream stream = new ByteArrayInputStream(fTargetDocument.get().getBytes(StandardCharsets.UTF_8));
+				TargetDefinitionPersistenceHelper.initFromXML(getTarget(), stream);
 				if (!getTarget().isResolved()) {
 					getTargetChangedListener().contentsChanged(getTarget(), this, true, false);
 				}
@@ -524,11 +522,11 @@
 	}
 
 	private void updateTextualEditor() {
-		ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
 		fTargetDocument.removeDocumentListener(fTargetDocumentListener);
+		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
 		try {
-			TargetDefinitionPersistenceHelper.persistXML(getTarget(), manager.getTextFileBuffer(fTargetDocument));
-			fTextualEditor.getDocumentProvider().resetDocument(getEditorInput());
+			TargetDefinitionPersistenceHelper.persistXML(getTarget(), byteArrayOutputStream);
+			fTargetDocument.set(new String(byteArrayOutputStream.toByteArray()));
 		} catch (CoreException | ParserConfigurationException | TransformerException | IOException | SAXException e) {
 			PDEPlugin.log(e);
 		}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java
index 13e4a41..dffb9ce 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java
@@ -450,7 +450,7 @@
 				} else if (control instanceof Button) {
 					Button button = (Button) control;
 					ControlData data = (ControlData) button.getData();
-					button.setSelection(Boolean.valueOf(data.key.getStoredValue(fLookupOrder, false, fManager)).booleanValue());
+					button.setSelection(Boolean.parseBoolean(data.key.getStoredValue(fLookupOrder, false, fManager)));
 				} else if (control instanceof Text) {
 					Text text = (Text) control;
 					ControlData data = (ControlData) text.getData();
@@ -591,7 +591,7 @@
 		Button button = SWTFactory.createCheckButton(parent, label, null, false, 2);
 		ControlData data = new ControlData(key, new String[] {Boolean.toString(false)});
 		button.setData(data);
-		button.setSelection(Boolean.valueOf(data.key.getStoredValue(fLookupOrder, false, fManager)).booleanValue());
+		button.setSelection(Boolean.parseBoolean(data.key.getStoredValue(fLookupOrder, false, fManager)));
 		button.addSelectionListener(selectionlistener);
 		Integer mapkey = Integer.valueOf(tabkind);
 		HashSet<Control> controls = fControlMap.get(mapkey);
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/DependencyExtentOperation.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/DependencyExtentOperation.java
index 88bb66b..6e0651f 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/DependencyExtentOperation.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/DependencyExtentOperation.java
@@ -124,8 +124,8 @@
 						if (monitor.isCanceled())
 							break;
 						IType[] types = new IType[0];
-						if (child instanceof IClassFile) {
-							types = new IType[] {((IClassFile) child).getType()};
+						if (child instanceof IOrdinaryClassFile) {
+							types = new IType[] {((IOrdinaryClassFile) child).getType()};
 						} else if (child instanceof ICompilationUnit) {
 							types = ((ICompilationUnit) child).getTypes();
 						}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/GatherUnusedDependenciesOperation.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/GatherUnusedDependenciesOperation.java
index 336e962..8bde422 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/GatherUnusedDependenciesOperation.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/GatherUnusedDependenciesOperation.java
@@ -173,8 +173,8 @@
 			IType[] types = null;
 			if (child instanceof ICompilationUnit) {
 				types = ((ICompilationUnit) child).getAllTypes();
-			} else if (child instanceof IClassFile) {
-				types = new IType[] { ((IClassFile) child).getType() };
+			} else if (child instanceof IOrdinaryClassFile) {
+				types = new IType[] { ((IOrdinaryClassFile) child).getType() };
 			}
 			if (types != null) {
 				SubMonitor iterationMonitor = subMonitor.split(1).setWorkRemaining(types.length);
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/PluginsView.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/PluginsView.java
index 10ffe92..6a67662 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/PluginsView.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/plugins/PluginsView.java
@@ -23,6 +23,7 @@
 import org.eclipse.core.resources.IStorage;
 import org.eclipse.core.runtime.*;
 import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jdt.core.*;
 import org.eclipse.jdt.ui.JavaUI;
 import org.eclipse.jdt.ui.actions.OpenAction;
@@ -81,7 +82,6 @@
 	private DisabledFilter fHideExtEnabledFilter = new DisabledFilter(true);
 	private DisabledFilter fHideExtDisabledFilter = new DisabledFilter(false);
 	private WorkspaceFilter fHideWorkspaceFilter = new WorkspaceFilter();
-	private SourcePluginFilter fSourcePluginFilter = new SourcePluginFilter();
 	private JavaFilter fJavaFilter = new JavaFilter();
 	private CopyToClipboardAction fCopyAction;
 	private Clipboard fClipboard;
@@ -558,7 +558,24 @@
 		fHideWorkspaceFilterAction.setChecked(!hideWorkspace);
 		fHideExtEnabledFilterAction.setChecked(!hideEnabledExternal);
 		fHideExtDisabledFilterAction.setChecked(!hideDisabledExternal);
-		fTreeViewer.addFilter(fSourcePluginFilter);
+
+		if (PDECore.getDefault().getModelManager().isInitialized()) {
+			PDEState state = PDECore.getDefault().getModelManager().getState();
+			fTreeViewer.addFilter(new SourcePluginFilter(state));
+		} else {
+			// when TP state is not initialized yet defer computation to
+			// background
+			// job and apply the filter when it is available
+			Job.createSystem("Initialize PDE State", monitor -> { //$NON-NLS-1$
+				PDEState state = TargetPlatformHelper.getPDEState();
+				Tree tree = fTreeViewer.getTree();
+				if (!tree.isDisposed()) {
+					tree.getDisplay().asyncExec(() -> {
+						fTreeViewer.addFilter(new SourcePluginFilter(state));
+					});
+				}
+			}).schedule();
+		}
 	}
 
 	private void hookContextMenu() {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportOptionsTab.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportOptionsTab.java
index 48fdcbf..08c014a 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportOptionsTab.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/exports/ExportOptionsTab.java
@@ -194,17 +194,17 @@
 
 	protected boolean getInitialJarButtonSelection(IDialogSettings settings) {
 		String selected = settings.get(S_JAR_FORMAT);
-		return selected == null ? TargetPlatformHelper.getTargetVersion() >= 3.1 : Boolean.valueOf(selected).booleanValue();
+		return selected == null ? TargetPlatformHelper.getTargetVersion() >= 3.1 : Boolean.parseBoolean(selected);
 	}
 
 	protected boolean getInitialAllowBinaryCyclesSelection(IDialogSettings settings) {
 		String selected = settings.get(S_ALLOW_BINARY_CYCLES);
-		return selected == null ? true : Boolean.valueOf(selected).booleanValue();
+		return selected == null ? true : Boolean.parseBoolean(selected);
 	}
 
 	protected boolean getInitialUseWorkspaceCompiledClassesSelection(IDialogSettings settings) {
 		String selected = settings.get(S_USE_WORKSPACE_COMPILED_CLASSES);
-		return selected == null ? false : Boolean.valueOf(selected).booleanValue();
+		return selected == null ? false : Boolean.parseBoolean(selected);
 	}
 
 	protected void hookListeners() {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/FragmentContentPage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/FragmentContentPage.java
index 9f7b35f..6d35e25 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/FragmentContentPage.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/FragmentContentPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -219,7 +219,7 @@
 		fExeEnvButton.setText(PDEUIMessages.NewProjectCreationPage_environmentsButton);
 		fExeEnvButton.addListener(SWT.Selection,
 				event -> PreferencesUtil.createPreferenceDialogOn(getShell(), "org.eclipse.jdt.debug.ui.jreProfiles", //$NON-NLS-1$
-						new String[] { "org.eclipse.jdt.debug.ui.jreProfiles" }, null).open());
+						new String[] { "org.eclipse.jdt.debug.ui.jreProfiles" }, null).open()); //$NON-NLS-1$
 	}
 
 	private Text createPluginIdContainer(Composite parent, final boolean validateRange, int span) {
diff --git a/ui/org.eclipse.ui.trace/META-INF/MANIFEST.MF b/ui/org.eclipse.ui.trace/META-INF/MANIFEST.MF
index 5486e55..32532b6 100644
--- a/ui/org.eclipse.ui.trace/META-INF/MANIFEST.MF
+++ b/ui/org.eclipse.ui.trace/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2

 Bundle-Name: %pluginName

 Bundle-SymbolicName: org.eclipse.ui.trace;singleton:=true

-Bundle-Version: 1.1.300.qualifier

+Bundle-Version: 1.1.400.qualifier

 Bundle-Activator: org.eclipse.ui.trace.internal.TracingUIActivator

 Bundle-Vendor: %providerName

 Bundle-RequiredExecutionEnvironment: JavaSE-1.8

diff --git a/ui/org.eclipse.ui.trace/pom.xml b/ui/org.eclipse.ui.trace/pom.xml
index 8839102..f99e2db 100644
--- a/ui/org.eclipse.ui.trace/pom.xml
+++ b/ui/org.eclipse.ui.trace/pom.xml
@@ -19,6 +19,6 @@
   </parent>
   <groupId>org.eclipse.ui</groupId>
   <artifactId>org.eclipse.ui.trace</artifactId>
-  <version>1.1.300-SNAPSHOT</version>
+  <version>1.1.400-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/TracingPreferencePage.java b/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/TracingPreferencePage.java
index 7fd50db..119ee57 100644
--- a/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/TracingPreferencePage.java
+++ b/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/TracingPreferencePage.java
@@ -572,8 +572,8 @@
 			if (debugOptionsValue != null) {

 				if (TracingUtils.isValueBoolean(debugOptionsValue) && TracingUtils.isValueBoolean(prefDebugOption.getValue())) {

 					// pick the one that is 'true'

-					boolean optionValue = Boolean.valueOf(debugOptionsValue).booleanValue();

-					boolean prefValue = Boolean.valueOf(prefDebugOption.getValue()).booleanValue();

+					boolean optionValue = Boolean.parseBoolean(debugOptionsValue);

+					boolean prefValue = Boolean.parseBoolean(prefDebugOption.getValue());

 					if (prefValue != optionValue) {

 						// if the preference value is 'true' then use it... otherwise do nothing since the value

 						// in the debug options will be used.

diff --git a/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/datamodel/TracingComponent.java b/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/datamodel/TracingComponent.java
index 7567d64..646d17b 100644
--- a/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/datamodel/TracingComponent.java
+++ b/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/datamodel/TracingComponent.java
@@ -221,7 +221,7 @@
 		for (IConfigurationElement child : componentChildren) {

 			if (child.getName().equals(TracingConstants.TRACING_EXTENSION_BUNDLE_ATTRIBUTE)) {

 				String name = child.getAttribute(TracingConstants.TRACING_EXTENSION_BUNDLE_NAME_ATTRIBUTE);

-				boolean consumed = Boolean.valueOf(child.getAttribute(TracingConstants.TRACING_EXTENSION_BUNDLE_CONSUMED_ATTRIBUTE)).booleanValue();

+				boolean consumed = Boolean.parseBoolean(child.getAttribute(TracingConstants.TRACING_EXTENSION_BUNDLE_CONSUMED_ATTRIBUTE));

 				this.addBundle(name, consumed, installedBundles);

 			}

 		}