Merge remote-tracking branch 'origin/master' into BETA_JAVA14

Change-Id: Ia0e6ac059f82d2466a972f1ce250452a51cb6a83
diff --git a/org.eclipse.jdt.debug.tests/pom.xml b/org.eclipse.jdt.debug.tests/pom.xml
index 20b629e..ca4aa22 100644
--- a/org.eclipse.jdt.debug.tests/pom.xml
+++ b/org.eclipse.jdt.debug.tests/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>eclipse.jdt.debug</artifactId>
     <groupId>eclipse.jdt.debug</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.15.0-SNAPSHOT</version>
   </parent>
   <groupId>org.eclipse.jdt</groupId>
   <artifactId>org.eclipse.jdt.debug.tests</artifactId>
diff --git a/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/launching/TestTabGroup.java b/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/launching/TestTabGroup.java
index 8c60623..d4973ea 100644
--- a/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/launching/TestTabGroup.java
+++ b/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/launching/TestTabGroup.java
@@ -16,7 +16,6 @@
 import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
 import org.eclipse.debug.ui.CommonTab;
 import org.eclipse.debug.ui.ILaunchConfigurationDialog;
-import org.eclipse.debug.ui.ILaunchConfigurationTab;
 
 /**
  * Test tab group implementation
@@ -24,15 +23,9 @@
  */
 public class TestTabGroup extends AbstractLaunchConfigurationTabGroup {
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.debug.ui.ILaunchConfigurationTabGroup#createTabs(org.eclipse.debug.ui.ILaunchConfigurationDialog, java.lang.String)
-	 */
 	@Override
 	public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
-		ILaunchConfigurationTab[] tabs = {
-				new CommonTab()
-		};
-		setTabs(tabs);
+		setTabs(new CommonTab());
 	}
 
 }
diff --git a/org.eclipse.jdt.debug.ui/pom.xml b/org.eclipse.jdt.debug.ui/pom.xml
index 9fd16a8..26c4720 100644
--- a/org.eclipse.jdt.debug.ui/pom.xml
+++ b/org.eclipse.jdt.debug.ui/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>eclipse.jdt.debug</artifactId>
     <groupId>eclipse.jdt.debug</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.15.0-SNAPSHOT</version>
   </parent>
   <groupId>org.eclipse.jdt</groupId>
   <artifactId>org.eclipse.jdt.debug.ui</artifactId>
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/DebugUIMessages.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/DebugUIMessages.java
index d07a091..1c1df0a 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/DebugUIMessages.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/DebugUIMessages.java
@@ -203,6 +203,7 @@
 	public static String thread_daemon_suspended_linebreakpoint;
 	public static String thread_daemon_suspended_methodentry;
 	public static String thread_daemon_suspended_exception;
+	public static String thread_daemon_suspended_exception_uncaught;
 	public static String thread_daemon_suspended_methodexit;
 	public static String thread_daemon_suspended_fieldmodification;
 	public static String thread_daemon_suspended_runtoline;
@@ -218,6 +219,7 @@
 	public static String thread_system_suspended_linebreakpoint;
 	public static String thread_system_suspended_methodentry;
 	public static String thread_system_suspended_exception;
+	public static String thread_system_suspended_exception_uncaught;
 	public static String thread_system_suspended_methodexit;
 	public static String thread_system_suspended_fieldmodification;
 	public static String thread_system_suspended_runtoline;
@@ -233,6 +235,7 @@
 	public static String thread_daemon_system_suspended_linebreakpoint;
 	public static String thread_daemon_system_suspended_methodentry;
 	public static String thread_daemon_system_suspended_exception;
+	public static String thread_daemon_system_suspended_exception_uncaught;
 	public static String thread_daemon_system_suspended_methodexit;
 	public static String thread_daemon_system_suspended_fieldmodification;
 	public static String thread_daemon_system_suspended_runtoline;
@@ -323,9 +326,9 @@
 
 	public static String JavaDebugOptionsManager_exceptionRecurrence_dialogTitle;
 	public static String JavaDebugOptionsManager_exceptionRecurrence_dialogMessage;
-	public static String JavaDebugOptionsManager_cancel_buttonLabel;
 	public static String JavaDebugOptionsManager_skip_buttonLabel;
 	public static String JavaDebugOptionsManager_suspend_buttonLabel;
+	public static String JavaDebugOptionsManager_exceptionRecurrence_remember_decision;
 
 	public static String JavaDebugOptionsManager_Line_breakpoint___4;
 
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/DebugUIMessages.properties b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/DebugUIMessages.properties
index 42d787f..c6dabb2 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/DebugUIMessages.properties
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/DebugUIMessages.properties
@@ -144,6 +144,7 @@
 thread_daemon_suspended_linebreakpoint=Daemon Thread [{0}] (Suspended (breakpoint at line {1} in {2}))
 thread_daemon_suspended_methodentry=Daemon Thread [{0}] (Suspended (entry into method {1} in {2}))
 thread_daemon_suspended_exception=Daemon Thread [{0}] (Suspended (exception {1}))
+thread_daemon_suspended_exception_uncaught=Daemon Thread [{0}] (Suspended (uncaught exception {1}))
 thread_daemon_suspended_methodexit=Daemon Thread [{0}] (Suspended (exit of method {1} in {2}))
 thread_daemon_suspended_fieldmodification=Daemon Thread [{0}] (Suspended (modification of field {1} in {2}))
 thread_daemon_suspended_runtoline=Daemon Thread [{0}] (Suspended (run to line {1} in {2}))
@@ -159,6 +160,7 @@
 thread_system_suspended_linebreakpoint=System Thread [{0}] (Suspended (breakpoint at line {1} in {2}))
 thread_system_suspended_methodentry=System Thread [{0}] (Suspended (entry into method {1} in {2}))
 thread_system_suspended_exception=System Thread [{0}] (Suspended (exception {1}))
+thread_system_suspended_exception_uncaught=System Thread [{0}] (Suspended (uncaught exception {1}))
 thread_system_suspended_methodexit=System Thread [{0}] (Suspended (exit of method {1} in {2}))
 thread_system_suspended_fieldmodification=System Thread [{0}] (Suspended (modification of field {1} in {2}))
 thread_system_suspended_runtoline=System Thread [{0}] (Suspended (run to line {1} in {2}))
@@ -174,6 +176,7 @@
 thread_daemon_system_suspended_linebreakpoint=Daemon System Thread [{0}] (Suspended (breakpoint at line {1} in {2}))
 thread_daemon_system_suspended_methodentry=Daemon System Thread [{0}] (Suspended (entry into method {1} in {2}))
 thread_daemon_system_suspended_exception=Daemon System Thread [{0}] (Suspended (exception {1}))
+thread_daemon_system_suspended_exception_uncaught=Daemon System Thread [{0}] (Suspended (uncaught exception {1}))
 thread_daemon_system_suspended_methodexit=Daemon System Thread [{0}] (Suspended (exit of method {1} in {2}))
 thread_daemon_system_suspended_fieldmodification=Daemon System Thread [{0}] (Suspended (modification of field {1} in {2}))
 thread_daemon_system_suspended_runtoline=Daemon System Thread [{0}] (Suspended (run to line {1} in {2}))
@@ -275,12 +278,12 @@
 Please choose how the debugger should react to repeated occurrences of the same exception instance:\n\
  \u2022 Skip:\t\t fire only once per exception instance\n\
  \u2022 Suspend:\t fire always\n\
- \u2022 Cancel:\t suspend now, but don't remember this decision\n\n\
 This choice does not affect the global preference regarding uncaught exceptions. 
-JavaDebugOptionsManager_Line_breakpoint___4=Line breakpoint:
 JavaDebugOptionsManager_skip_buttonLabel=Skip
 JavaDebugOptionsManager_suspend_buttonLabel=Suspend
-JavaDebugOptionsManager_cancel_buttonLabel=Cancel
+JavaDebugOptionsManager_exceptionRecurrence_remember_decision=Remember my decision
+
+JavaDebugOptionsManager_Line_breakpoint___4=Line breakpoint:
 
 JavaBreakpointWorkbenchAdapterFactory_1=\ [line:
 
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugOptionsManager.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugOptionsManager.java
index 61de093..63c1ff9 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugOptionsManager.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugOptionsManager.java
@@ -76,6 +76,7 @@
 import org.eclipse.jdt.internal.debug.ui.breakpoints.SuspendOnCompilationErrorListener;
 import org.eclipse.jdt.internal.debug.ui.breakpoints.SuspendOnUncaughtExceptionListener;
 import org.eclipse.jdt.internal.debug.ui.snippeteditor.ScrapbookLauncher;
+import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.util.IPropertyChangeListener;
@@ -84,6 +85,14 @@
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.window.Window;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 
@@ -605,13 +614,7 @@
 			return false; // not a recurrence
 		}
 		if (skip == SuspendOnRecurrenceStrategy.RECURRENCE_UNCONFIGURED) {
-			skip = askUserExceptionRecurrence();
-			if (skip != SuspendOnRecurrenceStrategy.RECURRENCE_UNCONFIGURED) {
-				IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(JDIDebugPlugin.getUniqueIdentifier());
-				if (prefs != null) {
-					prefs.put(JDIDebugModel.PREF_SUSPEND_ON_RECURRENCE_STRATEGY, skip.name());
-				}
-			}
+			skip = new AskRecurrenceDialog(JDIDebugUIPlugin.getShell()).getAnswer();
 		}
 		switch (skip) {
 			case SKIP_RECURRENCES:
@@ -621,23 +624,67 @@
 		}
 	}
 
-	private static SuspendOnRecurrenceStrategy askUserExceptionRecurrence() {
-		Shell shell = JDIDebugUIPlugin.getShell();
-		MessageDialog question = new MessageDialog(shell, DebugUIMessages.JavaDebugOptionsManager_exceptionRecurrence_dialogTitle, null, //
-				DebugUIMessages.JavaDebugOptionsManager_exceptionRecurrence_dialogMessage, //
-				MessageDialog.QUESTION, 0, //
-				DebugUIMessages.JavaDebugOptionsManager_skip_buttonLabel, //
-				DebugUIMessages.JavaDebugOptionsManager_suspend_buttonLabel, //
-				DebugUIMessages.JavaDebugOptionsManager_cancel_buttonLabel);
-		int answer[] = { -1 };
-		shell.getDisplay().syncExec(() -> answer[0] = question.open());
-		switch (answer[0]) {
-			case 0:
-				return SuspendOnRecurrenceStrategy.SKIP_RECURRENCES;
-			case 1:
-				return SuspendOnRecurrenceStrategy.SUSPEND_ALWAYS;
-			default:
-				return SuspendOnRecurrenceStrategy.RECURRENCE_UNCONFIGURED;
+	private static final class AskRecurrenceDialog extends MessageDialog {
+
+		private boolean fRememberChoice;
+		private SuspendOnRecurrenceStrategy fStrategy;
+
+		private AskRecurrenceDialog(Shell parentShell) {
+			super(parentShell, DebugUIMessages.JavaDebugOptionsManager_exceptionRecurrence_dialogTitle, null, //
+					DebugUIMessages.JavaDebugOptionsManager_exceptionRecurrence_dialogMessage,
+					MessageDialog.QUESTION, 0, //
+					DebugUIMessages.JavaDebugOptionsManager_skip_buttonLabel, //
+					DebugUIMessages.JavaDebugOptionsManager_suspend_buttonLabel);
+			parentShell.getDisplay().syncExec(() -> open());
+		}
+
+		@Override
+		protected Control createCustomArea(Composite parent) {
+			Composite panel = new Composite(parent, SWT.NONE);
+			panel.setFont(parent.getFont());
+
+			GridLayout layout = new GridLayout(1, false);
+			layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
+			panel.setLayout(layout);
+
+			GridData data = new GridData(GridData.FILL_BOTH);
+			data.verticalAlignment = GridData.END;
+			panel.setLayoutData(data);
+
+			Button button = new Button(panel, SWT.CHECK);
+			button.setText(DebugUIMessages.JavaDebugOptionsManager_exceptionRecurrence_remember_decision);
+			button.setSelection(false);
+			button.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					fRememberChoice = !fRememberChoice;
+				}
+			});
+			return panel;
+		}
+
+		@Override
+		public int open() {
+			int ret = super.open();
+			switch (ret) {
+				case 0:
+					fStrategy = SuspendOnRecurrenceStrategy.SKIP_RECURRENCES;
+					break;
+				case 1:
+					fStrategy = SuspendOnRecurrenceStrategy.SUSPEND_ALWAYS;
+					break;
+			}
+			if (fRememberChoice) {
+				IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(JDIDebugPlugin.getUniqueIdentifier());
+				if (prefs != null) {
+					prefs.put(JDIDebugModel.PREF_SUSPEND_ON_RECURRENCE_STRATEGY, fStrategy.name());
+				}
+			}
+			return ret;
+		}
+
+		public SuspendOnRecurrenceStrategy getAnswer() {
+			return fStrategy;
 		}
 	}
 
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/JavaObjectValueEditor.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/JavaObjectValueEditor.java
index 32acdaf..1a8646c 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/JavaObjectValueEditor.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/JavaObjectValueEditor.java
@@ -174,7 +174,9 @@
     			synchronized(this) {
                     engine.evaluate(stringValue, frame, listener, DebugEvent.EVALUATION_IMPLICIT, false);
     				try {
-    					this.wait();
+						if (results[0] == null) {
+							this.wait();
+						}
     				} catch (InterruptedException e) {
     					if (results[0] == null){
 	    					IStatus status= new Status(IStatus.ERROR, JDIDebugUIPlugin.getUniqueIdentifier(), IStatus.ERROR, ActionMessages.JavaObjectValueEditor_0, e);
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java
index 90f9548..c4bfc07 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2017 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
@@ -1617,7 +1617,7 @@
 			IRegion line = document.getLineInformation(textSelection.getStartLine() + 1);
 			Point selectedRange = viewer.getSelectedRange();
 			viewer.setSelectedRange(selectedRange.x, 0);
-			statementEngine.complete(viewer, line.getOffset(), cunit);
+			statementEngine.complete(viewer, selectedRange, line.getOffset(), cunit);
 			viewer.setSelectedRange(selectedRange.x, selectedRange.y);
 			TemplateProposal[] templateProposals = statementEngine.getResults();
 			for (TemplateProposal templateProposal : templateProposals) {
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/contentassist/JavaDebugContentAssistProcessor.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/contentassist/JavaDebugContentAssistProcessor.java
index 4cf51b9..e52fcd3 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/contentassist/JavaDebugContentAssistProcessor.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/contentassist/JavaDebugContentAssistProcessor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2016 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
@@ -35,6 +35,7 @@
 import org.eclipse.jface.text.contentassist.IContextInformation;
 import org.eclipse.jface.text.contentassist.IContextInformationValidator;
 import org.eclipse.jface.text.templates.TemplateContextType;
+import org.eclipse.swt.graphics.Point;
 
 /**
  * Completion processor for the Java debugger. This completion processor
@@ -168,13 +169,15 @@
 
 			if (fJavaEngine != null) {
 				fJavaEngine.reset();
-				fJavaEngine.complete(viewer, documentOffset, null);
+				Point selectionAsPoint = new Point(selection.getOffset(), selection.getLength());
+				fJavaEngine.complete(viewer, selectionAsPoint, documentOffset, null);
 				total.addAll(Arrays.asList(fJavaEngine.getResults()));
 			}
 
 			if (fStatementEngine != null) {
 				fStatementEngine.reset();
-				fStatementEngine.complete(viewer, documentOffset, null);
+				Point selectionAsPoint = new Point(selection.getOffset(), selection.getLength());
+				fStatementEngine.complete(viewer, selectionAsPoint, documentOffset, null);
 				total.addAll(Arrays.asList(fStatementEngine.getResults()));
 			}
 
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/InstalledJREsBlock.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/InstalledJREsBlock.java
index 092d02b..1911a08 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/InstalledJREsBlock.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/InstalledJREsBlock.java
@@ -741,6 +741,10 @@
 				fVMs.add(result);
 				//refresh from model
 				fVMList.refresh();
+				if (fVMs.size() == 1) {
+					// if this added JRE is the only JRE present, select it
+					setCheckedJRE(result);
+				}
 				fVMList.setSelection(new StructuredSelection(result));
 				//ensure labels are updated
 				fVMList.refresh(true);
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.java
index 5f9e88f..bf17a73 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.java
@@ -84,7 +84,6 @@
 
 	public static String JavaVariableDetailsPane_choosePreviousExpression;
 	public static String JavaVariableDetailsPane_description;
-	public static String JavaVariableDetailsPane_historySeparator;
 	public static String JavaVariableDetailsPane_name;
 	public static String JavaVariableDetailsPane_settings;
 
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.properties b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.properties
index b3f1417..ff31c09 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.properties
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/propertypages/PropertyPageMessages.properties
@@ -65,7 +65,6 @@
 JavaLineBreakpointPage_20=Method Breakpoint
 JavaVariableDetailsPane_choosePreviousExpression=<Choose a previously entered expression>
 JavaVariableDetailsPane_description=Java Variable Detail Pane Viewer
-JavaVariableDetailsPane_historySeparator=Global history
 JavaVariableDetailsPane_name=Java Variable Detail Pane Viewer
 JavaVariableDetailsPane_settings=Java Variable Detail Pane Settings
 ThreadFilterEditor_1=&Restrict to Selected Thread(s):
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/JavaSnippetCompletionProcessor.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/JavaSnippetCompletionProcessor.java
index 1d38876..91440e4 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/JavaSnippetCompletionProcessor.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/JavaSnippetCompletionProcessor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 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
@@ -126,7 +126,7 @@
 
 			if (fTemplateEngine != null) {
 				fTemplateEngine.reset();
-				fTemplateEngine.complete(viewer, position, null);
+				fTemplateEngine.complete(viewer, viewer.getSelectedRange(), position, null);
 
 				TemplateProposal[] templateResults= fTemplateEngine.getResults();
 
diff --git a/org.eclipse.jdt.debug/pom.xml b/org.eclipse.jdt.debug/pom.xml
index 7193858..9027c51 100644
--- a/org.eclipse.jdt.debug/pom.xml
+++ b/org.eclipse.jdt.debug/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>eclipse.jdt.debug</artifactId>
     <groupId>eclipse.jdt.debug</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.15.0-SNAPSHOT</version>
   </parent>
   <groupId>org.eclipse.jdt</groupId>
   <artifactId>org.eclipse.jdt.debug</artifactId>
diff --git a/org.eclipse.jdt.launching.macosx/pom.xml b/org.eclipse.jdt.launching.macosx/pom.xml
index cd9f86c..a1ff724 100644
--- a/org.eclipse.jdt.launching.macosx/pom.xml
+++ b/org.eclipse.jdt.launching.macosx/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>eclipse.jdt.debug</artifactId>
     <groupId>eclipse.jdt.debug</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.15.0-SNAPSHOT</version>
   </parent>
   <groupId>org.eclipse.jdt</groupId>
   <artifactId>org.eclipse.jdt.launching.macosx</artifactId>
diff --git a/org.eclipse.jdt.launching.ui.macosx/pom.xml b/org.eclipse.jdt.launching.ui.macosx/pom.xml
index 579d137..51b107c 100644
--- a/org.eclipse.jdt.launching.ui.macosx/pom.xml
+++ b/org.eclipse.jdt.launching.ui.macosx/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>eclipse.jdt.debug</artifactId>
     <groupId>eclipse.jdt.debug</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.15.0-SNAPSHOT</version>
   </parent>
   <groupId>org.eclipse.jdt</groupId>
   <artifactId>org.eclipse.jdt.launching.ui.macosx</artifactId>
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
index eefb80b..756812e 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
@@ -530,9 +530,6 @@
 			File location = install.getInstallLocation();
 			if (location != null) {
 				if (location.exists()) {
-					if (LaunchingPlugin.isVMLogging()) {
-						LaunchingPlugin.log(LaunchingMessages.VMLogging_3 + install.getInstallLocation());
-					}
 					return install;
 				}
 			}
@@ -546,11 +543,7 @@
 			fgVMTypes = null;
 			initializeVMs();
 		}
-		install = getVMFromCompositeId(getDefaultVMId());
-		if (LaunchingPlugin.isVMLogging()) {
-			LaunchingPlugin.log(LaunchingMessages.VMLogging_3 + install.getInstallLocation());
-		}
-		return install;
+		return getVMFromCompositeId(getDefaultVMId());
 	}
 
 	/**
@@ -3314,6 +3307,9 @@
 	 * @param vm the backing {@link IVMInstall}
 	 */
 	private static void updateCompliance(IVMInstall vm) {
+		if (LaunchingPlugin.isVMLogging()) {
+			LaunchingPlugin.log("Compliance needs an update."); //$NON-NLS-1$
+		}
         if (vm instanceof IVMInstall2) {
             String javaVersion = ((IVMInstall2)vm).getJavaVersion();
             if (javaVersion != null) {
@@ -3364,9 +3360,15 @@
 				}
             	// only update the compliance settings if they are default settings, otherwise the
             	// settings have already been modified by a tool or user
+				if (LaunchingPlugin.isVMLogging()) {
+					LaunchingPlugin.log("Compliance to be updated is: " + compliance); //$NON-NLS-1$
+				}
             	if (isDefault) {
-            		JavaCore.setComplianceOptions(compliance, options);
-            		JavaCore.setOptions(options);
+					JavaCore.setComplianceOptions(compliance, options);
+					JavaCore.setOptions(options);
+					if (LaunchingPlugin.isVMLogging()) {
+						LaunchingPlugin.log("Compliance Options are updated."); //$NON-NLS-1$
+					}
             	}
 
             }
diff --git a/org.eclipse.jdt.launching/plugin.properties b/org.eclipse.jdt.launching/plugin.properties
index b3d3cfc..83284ca 100644
--- a/org.eclipse.jdt.launching/plugin.properties
+++ b/org.eclipse.jdt.launching/plugin.properties
@@ -6,10 +6,6 @@
 # which accompanies this distribution, and is available at
 # https://www.eclipse.org/legal/epl-2.0/
 
-# This is an implementation of an early-draft specification developed under the Java
-# Community Process (JCP) and is made available for testing and evaluation purposes
-# only. The code is not compatible with any specification of the JCP.
-#
 # SPDX-License-Identifier: EPL-2.0
 #
 # Contributors:
diff --git a/org.eclipse.jdt.launching/plugin.xml b/org.eclipse.jdt.launching/plugin.xml
index 8007ab8..311969d 100644
--- a/org.eclipse.jdt.launching/plugin.xml
+++ b/org.eclipse.jdt.launching/plugin.xml
@@ -8,10 +8,6 @@
      which accompanies this distribution, and is available at
      https://www.eclipse.org/legal/epl-2.0/
 
-	This is an implementation of an early-draft specification developed under the Java
-     Community Process (JCP) and is made available for testing and evaluation purposes
-     only. The code is not compatible with any specification of the JCP.
-     
      SPDX-License-Identifier: EPL-2.0
  
      Contributors:
diff --git a/org.eclipse.jdt.launching/pom.xml b/org.eclipse.jdt.launching/pom.xml
index cd4db65..158e3d1 100644
--- a/org.eclipse.jdt.launching/pom.xml
+++ b/org.eclipse.jdt.launching/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>eclipse.jdt.debug</artifactId>
     <groupId>eclipse.jdt.debug</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.15.0-SNAPSHOT</version>
   </parent>
   <groupId>org.eclipse.jdt</groupId>
   <artifactId>org.eclipse.jdt.launching</artifactId>
diff --git a/pom.xml b/pom.xml
index 5a9e17e..cd4b907 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,13 +15,13 @@
   <parent>
     <groupId>org.eclipse</groupId>
     <artifactId>eclipse-platform-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.15.0-SNAPSHOT</version>
     <relativePath>../eclipse-platform-parent</relativePath>
   </parent>
 
   <groupId>eclipse.jdt.debug</groupId>
   <artifactId>eclipse.jdt.debug</artifactId>
-  <version>4.14.0-SNAPSHOT</version>
+  <version>4.15.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <properties>