diff --git a/org.eclipse.jdt.debug.jdi.tests/.classpath b/org.eclipse.jdt.debug.jdi.tests/.classpath
index 9c36d5d..339f597 100644
--- a/org.eclipse.jdt.debug.jdi.tests/.classpath
+++ b/org.eclipse.jdt.debug.jdi.tests/.classpath
@@ -6,7 +6,11 @@
 		</attributes>
 	</classpathentry>
 	<classpathentry kind="src" path="/org.eclipse.jdt.debug"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
 	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/org.eclipse.jdt.debug.jdi.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jdt.debug.jdi.tests/.settings/org.eclipse.jdt.core.prefs
index 87a9378..8638665 100644
--- a/org.eclipse.jdt.debug.jdi.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jdt.debug.jdi.tests/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
 org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=error
 org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -93,6 +94,7 @@
 org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
 org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=enabled
@@ -126,11 +128,13 @@
 org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=error
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
 org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
 org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL,HIGH,HIGH
 org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,EXPERIMENTAL,CONTEXTLAUNCHING
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=0
@@ -138,17 +142,20 @@
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0
 org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_compact_if=0
 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=0
 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
@@ -232,11 +239,12 @@
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
 org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -266,6 +274,8 @@
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -290,13 +300,17 @@
 org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
 org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
 org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
 org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
 org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -343,6 +357,8 @@
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -379,9 +395,12 @@
 org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
 org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
 org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -407,8 +426,12 @@
 org.eclipse.jdt.core.formatter.tabulation.size=4
 org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
 org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
 org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
 org.eclipse.jdt.core.incompatibleJDKLevel=ignore
 org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/org.eclipse.jdt.debug.jdi.tests/JDI Debug Tests.launch b/org.eclipse.jdt.debug.jdi.tests/JDI Debug Tests.launch
index 95b19ce..3bd69cf 100644
--- a/org.eclipse.jdt.debug.jdi.tests/JDI Debug Tests.launch
+++ b/org.eclipse.jdt.debug.jdi.tests/JDI Debug Tests.launch
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/TestAll.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.debug.jdi.tests.TestAll"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.jdt.debug.jdi.tests"/>
+    <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+        <listEntry value="/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/TestAll.java"/>
+    </listAttribute>
+    <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+        <listEntry value="1"/>
+    </listAttribute>
+    <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+    <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.debug.jdi.tests.TestAll"/>
+    <stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="org.eclipse.jdt.debug.jdi.tests"/>
+    <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.jdt.debug.jdi.tests"/>
 </launchConfiguration>
diff --git a/org.eclipse.jdt.debug.tests/.classpath b/org.eclipse.jdt.debug.tests/.classpath
index 375f1db..5a80029 100644
--- a/org.eclipse.jdt.debug.tests/.classpath
+++ b/org.eclipse.jdt.debug.tests/.classpath
@@ -1,6 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="test plugin">
 		<attributes>
diff --git a/org.eclipse.jdt.debug.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jdt.debug.tests/.settings/org.eclipse.jdt.core.prefs
index 3abb3e0..0c5bde8 100644
--- a/org.eclipse.jdt.debug.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jdt.debug.tests/.settings/org.eclipse.jdt.core.prefs
@@ -20,9 +20,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -39,6 +39,7 @@
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
 org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=error
 org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -99,6 +100,7 @@
 org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
 org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=enabled
@@ -136,11 +138,13 @@
 org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=error
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
 org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
 org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL,HIGH,HIGH
 org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,EXPERIMENTAL,CONTEXTLAUNCHING
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=0
@@ -148,17 +152,20 @@
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0
 org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_compact_if=0
 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=0
 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
@@ -242,11 +249,12 @@
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
 org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -276,6 +284,8 @@
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -300,13 +310,17 @@
 org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
 org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
 org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
 org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
 org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -353,6 +367,8 @@
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -389,9 +405,12 @@
 org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
 org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
 org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -417,8 +436,12 @@
 org.eclipse.jdt.core.formatter.tabulation.size=4
 org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
 org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
 org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
 org.eclipse.jdt.core.incompatibleJDKLevel=ignore
 org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/org.eclipse.jdt.debug.tests/META-INF/MANIFEST.MF b/org.eclipse.jdt.debug.tests/META-INF/MANIFEST.MF
index f9bfe04..208d5c0 100644
--- a/org.eclipse.jdt.debug.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.debug.tests/META-INF/MANIFEST.MF
@@ -50,6 +50,6 @@
  org.eclipse.jdt.core.manipulation,
  org.eclipse.core.filesystem
 Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Eclipse-BundleShape: dir
 Automatic-Module-Name: org.eclipse.jdt.debug.tests
diff --git a/org.eclipse.jdt.debug.ui/.classpath b/org.eclipse.jdt.debug.ui/.classpath
index 1aed902..d379e7c 100644
--- a/org.eclipse.jdt.debug.ui/.classpath
+++ b/org.eclipse.jdt.debug.ui/.classpath
@@ -1,6 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="ui"/>
 	<classpathentry kind="src" output="snippet_bin" path="Snippet Support"/>
diff --git a/org.eclipse.jdt.debug.ui/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jdt.debug.ui/.settings/org.eclipse.jdt.core.prefs
index 78c91ee..4aa296e 100644
--- a/org.eclipse.jdt.debug.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jdt.debug.ui/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
 org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
 org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -93,6 +94,7 @@
 org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
 org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=enabled
@@ -126,11 +128,13 @@
 org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=error
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
 org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
 org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL,HIGH,HIGH
 org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,EXPERIMENTAL,CONTEXTLAUNCHING
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=0
@@ -138,17 +142,20 @@
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0
 org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_compact_if=0
 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=0
 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
@@ -232,11 +239,12 @@
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
 org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -266,6 +274,8 @@
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -290,13 +300,17 @@
 org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
 org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
 org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
 org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
 org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -343,6 +357,8 @@
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -379,9 +395,12 @@
 org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
 org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
 org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -407,8 +426,12 @@
 org.eclipse.jdt.core.formatter.tabulation.size=4
 org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
 org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
 org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
 org.eclipse.jdt.core.incompatibleJDKLevel=ignore
 org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/org.eclipse.jdt.debug.ui/META-INF/MANIFEST.MF b/org.eclipse.jdt.debug.ui/META-INF/MANIFEST.MF
index 4a7d4f3..f6d9348 100644
--- a/org.eclipse.jdt.debug.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.debug.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jdt.debug.ui; singleton:=true
-Bundle-Version: 3.11.100.qualifier
+Bundle-Version: 3.12.0.qualifier
 Bundle-Activator: org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -53,5 +53,5 @@
  org.eclipse.core.resources,
  org.eclipse.debug.core;bundle-version="[3.12.0,4.0.0)"
 Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Automatic-Module-Name: org.eclipse.jdt.debug.ui
diff --git a/org.eclipse.jdt.debug.ui/pom.xml b/org.eclipse.jdt.debug.ui/pom.xml
index a378365..1d73fd9 100644
--- a/org.eclipse.jdt.debug.ui/pom.xml
+++ b/org.eclipse.jdt.debug.ui/pom.xml
@@ -18,7 +18,7 @@
   </parent>
   <groupId>org.eclipse.jdt</groupId>
   <artifactId>org.eclipse.jdt.debug.ui</artifactId>
-  <version>3.11.100-SNAPSHOT</version>
+  <version>3.12.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   <properties>
     <code.ignoredWarnings>-warn:+resource,-deprecation,unavoidableGenericProblems</code.ignoredWarnings>
diff --git a/org.eclipse.jdt.debug/.classpath b/org.eclipse.jdt.debug/.classpath
index 722fc6a..82c1c48 100644
--- a/org.eclipse.jdt.debug/.classpath
+++ b/org.eclipse.jdt.debug/.classpath
@@ -1,8 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" output="jdi-bin" path="jdi interfaces"/>
 	<classpathentry kind="src" path="model"/>
 	<classpathentry kind="src" path="jdi"/>
 	<classpathentry kind="src" path="eval"/>
diff --git a/org.eclipse.jdt.debug/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jdt.debug/.settings/org.eclipse.jdt.core.prefs
index 4e75038..d139473 100644
--- a/org.eclipse.jdt.debug/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jdt.debug/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
 org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=error
 org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -93,6 +94,7 @@
 org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
 org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=enabled
@@ -126,11 +128,13 @@
 org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=error
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
 org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
 org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL,HIGH,HIGH
 org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,EXPERIMENTAL,CONTEXTLAUNCHING
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=0
@@ -138,17 +142,20 @@
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0
 org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_compact_if=0
 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=0
 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
@@ -232,11 +239,12 @@
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
 org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -266,6 +274,8 @@
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -290,13 +300,17 @@
 org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
 org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
 org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
 org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
 org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -343,6 +357,8 @@
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -379,9 +395,12 @@
 org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
 org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
 org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -407,8 +426,12 @@
 org.eclipse.jdt.core.formatter.tabulation.size=4
 org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
 org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
 org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
 org.eclipse.jdt.core.incompatibleJDKLevel=ignore
 org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/org.eclipse.jdt.debug/META-INF/MANIFEST.MF b/org.eclipse.jdt.debug/META-INF/MANIFEST.MF
index 27d41d8..04a9cea 100644
--- a/org.eclipse.jdt.debug/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.debug/META-INF/MANIFEST.MF
@@ -2,19 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jdt.debug; singleton:=true
-Bundle-Version: 3.15.200.qualifier
-Bundle-ClassPath: jdi.jar,
- jdimodel.jar,
+Bundle-Version: 3.16.0.qualifier
+Bundle-ClassPath: jdimodel.jar,
  tools.jar
 Bundle-Activator: org.eclipse.jdt.internal.debug.core.JDIDebugPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: com.sun.jdi;x-friends:="org.eclipse.jdt.debug.ui,org.eclipse.jdt.launching",
- com.sun.jdi.connect;x-friends:="org.eclipse.jdt.debug.ui,org.eclipse.jdt.launching",
- com.sun.jdi.connect.spi;x-friends:="org.eclipse.jdt.debug.ui,org.eclipse.jdt.launching",
- com.sun.jdi.event;x-friends:="org.eclipse.jdt.debug.ui,org.eclipse.jdt.launching",
- com.sun.jdi.request;x-friends:="org.eclipse.jdt.debug.ui,org.eclipse.jdt.launching",
- org.eclipse.jdi,
+Export-Package: org.eclipse.jdi,
  org.eclipse.jdi.hcr,
  org.eclipse.jdi.internal;x-friends:="org.eclipse.jdt.debug.ui",
  org.eclipse.jdi.internal.connect;x-friends:="org.eclipse.jdt.debug.ui",
@@ -38,6 +32,6 @@
  org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)"
 Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Eclipse-BundleShape: dir
 Automatic-Module-Name: org.eclipse.jdt.debug
diff --git a/org.eclipse.jdt.debug/build.properties b/org.eclipse.jdt.debug/build.properties
index be0436c..b5bb2e4 100644
--- a/org.eclipse.jdt.debug/build.properties
+++ b/org.eclipse.jdt.debug/build.properties
@@ -18,16 +18,12 @@
                META-INF/,\
                .options
 
-source.jdi.jar = jdi interfaces/
-output.jdi.jar = jdi-bin/
 source.jdimodel.jar = model/,\
                       jdi/,\
                       eval/
 output.jdimodel.jar = bin/                   
 src.includes = about.html,\
                schema/
-jars.compile.order = jdi.jar,\
-                     jdimodel.jar
+jars.compile.order = jdimodel.jar
 javacWarnings..=-unavoidableGenericProblems
 javacWarnings.jdimodel.jar=-unavoidableGenericProblems
-javacWarnings.jdi.jar=-unavoidableGenericProblems
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/AbsentInformationException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/AbsentInformationException.java
deleted file mode 100644
index 428ec3e..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/AbsentInformationException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/AbsentInformationException.html
- */
-public class AbsentInformationException extends Exception {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public AbsentInformationException() {
-	}
-
-	public AbsentInformationException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Accessible.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Accessible.java
deleted file mode 100644
index 09d61bc..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Accessible.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/Accessible.html
- */
-public interface Accessible {
-	public boolean isPackagePrivate();
-	public boolean isPrivate();
-	public boolean isProtected();
-	public boolean isPublic();
-	public int modifiers();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ArrayReference.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ArrayReference.java
deleted file mode 100644
index c19b29e..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ArrayReference.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ArrayReference.html
- */
-public interface ArrayReference extends ObjectReference {
-	public Value getValue(int arg1);
-	public List<Value> getValues();
-	public List<Value> getValues(int arg1, int arg2);
-	public int length();
-	public void setValue(int arg1, Value arg2) throws InvalidTypeException, ClassNotLoadedException;
-	public void setValues(int arg1, List<? extends Value> arg2, int arg3, int arg4)throws InvalidTypeException, ClassNotLoadedException;
-	public void setValues(List<? extends Value> arg1) throws InvalidTypeException, ClassNotLoadedException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ArrayType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ArrayType.java
deleted file mode 100644
index d8fcc34..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ArrayType.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ArrayType.html
- */
-public interface ArrayType extends ReferenceType {
-	public String componentSignature();
-	public Type componentType() throws ClassNotLoadedException;
-	public String componentTypeName();
-	public ArrayReference newInstance(int arg1);
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/BooleanType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/BooleanType.java
deleted file mode 100644
index eaef6fc..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/BooleanType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/BooleanType.html
- */
-public interface BooleanType extends PrimitiveType {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/BooleanValue.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/BooleanValue.java
deleted file mode 100644
index 0496ac2..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/BooleanValue.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/BooleanValue.html
- */
-public interface BooleanValue extends PrimitiveValue {
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-	public boolean value();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Bootstrap.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Bootstrap.java
deleted file mode 100644
index a4b4d81..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Bootstrap.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/Bootstrap.html
- */
-public class Bootstrap {
-	static public VirtualMachineManager virtualMachineManager() {
-		return null;
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ByteType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ByteType.java
deleted file mode 100644
index 4bf9dca..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ByteType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ByteType.html
- */
-public interface ByteType extends PrimitiveType {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ByteValue.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ByteValue.java
deleted file mode 100644
index 269b9bd..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ByteValue.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ByteValue.html
- */
-public interface ByteValue extends PrimitiveValue, Comparable<ByteValue> {
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-	public byte value();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/CharType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/CharType.java
deleted file mode 100644
index ce990d9..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/CharType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/CharType.html
- */
-public interface CharType extends PrimitiveType {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/CharValue.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/CharValue.java
deleted file mode 100644
index 59f1f85..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/CharValue.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/CharValue.html
- */
-public interface CharValue extends PrimitiveValue, Comparable<CharValue> {
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-	public char value();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassLoaderReference.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassLoaderReference.java
deleted file mode 100644
index 97e099f..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassLoaderReference.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ClassLoaderReference.html
- */
-public interface ClassLoaderReference extends ObjectReference {
-	public List<ReferenceType> definedClasses();
-	public List<ReferenceType> visibleClasses();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassNotLoadedException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassNotLoadedException.java
deleted file mode 100644
index 682ffce..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassNotLoadedException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ClassNotLoadedException.html
- */
-public class ClassNotLoadedException extends Exception {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public ClassNotLoadedException(String className) {
-		name = className;
-	}
-
-	public ClassNotLoadedException(String className, String msg) {
-		super(msg);
-		name = className;
-	}
-
-	public String className() {
-		return name;
-	}
-
-	private String name;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassNotPreparedException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassNotPreparedException.java
deleted file mode 100644
index 39960e9..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassNotPreparedException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ClassNotPreparedException.html
- */
-public class ClassNotPreparedException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public ClassNotPreparedException() {
-	}
-
-	public ClassNotPreparedException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassObjectReference.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassObjectReference.java
deleted file mode 100644
index 1d9df30..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassObjectReference.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ClassObjectReference.html
- */
-public abstract interface ClassObjectReference extends ObjectReference {
-	public abstract ReferenceType reflectedType();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassType.java
deleted file mode 100644
index 00dec52..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ClassType.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ClassType.html
- */
-public interface ClassType extends ReferenceType {
-	public static final int INVOKE_SINGLE_THREADED = 1;
-	public List<InterfaceType> allInterfaces();
-	public Method concreteMethodByName(String arg1, String arg2);
-	public List<InterfaceType> interfaces();
-	public Value invokeMethod(ThreadReference arg1, Method arg2, List<? extends Value> arg3, int arg4) throws InvalidTypeException, ClassNotLoadedException, IncompatibleThreadStateException, InvocationException;
-	public boolean isEnum();
-	public ObjectReference newInstance(ThreadReference arg1, Method arg2, List<? extends Value> arg3, int arg4) throws InvalidTypeException, ClassNotLoadedException, IncompatibleThreadStateException, InvocationException;
-	public void setValue(Field arg1, Value arg2) throws InvalidTypeException, ClassNotLoadedException;
-	public List<ClassType> subclasses();
-	public ClassType superclass();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/DoubleType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/DoubleType.java
deleted file mode 100644
index 0f7ebd1..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/DoubleType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/DoubleType.html
- */
-public interface DoubleType extends PrimitiveType {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/DoubleValue.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/DoubleValue.java
deleted file mode 100644
index 0e40f10..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/DoubleValue.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/DoubleValue.html
- */
-public interface DoubleValue extends PrimitiveValue, Comparable<DoubleValue> {
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-	public double value();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Field.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Field.java
deleted file mode 100644
index 2793a4f..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Field.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/Field.html
- */
-public interface Field extends TypeComponent, Comparable<Field> {
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-	public boolean isEnumConstant();
-	public boolean isTransient();
-	public boolean isVolatile();
-	public Type type() throws ClassNotLoadedException;
-	public String typeName();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/FloatType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/FloatType.java
deleted file mode 100644
index d9c0ccc..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/FloatType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/FloatType.html
- */
-public interface FloatType extends PrimitiveType {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/FloatValue.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/FloatValue.java
deleted file mode 100644
index 68e7876..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/FloatValue.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/FloatValue.html
- */
-public interface FloatValue extends PrimitiveValue, Comparable<FloatValue> {
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-	public float value();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/IncompatibleThreadStateException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/IncompatibleThreadStateException.java
deleted file mode 100644
index 351b424..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/IncompatibleThreadStateException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/IncompatibleThreadStateException.html
- */
-public class IncompatibleThreadStateException extends Exception {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public IncompatibleThreadStateException() {
-	}
-
-	public IncompatibleThreadStateException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InconsistentDebugInfoException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InconsistentDebugInfoException.java
deleted file mode 100644
index fe98154..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InconsistentDebugInfoException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/InconsistentDebugInfoException.html
- */
-public class InconsistentDebugInfoException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public InconsistentDebugInfoException() {
-	}
-
-	public InconsistentDebugInfoException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/IntegerType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/IntegerType.java
deleted file mode 100644
index 124d73c..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/IntegerType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/IntegerType.html
- */
-public interface IntegerType extends PrimitiveType {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/IntegerValue.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/IntegerValue.java
deleted file mode 100644
index d1b0a0b..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/IntegerValue.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/IntegerValue.html
- */
-public interface IntegerValue extends PrimitiveValue, Comparable<IntegerValue> {
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-	public int value();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InterfaceType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InterfaceType.java
deleted file mode 100644
index fa71ce2..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InterfaceType.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jesper Steen Møller <jesper@selskabet.org> - Bug 430839
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/InterfaceType.html and
- * http://docs.oracle.com/javase/8/docs/jdk/api/jpda/jdi/com/sun/jdi/InterfaceType.html
- */
-public interface InterfaceType extends ReferenceType {
-	public List<ClassType> implementors();
-	public List<InterfaceType> subinterfaces();
-	public List<InterfaceType> superinterfaces();
-	public /* default */ Value invokeMethod(ThreadReference thread, Method method, List<? extends Value> arguments, int options) throws InvalidTypeException, ClassNotLoadedException, IncompatibleThreadStateException, InvocationException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InternalException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InternalException.java
deleted file mode 100644
index de4f79e..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InternalException.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/InternalException.html
- */
-public class InternalException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public InternalException() {
-	}
-
-	public InternalException(int errorCode) {
-		error = errorCode;
-	}
-
-	public InternalException(java.lang.String s) {
-		super(s);
-	}
-
-	public InternalException(java.lang.String s, int errorCode) {
-		super(s);
-		error = errorCode;
-	}
-
-	public int errorCode() {
-		return error;
-	}
-
-	private int error;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidCodeIndexException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidCodeIndexException.java
deleted file mode 100644
index 3fe21f3..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidCodeIndexException.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/InvalidCodeIndexException.html
- * @deprecated This exception is no longer thrown.
- */
-@Deprecated
-public class InvalidCodeIndexException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * @deprecated no longer thrown
-	 */
-	@Deprecated
-	public InvalidCodeIndexException() {
-	}
-
-	/**
-	 * @param arg1
-	 *            the message
-	 * @deprecated no longer thrown
-	 */
-	@Deprecated
-	public InvalidCodeIndexException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidLineNumberException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidLineNumberException.java
deleted file mode 100644
index 5dbe2d3..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidLineNumberException.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/InvalidLineNumberException.html
- * @deprecated This exception is no longer thrown.
- */
-@Deprecated
-public class InvalidLineNumberException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * @deprecated no longer thrown
-	 */
-	@Deprecated
-	public InvalidLineNumberException() {
-	}
-
-	/**
-	 * @param arg1
-	 *            the message
-	 * @deprecated no longer thrown
-	 */
-	@Deprecated
-	public InvalidLineNumberException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidStackFrameException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidStackFrameException.java
deleted file mode 100644
index 149a8e1..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidStackFrameException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/InvalidStackFrameException.html
- */
-public class InvalidStackFrameException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public InvalidStackFrameException() {
-	}
-
-	public InvalidStackFrameException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidTypeException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidTypeException.java
deleted file mode 100644
index 26f5d68..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvalidTypeException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/InvalidTypeException.html
- */
-public class InvalidTypeException extends Exception {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public InvalidTypeException() {
-	}
-
-	public InvalidTypeException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvocationException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvocationException.java
deleted file mode 100644
index 7997663..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/InvocationException.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/InvocationException.html
- */
-public class InvocationException extends Exception {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	private ObjectReference exception;
-
-	public InvocationException(ObjectReference arg1) {
-		exception = arg1;
-	}
-
-	public ObjectReference exception() {
-		return exception;
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/JDIPermission.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/JDIPermission.java
deleted file mode 100644
index ad5a499..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/JDIPermission.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.security.BasicPermission;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/JDIPermission.html
- */
-public class JDIPermission extends BasicPermission {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public JDIPermission(String arg1) {
-		super(arg1);
-	}
-
-	public JDIPermission(String arg1, String arg2) {
-		super(arg1, arg2);
-	}
-
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/LocalVariable.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/LocalVariable.java
deleted file mode 100644
index 9d38447..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/LocalVariable.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/LocalVariable.html
- */
-public interface LocalVariable extends Mirror, Comparable<LocalVariable> {
-	@Override
-	public boolean equals(Object arg1);
-	public String genericSignature();
-	@Override
-	public int hashCode();
-	public boolean isArgument();
-	public boolean isVisible(StackFrame arg1);
-	public String name();
-	public String signature();
-	public Type type() throws ClassNotLoadedException;
-	public String typeName();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Locatable.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Locatable.java
deleted file mode 100644
index d34b9bb..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Locatable.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/Locatable.html
- */
-public interface Locatable {
-	public Location location();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Location.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Location.java
deleted file mode 100644
index b905631..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Location.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/Location.html
- */
-public interface Location extends Mirror, Comparable<Locatable> {
-	public long codeIndex();
-	public ReferenceType declaringType();
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-	public int lineNumber();
-	public int lineNumber(String stratum);
-	public Method method();
-	public String sourceName() throws AbsentInformationException;
-	public String sourceName(String stratum) throws AbsentInformationException;
-	public String sourcePath() throws AbsentInformationException;
-	public String sourcePath(String stratum) throws AbsentInformationException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/LongType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/LongType.java
deleted file mode 100644
index ea89b81..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/LongType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/LongType.html
- */
-public interface LongType extends PrimitiveType {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/LongValue.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/LongValue.java
deleted file mode 100644
index 0f0009d..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/LongValue.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/LongValue.html
- */
-public interface LongValue extends PrimitiveValue, Comparable<LongValue> {
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-	public long value();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Method.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Method.java
deleted file mode 100644
index 8c2fc8a..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Method.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/Method.html
- */
-public interface Method extends TypeComponent, Locatable, Comparable<Method> {
-	public List<Location> allLineLocations() throws AbsentInformationException;
-	public List<Location> allLineLocations(String arg1, String arg2) throws AbsentInformationException;
-	public List<LocalVariable> arguments() throws AbsentInformationException;
-	public List<String> argumentTypeNames();
-	public List<Type> argumentTypes() throws ClassNotLoadedException;
-	public byte[] bytecodes();
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-	public boolean isAbstract();
-	public boolean isBridge();
-	public boolean isConstructor();
-	public boolean isNative();
-	public boolean isObsolete();
-	public boolean isStaticInitializer();
-	public boolean isSynchronized();
-	public boolean isVarArgs();
-	public Location locationOfCodeIndex(long arg1);
-	public List<Location> locationsOfLine(int arg1) throws AbsentInformationException;
-	public List<Location> locationsOfLine(String arg1, String arg2, int arg3)	throws AbsentInformationException;
-	public Type returnType() throws ClassNotLoadedException;
-	public String returnTypeName();
-	public List<LocalVariable> variables() throws AbsentInformationException;
-	public List<LocalVariable> variablesByName(String arg1) throws AbsentInformationException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Mirror.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Mirror.java
deleted file mode 100644
index 16e01f1..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Mirror.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/Mirror.html
- */
-public interface Mirror {
-	@Override
-	public String toString();
-	public VirtualMachine virtualMachine();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/MonitorInfo.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/MonitorInfo.java
deleted file mode 100644
index cdb0275..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/MonitorInfo.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/MonitorInfo.html
- */
-public interface MonitorInfo extends Mirror {
-	public ObjectReference monitor();
-	public int stackDepth();
-	public ThreadReference thread();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/NativeMethodException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/NativeMethodException.java
deleted file mode 100644
index e99ab9b..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/NativeMethodException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/NativeMethodException.html
- */
-public class NativeMethodException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public NativeMethodException() {
-	}
-
-	public NativeMethodException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ObjectCollectedException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ObjectCollectedException.java
deleted file mode 100644
index 546f727..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ObjectCollectedException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ObjectCollectedException.html
- */
-public class ObjectCollectedException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public ObjectCollectedException() {
-	}
-
-	public ObjectCollectedException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ObjectReference.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ObjectReference.java
deleted file mode 100644
index 355a9d7..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ObjectReference.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-import java.util.Map;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ObjectReference.html
- */
-public interface ObjectReference extends com.sun.jdi.Value {
-	public static final int INVOKE_SINGLE_THREADED = 1;
-	public static final int INVOKE_NONVIRTUAL = 2;
-	public void disableCollection();
-	public void enableCollection();
-	public int entryCount() throws IncompatibleThreadStateException;
-	@Override
-	public boolean equals(Object arg1);
-	public Value getValue(Field arg1);
-	public Map<Field, Value> getValues(List<? extends Field> arg1);
-	@Override
-	public int hashCode();
-	public Value invokeMethod(ThreadReference arg1, Method arg2, List<? extends Value> arg3,	int arg4) throws InvalidTypeException, ClassNotLoadedException,	IncompatibleThreadStateException, InvocationException;
-	public boolean isCollected();
-	public ThreadReference owningThread() throws IncompatibleThreadStateException;
-	public ReferenceType referenceType();
-	public void setValue(Field arg1, Value arg2) throws InvalidTypeException, ClassNotLoadedException;
-	public long uniqueID();
-	public List<ThreadReference> waitingThreads() throws IncompatibleThreadStateException;
-	public List<ObjectReference> referringObjects(long arg1);
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/PathSearchingVirtualMachine.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/PathSearchingVirtualMachine.java
deleted file mode 100644
index 96903bc..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/PathSearchingVirtualMachine.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/PathSearchingVirtualMachine.html
- */
-public abstract interface PathSearchingVirtualMachine extends VirtualMachine {
-	public abstract List<String> classPath();
-	public abstract List<String> bootClassPath();
-	public abstract String baseDirectory();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/PrimitiveType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/PrimitiveType.java
deleted file mode 100644
index 17da974..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/PrimitiveType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/PrimitiveType.html
- */
-public interface PrimitiveType extends Type {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/PrimitiveValue.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/PrimitiveValue.java
deleted file mode 100644
index f2d15b0..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/PrimitiveValue.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/PrimitiveValue.html
- */
-public interface PrimitiveValue extends Value {
-	public boolean booleanValue();
-	public byte byteValue();
-	public char charValue();
-	public double doubleValue();
-	public float floatValue();
-	public int intValue();
-	public long longValue();
-	public short shortValue();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ReferenceType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ReferenceType.java
deleted file mode 100644
index 303c290..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ReferenceType.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-import java.util.Map;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ReferenceType.html
- */
-public interface ReferenceType extends Type, Comparable<ReferenceType>, Accessible {
-	public List<Field> allFields();
-	public List<Location> allLineLocations() throws AbsentInformationException;
-	public List<Location> allLineLocations(String arg1, String arg2) throws AbsentInformationException;
-	public List<Method> allMethods();
-	public List<String> availableStrata();
-	public ClassLoaderReference classLoader();
-	public ClassObjectReference classObject();
-	public String defaultStratum();
-	@Override
-	public boolean equals(Object arg1);
-	public boolean failedToInitialize();
-	public Field fieldByName(String arg1);
-	public List<Field> fields();
-	public String genericSignature();
-	public Value getValue(Field arg1);
-	public Map<Field, Value> getValues(List<? extends Field> arg1);
-	@Override
-	public int hashCode();
-	public boolean isAbstract();
-	public boolean isFinal();
-	public boolean isInitialized();
-	public boolean isPrepared();
-	public boolean isStatic();
-	public boolean isVerified();
-	public List<Location> locationsOfLine(int arg1) throws AbsentInformationException;
-	public List<Location> locationsOfLine(String arg1, String arg2, int arg3)	throws AbsentInformationException;
-	public List<Method> methods();
-	public List<Method> methodsByName(String arg1);
-	public List<Method> methodsByName(String arg1, String arg2);
-	@Override
-	public String name();
-	public List<ReferenceType> nestedTypes();
-	public String sourceDebugExtension() throws AbsentInformationException;
-	public String sourceName() throws AbsentInformationException;
-	public List<String> sourceNames(String arg1) throws AbsentInformationException;
-	public List<String> sourcePaths(String arg1) throws AbsentInformationException;
-	public List<Field> visibleFields();
-	public List<Method> visibleMethods();
-	public List<ObjectReference> instances(long arg1);
-	public int majorVersion();
-	public int minorVersion();
-	public int constantPoolCount();
-	public byte[] constantPool();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ShortType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ShortType.java
deleted file mode 100644
index c6fb240..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ShortType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ShortType.html
- */
-public interface ShortType extends PrimitiveType {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ShortValue.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ShortValue.java
deleted file mode 100644
index 4e8553b..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ShortValue.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ShortValue.html
- */
-public interface ShortValue extends PrimitiveValue, Comparable<ShortValue> {
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-	public short value();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/StackFrame.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/StackFrame.java
deleted file mode 100644
index fe3eee4..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/StackFrame.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-import java.util.Map;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/StackFrame.html
- */
-public interface StackFrame extends Mirror, Locatable {
-	public Value getValue(LocalVariable arg1);
-	public Map<LocalVariable, Value> getValues(List<? extends LocalVariable> arg1);
-	@Override
-	public Location location();
-	public void setValue(LocalVariable arg1, Value arg2) throws InvalidTypeException, ClassNotLoadedException;
-	public ObjectReference thisObject();
-	public ThreadReference thread();
-	public LocalVariable visibleVariableByName(String arg1) throws AbsentInformationException;
-	public List<LocalVariable> visibleVariables() throws AbsentInformationException;
-	public List<Value> getArgumentValues();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/StringReference.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/StringReference.java
deleted file mode 100644
index 66c9406..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/StringReference.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/StringReference.html
- */
-public interface StringReference extends ObjectReference {
-	public String value();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ThreadGroupReference.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ThreadGroupReference.java
deleted file mode 100644
index 143ab4c..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ThreadGroupReference.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ThreadGroupReference.html
- */
-public interface ThreadGroupReference extends ObjectReference {
-	public String name();
-	public ThreadGroupReference parent();
-	public void resume();
-	public void suspend();
-	public List<ThreadGroupReference> threadGroups();
-	public List<ThreadReference> threads();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ThreadReference.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ThreadReference.java
deleted file mode 100644
index 5233c1a..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/ThreadReference.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ThreadReference.html
- */
-public interface ThreadReference extends ObjectReference {
-	public static final int THREAD_STATUS_UNKNOWN = -1;
-	public static final int THREAD_STATUS_ZOMBIE = 0;
-	public static final int THREAD_STATUS_RUNNING = 1;
-	public static final int THREAD_STATUS_SLEEPING = 2;
-	public static final int THREAD_STATUS_MONITOR = 3;
-	public static final int THREAD_STATUS_WAIT = 4;
-	public static final int THREAD_STATUS_NOT_STARTED = 5;
-	public ObjectReference currentContendedMonitor() throws IncompatibleThreadStateException;
-	public StackFrame frame(int arg1) throws IncompatibleThreadStateException;
-	public int frameCount() throws IncompatibleThreadStateException;
-	public List<StackFrame> frames() throws IncompatibleThreadStateException;
-	public List<StackFrame> frames(int arg1, int arg2) throws IncompatibleThreadStateException;
-	public void interrupt();
-	public boolean isAtBreakpoint();
-	public boolean isSuspended();
-	public String name();
-	public List<ObjectReference> ownedMonitors() throws IncompatibleThreadStateException;
-	public void popFrames(StackFrame frame) throws IncompatibleThreadStateException;
-	public void resume();
-	public int status();
-	public void stop(ObjectReference arg1) throws InvalidTypeException;
-	public void suspend();
-	public int suspendCount();
-	public ThreadGroupReference threadGroup();
-	public void forceEarlyReturn(Value arg1) throws InvalidTypeException, ClassNotLoadedException, IncompatibleThreadStateException;
-	public List<MonitorInfo> ownedMonitorsAndFrames() throws IncompatibleThreadStateException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Type.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Type.java
deleted file mode 100644
index 5a6b2e1..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Type.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/Type.html
- */
-public interface Type extends Mirror {
-	public String name();
-	public String signature();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/TypeComponent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/TypeComponent.java
deleted file mode 100644
index 9644155..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/TypeComponent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/TypeComponent.html
- */
-public interface TypeComponent extends Mirror, Accessible {
-	public ReferenceType declaringType();
-	public String genericSignature();
-	public boolean isFinal();
-	public boolean isStatic();
-	public boolean isSynthetic();
-	public String name();
-	public String signature();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMCannotBeModifiedException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMCannotBeModifiedException.java
deleted file mode 100644
index 8b20e53..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMCannotBeModifiedException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/VMCannotBeModifiedException.html
- */
-public class VMCannotBeModifiedException extends UnsupportedOperationException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public VMCannotBeModifiedException() {
-	}
-
-	public VMCannotBeModifiedException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMDisconnectedException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMDisconnectedException.java
deleted file mode 100644
index cdb2c45..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMDisconnectedException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/VMDisconnectedException.html
- */
-public class VMDisconnectedException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public VMDisconnectedException() {
-	}
-
-	public VMDisconnectedException(java.lang.String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMMismatchException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMMismatchException.java
deleted file mode 100644
index 0c20166..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMMismatchException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/VMMismatchException.html
- */
-public class VMMismatchException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public VMMismatchException() {
-	}
-
-	public VMMismatchException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMOutOfMemoryException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMOutOfMemoryException.java
deleted file mode 100644
index a9ce603..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VMOutOfMemoryException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/VMOutOfMemoryException.html
- */
-public class VMOutOfMemoryException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public VMOutOfMemoryException() {
-	}
-
-	public VMOutOfMemoryException(String s) {
-		super(s);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Value.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Value.java
deleted file mode 100644
index db53836..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/Value.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/Value.html
- */
-public interface Value extends Mirror {
-	public Type type();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VirtualMachine.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VirtualMachine.java
deleted file mode 100644
index 77a22fd..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VirtualMachine.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.util.List;
-import java.util.Map;
-
-import com.sun.jdi.event.EventQueue;
-import com.sun.jdi.request.EventRequestManager;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/VirtualMachine.html
- */
-public interface VirtualMachine extends Mirror {
-	public static final int TRACE_NONE = 0;
-	public static final int TRACE_SENDS = 1;
-	public static final int TRACE_RECEIVES = 2;
-	public static final int TRACE_EVENTS = 4;
-	public static final int TRACE_REFTYPES = 8;
-	public static final int TRACE_OBJREFS = 16;
-	public static final int TRACE_ALL = 16777215;
-	public List<ReferenceType> allClasses();
-	public List<ThreadReference> allThreads();
-	public boolean canAddMethod();
-	public boolean canBeModified();
-	public boolean canGetBytecodes();
-	public boolean canGetCurrentContendedMonitor();
-	public boolean canGetMonitorInfo();
-	public boolean canGetOwnedMonitorInfo();
-	public boolean canGetSourceDebugExtension();
-	public boolean canGetSyntheticAttribute();
-	public boolean canPopFrames();
-	public boolean canRedefineClasses();
-	public boolean canRequestVMDeathEvent();
-	public boolean canUnrestrictedlyRedefineClasses();
-	public boolean canUseInstanceFilters();
-	public boolean canWatchFieldAccess();
-	public boolean canWatchFieldModification();
-	public List<ReferenceType> classesByName(String arg1);
-	public String description();
-	public void dispose();
-	public EventQueue eventQueue();
-	public EventRequestManager eventRequestManager();
-	public void exit(int arg1);
-	public String getDefaultStratum();
-	public BooleanValue mirrorOf(boolean arg1);
-	public ByteValue mirrorOf(byte arg1);
-	public CharValue mirrorOf(char arg1);
-	public DoubleValue mirrorOf(double arg1);
-	public FloatValue mirrorOf(float arg1);
-	public IntegerValue mirrorOf(int arg1);
-	public LongValue mirrorOf(long arg1);
-	public StringReference mirrorOf(String arg1);
-	public ShortValue mirrorOf(short arg1);
-	public String name();
-	public Process process();
-	public void redefineClasses(Map<? extends ReferenceType,byte[]> arg1);
-	public void resume();
-	public void setDebugTraceMode(int arg1);
-	public void setDefaultStratum(String arg1);
-	public void suspend();
-	public List<ThreadGroupReference> topLevelThreadGroups();
-	public String version();
-	public boolean canGetInstanceInfo();
-	public long[] instanceCounts(List<? extends ReferenceType> arg1);
-	public boolean canGetClassFileVersion();
-	public boolean canGetConstantPool();
-	public boolean canUseSourceNameFilters();
-	public boolean canGetMethodReturnValues();
-	public boolean canForceEarlyReturn();
-	public boolean canRequestMonitorEvents();
-	public boolean canGetMonitorFrameInfo();
-	public VoidValue mirrorOfVoid();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VirtualMachineManager.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VirtualMachineManager.java
deleted file mode 100644
index 39b6b14..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VirtualMachineManager.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-
-import java.io.IOException;
-import java.util.List;
-
-import com.sun.jdi.connect.AttachingConnector;
-import com.sun.jdi.connect.Connector;
-import com.sun.jdi.connect.LaunchingConnector;
-import com.sun.jdi.connect.ListeningConnector;
-import com.sun.jdi.connect.spi.Connection;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/VirtualMachineManager.html
- */
-public interface VirtualMachineManager {
-	public List<Connector> allConnectors();
-	public List<AttachingConnector> attachingConnectors();
-	public List<VirtualMachine> connectedVirtualMachines();
-	public VirtualMachine createVirtualMachine(Connection connection) throws IOException;
-	public VirtualMachine createVirtualMachine(Connection connection, Process process) throws IOException;
-	public LaunchingConnector defaultConnector();
-	public List<LaunchingConnector> launchingConnectors();
-	public List<ListeningConnector> listeningConnectors();
-	public int majorInterfaceVersion();
-	public int minorInterfaceVersion();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VoidType.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VoidType.java
deleted file mode 100644
index ca11543..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VoidType.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/VoidType.html
- */
-public interface VoidType extends Type {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VoidValue.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VoidValue.java
deleted file mode 100644
index 4bb78c3..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/VoidValue.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/VoidValue.html
- */
-public interface VoidValue extends Value {
-	@Override
-	public boolean equals(Object arg1);
-	@Override
-	public int hashCode();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/AttachingConnector.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/AttachingConnector.java
deleted file mode 100644
index 5ff816b..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/AttachingConnector.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2012 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.connect;
-
-import java.io.IOException;
-import java.util.Map;
-
-import com.sun.jdi.VirtualMachine;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/AttachingConnector.html
- */
-public interface AttachingConnector extends Connector {
-	public VirtualMachine attach(Map<String,? extends Connector.Argument> arguments) throws IOException, IllegalConnectorArgumentsException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/Connector.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/Connector.java
deleted file mode 100644
index 0e93635..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/Connector.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.connect;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/Connector.html
- */
-public interface Connector {
-	public Map<String, Connector.Argument> defaultArguments();
-	public String description();
-	public String name();
-	public Transport transport();
-	/**
-	 * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/Connector.Argument.html
-	 */
-	public interface Argument extends Serializable {
-		public String description();
-		public boolean isValid(String arg1);
-		public String label();
-		public boolean mustSpecify();
-		public String name();
-		public void setValue(String arg1);
-		public String value();
-	}
-	/**
-	 * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/Connector.StringArgument.html
-	 */
-	public interface StringArgument extends Connector.Argument {
-		@Override
-		public boolean isValid(String arg1);
-	}
-	/**
-	 * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/Connector.IntegerArgument.html
-	 */
-	public interface IntegerArgument extends Connector.Argument {
-		public int intValue();
-		public boolean isValid(int arg1);
-		@Override
-		public boolean isValid(String arg1);
-		public int max();
-		public int min();
-		public void setValue(int arg1);
-		public String stringValueOf(int arg1);
-	}
-	/**
-	 * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/Connector.BooleanArgument.html
-	 */
-	public interface BooleanArgument extends Connector.Argument {
-		public boolean booleanValue();
-		@Override
-		public boolean isValid(String arg1);
-		public void setValue(boolean arg1);
-		public String stringValueOf(boolean arg1);
-	}
-	/**
-	 * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/Connector.SelectedArgument.html
-	 */
-	public interface SelectedArgument extends Connector.Argument {
-		public List<String> choices();
-		@Override
-		public boolean isValid(String arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/IllegalConnectorArgumentsException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/IllegalConnectorArgumentsException.java
deleted file mode 100644
index 55399e0..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/IllegalConnectorArgumentsException.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.connect;
-
-import java.util.ArrayList;
-import java.util.List;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/IllegalConnectorArgumentsException.html
- */
-public class IllegalConnectorArgumentsException extends Exception {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	List<String> fNames;
-
-	public IllegalConnectorArgumentsException(String message, List<String> argNames) {
-		super(message);
-		fNames = argNames;
-	}
-
-	public IllegalConnectorArgumentsException(String message, String argName) {
-		super(message);
-		fNames = new ArrayList<>(1);
-		fNames.add(argName);
-	}
-
-	public List<String> argumentNames() {
-		return fNames;
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/LaunchingConnector.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/LaunchingConnector.java
deleted file mode 100644
index 6f109b5..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/LaunchingConnector.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.connect;
-
-import java.io.IOException;
-import java.util.Map;
-
-import com.sun.jdi.VirtualMachine;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/LaunchingConnector.html
- */
-public interface LaunchingConnector extends Connector {
-	public VirtualMachine launch(Map<String,? extends Connector.Argument> arg1) throws IOException, IllegalConnectorArgumentsException, VMStartException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/ListeningConnector.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/ListeningConnector.java
deleted file mode 100644
index 7e8b9c2..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/ListeningConnector.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.connect;
-
-import java.io.IOException;
-import java.util.Map;
-
-import com.sun.jdi.VirtualMachine;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/ListeningConnector.html
- */
-public interface ListeningConnector extends Connector {
-	public VirtualMachine accept(Map<String,? extends Connector.Argument> arg1) throws IOException, IllegalConnectorArgumentsException;
-	public String startListening(Map<String,? extends Connector.Argument> arg1) throws IOException, IllegalConnectorArgumentsException;
-	public void stopListening(Map<String,? extends Connector.Argument> arg1) throws IOException, IllegalConnectorArgumentsException;
-	public boolean supportsMultipleConnections() throws IOException, IllegalConnectorArgumentsException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/Transport.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/Transport.java
deleted file mode 100644
index 57ce481..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/Transport.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.connect;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/Transport.html
- */
-public interface Transport {
-	public String name();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/TransportTimeoutException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/TransportTimeoutException.java
deleted file mode 100644
index 24e4eec..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/TransportTimeoutException.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.connect;
-
-import java.io.IOException;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/TransportTimeoutException.html
- */
-public class TransportTimeoutException extends IOException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public TransportTimeoutException() {
-	}
-
-	public TransportTimeoutException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/VMStartException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/VMStartException.java
deleted file mode 100644
index bac7629..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/VMStartException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.connect;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/VMStartException.html
- */
-public class VMStartException extends Exception {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	Process fProcess;
-
-	public VMStartException(Process proc) {
-		fProcess = proc;
-	}
-
-	public VMStartException(String str, Process proc) {
-		super(str);
-		fProcess = proc;
-	}
-
-	public Process process() {
-		return fProcess;
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/package.html b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/package.html
deleted file mode 100644
index 7eb1b81..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/package.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Eclipse JDI Interfaces</title>
-</head>
-
-<body link="#0000FF" vlink="#800080">
-
-<p align="left">Provides JDI interfaces</p>
-
-<h2 align="left">Package Specification</h2>
-
-<p>This package provides a definition of the JDI class interfaces as specified
-in the JPDA. The specification for these interfaces can be found at
-<a href="http://download.oracle.com/javase/6/docs/jdk/api/jpda/jdi/index.html">
-http://download.oracle.com/javase/6/docs/jdk/api/jpda/jdi/index.html</a> </p>
-</body>
-</html>
-
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/ClosedConnectionException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/ClosedConnectionException.java
deleted file mode 100644
index e427e64..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/ClosedConnectionException.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.connect.spi;
-
-import java.io.IOException;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/spi/ClosedConnectionException.html
- */
-public class ClosedConnectionException extends IOException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public ClosedConnectionException() {
-	}
-
-	public ClosedConnectionException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/Connection.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/Connection.java
deleted file mode 100644
index 9ce86c5..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/Connection.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.connect.spi;
-
-import java.io.IOException;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/spi/Connection.html
- */
-public abstract class Connection {
-	public abstract void close() throws IOException;
-
-	public abstract boolean isOpen();
-
-	public abstract byte[] readPacket() throws IOException;
-
-	public abstract void writePacket(byte[] arg1) throws IOException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/TransportService.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/TransportService.java
deleted file mode 100644
index 94f74ba..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/TransportService.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.connect.spi;
-
-import java.io.IOException;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/spi/TransportService.html
- */
-public abstract class TransportService {
-	/**
-	 * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/spi/TransportService.Capabilities.html
-	 */
-	public abstract static class Capabilities {
-		public abstract boolean supportsAcceptTimeout();
-
-		public abstract boolean supportsAttachTimeout();
-
-		public abstract boolean supportsHandshakeTimeout();
-
-		public abstract boolean supportsMultipleConnections();
-	}
-	/**
-	 * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/connect/spi/TransportService.ListenKey.html
-	 */
-	public abstract static class ListenKey {
-		public abstract String address();
-	}
-
-	public abstract Connection accept(ListenKey listenKey, long attachTimeout,
-			long handshakeTimeout) throws IOException;
-
-	public abstract Connection attach(String address, long attachTimeout,
-			long handshakeTimeout) throws IOException;
-
-	public abstract TransportService.Capabilities capabilities();
-
-	public abstract String description();
-
-	public abstract String name();
-
-	public abstract TransportService.ListenKey startListening()
-			throws IOException;
-
-	public abstract TransportService.ListenKey startListening(String arg1)
-			throws IOException;
-
-	public abstract void stopListening(TransportService.ListenKey arg1)
-			throws IOException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/package.html b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/package.html
deleted file mode 100644
index 7eb1b81..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/connect/spi/package.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Eclipse JDI Interfaces</title>
-</head>
-
-<body link="#0000FF" vlink="#800080">
-
-<p align="left">Provides JDI interfaces</p>
-
-<h2 align="left">Package Specification</h2>
-
-<p>This package provides a definition of the JDI class interfaces as specified
-in the JPDA. The specification for these interfaces can be found at
-<a href="http://download.oracle.com/javase/6/docs/jdk/api/jpda/jdi/index.html">
-http://download.oracle.com/javase/6/docs/jdk/api/jpda/jdi/index.html</a> </p>
-</body>
-</html>
-
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/AccessWatchpointEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/AccessWatchpointEvent.java
deleted file mode 100644
index c562101..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/AccessWatchpointEvent.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/AccessWatchpointEvent.html
- */
-public interface AccessWatchpointEvent extends WatchpointEvent {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/BreakpointEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/BreakpointEvent.java
deleted file mode 100644
index c8cdb2a..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/BreakpointEvent.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/BreakpointEvent.html
- */
-public interface BreakpointEvent extends LocatableEvent {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ClassPrepareEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ClassPrepareEvent.java
deleted file mode 100644
index 483c933..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ClassPrepareEvent.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/ClassPrepareEvent.html
- */
-public interface ClassPrepareEvent extends Event {
-	public ReferenceType referenceType();
-	public ThreadReference thread();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ClassUnloadEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ClassUnloadEvent.java
deleted file mode 100644
index 3a2f574..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ClassUnloadEvent.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/ClassUnloadEvent.html
- */
-public interface ClassUnloadEvent extends Event {
-	public String className();
-	public String classSignature();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/Event.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/Event.java
deleted file mode 100644
index 331a8b3..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/Event.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.Mirror;
-import com.sun.jdi.request.EventRequest;
-
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/Event.html
- */
-public interface Event extends Mirror {
-	public EventRequest request();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/EventIterator.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/EventIterator.java
deleted file mode 100644
index 0d7f03b..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/EventIterator.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import java.util.Iterator;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/EventIterator.html
- */
-public interface EventIterator extends Iterator<Event> {
-	public Event nextEvent();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/EventQueue.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/EventQueue.java
deleted file mode 100644
index b3a03f9..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/EventQueue.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.Mirror;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/EventQueue.html
- */
-public interface EventQueue extends Mirror {
-	public EventSet remove() throws InterruptedException;
-	public EventSet remove(long arg1) throws InterruptedException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/EventSet.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/EventSet.java
deleted file mode 100644
index 93d943f..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/EventSet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2012 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import java.util.Set;
-
-import com.sun.jdi.Mirror;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/EventSet.html
- */
-public interface EventSet extends Mirror, Set<Event> {
-	public EventIterator eventIterator();
-	public void resume();
-	public int suspendPolicy();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ExceptionEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ExceptionEvent.java
deleted file mode 100644
index 1762c28..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ExceptionEvent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.Location;
-import com.sun.jdi.ObjectReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/ExceptionEvent.html
- */
-public interface ExceptionEvent extends LocatableEvent {
-	public Location catchLocation();
-	public ObjectReference exception();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/LocatableEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/LocatableEvent.java
deleted file mode 100644
index 6ea81d9..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/LocatableEvent.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.Locatable;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/LocatableEvent.html
- */
-public abstract interface LocatableEvent extends Event, Locatable {
-	public abstract ThreadReference thread();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MethodEntryEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MethodEntryEvent.java
deleted file mode 100644
index f0ff11d..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MethodEntryEvent.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.Method;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/MethodEntryEvent.html
- */
-public interface MethodEntryEvent extends LocatableEvent {
-	public Method method();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MethodExitEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MethodExitEvent.java
deleted file mode 100644
index d25631d..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MethodExitEvent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.Method;
-import com.sun.jdi.Value;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/MethodExitEvent.html
- */
-public interface MethodExitEvent extends LocatableEvent {
-	public Method method();
-	public Value returnValue();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ModificationWatchpointEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ModificationWatchpointEvent.java
deleted file mode 100644
index 2a1438a..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ModificationWatchpointEvent.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.Value;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/ModificationWatchpointEvent.html
- */
-public interface ModificationWatchpointEvent extends WatchpointEvent {
-	public Value valueToBe();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorContendedEnterEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorContendedEnterEvent.java
deleted file mode 100644
index ac66070..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorContendedEnterEvent.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/MonitorContendedEnterEvent.html
- */
-public interface MonitorContendedEnterEvent extends LocatableEvent {
-	@Override
-	public ThreadReference thread();
-	public ObjectReference monitor();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorContendedEnteredEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorContendedEnteredEvent.java
deleted file mode 100644
index 226879e..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorContendedEnteredEvent.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/MonitorContendedEnteredEvent.html
- */
-public interface MonitorContendedEnteredEvent extends LocatableEvent {
-	@Override
-	public ThreadReference thread();
-	public ObjectReference monitor();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorWaitEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorWaitEvent.java
deleted file mode 100644
index 46774d0..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorWaitEvent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/MonitorWaitEvent.html
- */
-public interface MonitorWaitEvent extends LocatableEvent {
-	@Override
-	public ThreadReference thread();
-	public ObjectReference monitor();
-	public long timeout();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorWaitedEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorWaitedEvent.java
deleted file mode 100644
index 276f4fc..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/MonitorWaitedEvent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/MonitorWaitedEvent.html
- */
-public interface MonitorWaitedEvent extends LocatableEvent {
-	@Override
-	public ThreadReference thread();
-	public ObjectReference monitor();
-	public boolean timedout();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/StepEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/StepEvent.java
deleted file mode 100644
index 1788314..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/StepEvent.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/StepEvent.html
- */
-public interface StepEvent extends LocatableEvent {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ThreadDeathEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ThreadDeathEvent.java
deleted file mode 100644
index 7a5a29a..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ThreadDeathEvent.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/ThreadDeathEvent.html
- */
-public interface ThreadDeathEvent extends Event {
-	public ThreadReference thread();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ThreadStartEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ThreadStartEvent.java
deleted file mode 100644
index ed34f0e..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/ThreadStartEvent.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/ThreadStartEvent.html
- */
-public interface ThreadStartEvent extends Event {
-	public ThreadReference thread();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/VMDeathEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/VMDeathEvent.java
deleted file mode 100644
index 550638a..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/VMDeathEvent.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/VMDeathEvent.html
- */
-public interface VMDeathEvent extends Event {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/VMDisconnectEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/VMDisconnectEvent.java
deleted file mode 100644
index 008ea59..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/VMDisconnectEvent.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/VMDisconnectEvent.html
- */
-public interface VMDisconnectEvent extends Event {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/VMStartEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/VMStartEvent.java
deleted file mode 100644
index 7718f47..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/VMStartEvent.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/VMStartEvent.html
- */
-public interface VMStartEvent extends Event {
-	public ThreadReference thread();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/WatchpointEvent.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/WatchpointEvent.java
deleted file mode 100644
index e7636a2..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/WatchpointEvent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.event;
-
-import com.sun.jdi.Field;
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.Value;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/event/WatchpointEvent.html
- */
-public interface WatchpointEvent extends LocatableEvent {
-	public Field field();
-	public ObjectReference object();
-	public Value valueCurrent();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/package.html b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/package.html
deleted file mode 100644
index 7eb1b81..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/event/package.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Eclipse JDI Interfaces</title>
-</head>
-
-<body link="#0000FF" vlink="#800080">
-
-<p align="left">Provides JDI interfaces</p>
-
-<h2 align="left">Package Specification</h2>
-
-<p>This package provides a definition of the JDI class interfaces as specified
-in the JPDA. The specification for these interfaces can be found at
-<a href="http://download.oracle.com/javase/6/docs/jdk/api/jpda/jdi/index.html">
-http://download.oracle.com/javase/6/docs/jdk/api/jpda/jdi/index.html</a> </p>
-</body>
-</html>
-
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/package.html b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/package.html
deleted file mode 100644
index 7eb1b81..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/package.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Eclipse JDI Interfaces</title>
-</head>
-
-<body link="#0000FF" vlink="#800080">
-
-<p align="left">Provides JDI interfaces</p>
-
-<h2 align="left">Package Specification</h2>
-
-<p>This package provides a definition of the JDI class interfaces as specified
-in the JPDA. The specification for these interfaces can be found at
-<a href="http://download.oracle.com/javase/6/docs/jdk/api/jpda/jdi/index.html">
-http://download.oracle.com/javase/6/docs/jdk/api/jpda/jdi/index.html</a> </p>
-</body>
-</html>
-
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/AccessWatchpointRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/AccessWatchpointRequest.java
deleted file mode 100644
index 8629084..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/AccessWatchpointRequest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/AccessWatchpointRequest.html
- */
-public interface AccessWatchpointRequest extends WatchpointRequest {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/BreakpointRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/BreakpointRequest.java
deleted file mode 100644
index 687ee94..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/BreakpointRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.Locatable;
-import com.sun.jdi.Location;
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/BreakpointRequest.html
- */
-public interface BreakpointRequest extends EventRequest, Locatable {
-	public void addThreadFilter(ThreadReference arg1);
-	public void addInstanceFilter(ObjectReference instance);
-	@Override
-	public Location location();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ClassPrepareRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ClassPrepareRequest.java
deleted file mode 100644
index 93a92b1..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ClassPrepareRequest.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.ReferenceType;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/ClassPrepareRequest.html
- */
-public interface ClassPrepareRequest extends EventRequest {
-	public void addClassExclusionFilter(String arg1);
-	public void addClassFilter(ReferenceType arg1);
-	public void addClassFilter(String arg1);
-	void addSourceNameFilter(String arg1);
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ClassUnloadRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ClassUnloadRequest.java
deleted file mode 100644
index b36a667..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ClassUnloadRequest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/ClassUnloadRequest.html
- */
-public interface ClassUnloadRequest extends EventRequest {
-	public void addClassExclusionFilter(String arg1);
-	public void addClassFilter(String arg1);
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/DuplicateRequestException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/DuplicateRequestException.java
deleted file mode 100644
index 97c8c70..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/DuplicateRequestException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/DuplicateRequestException.html
- */
-public class DuplicateRequestException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public DuplicateRequestException() {
-	}
-
-	public DuplicateRequestException(String message) {
-		super(message);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/EventRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/EventRequest.java
deleted file mode 100644
index c303cbd..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/EventRequest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.Mirror;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/EventRequest.html
- */
-public interface EventRequest extends Mirror {
-	public static final int SUSPEND_NONE = 0;
-	public static final int SUSPEND_EVENT_THREAD = 1;
-	public static final int SUSPEND_ALL = 2;
-
-	public void addCountFilter(int arg1) throws InvalidRequestStateException;
-
-	public void disable();
-
-	public void enable();
-
-	public Object getProperty(Object key);
-
-	public boolean isEnabled();
-
-	public void putProperty(Object key, Object value);
-
-	public void setEnabled(boolean arg1);
-
-	public void setSuspendPolicy(int arg1);
-
-	public int suspendPolicy();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/EventRequestManager.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/EventRequestManager.java
deleted file mode 100644
index fd4b202..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/EventRequestManager.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import java.util.List;
-
-import com.sun.jdi.Field;
-import com.sun.jdi.Location;
-import com.sun.jdi.Mirror;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/EventRequestManager.html
- */
-public interface EventRequestManager extends Mirror {
-	public List<AccessWatchpointRequest> accessWatchpointRequests();
-	public List<BreakpointRequest> breakpointRequests();
-	public List<ClassPrepareRequest> classPrepareRequests();
-	public List<ClassUnloadRequest> classUnloadRequests();
-	public AccessWatchpointRequest createAccessWatchpointRequest(Field arg1);
-	public BreakpointRequest createBreakpointRequest(Location arg1);
-	public ClassPrepareRequest createClassPrepareRequest();
-	public ClassUnloadRequest createClassUnloadRequest();
-	public ExceptionRequest createExceptionRequest(ReferenceType arg1, boolean arg2, boolean arg3);
-	public MethodEntryRequest createMethodEntryRequest();
-	public MethodExitRequest createMethodExitRequest();
-	public MonitorContendedEnteredRequest createMonitorContendedEnteredRequest();
-	public MonitorContendedEnterRequest createMonitorContendedEnterRequest();
-	public MonitorWaitedRequest createMonitorWaitedRequest();
-	public MonitorWaitRequest createMonitorWaitRequest();
-	public ModificationWatchpointRequest createModificationWatchpointRequest(Field arg1);
-	public StepRequest createStepRequest(ThreadReference arg1, int arg2, int arg3);
-	public ThreadDeathRequest createThreadDeathRequest();
-	public ThreadStartRequest createThreadStartRequest();
-	public VMDeathRequest createVMDeathRequest();
-	public void deleteAllBreakpoints();
-	public void deleteEventRequest(EventRequest arg1);
-	public void deleteEventRequests(List<? extends EventRequest> arg1);
-	public List<ExceptionRequest> exceptionRequests();
-	public List<MethodEntryRequest> methodEntryRequests();
-	public List<MethodExitRequest> methodExitRequests();
-	public List<ModificationWatchpointRequest> modificationWatchpointRequests();
-	public List<StepRequest> stepRequests();
-	public List<ThreadDeathRequest> threadDeathRequests();
-	public List<ThreadStartRequest> threadStartRequests();
-	public List<VMDeathRequest> vmDeathRequests();
-	public List<MonitorContendedEnterRequest> monitorContendedEnterRequests();
-	public List<MonitorContendedEnteredRequest> monitorContendedEnteredRequests();
-	public List<MonitorWaitRequest> monitorWaitRequests();
-	public List<MonitorWaitedRequest> monitorWaitedRequests();
-}
\ No newline at end of file
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ExceptionRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ExceptionRequest.java
deleted file mode 100644
index d4854fe..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ExceptionRequest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/ExceptionRequest.html
- */
-public interface ExceptionRequest extends EventRequest {
-	public void addClassExclusionFilter(String arg1);
-	public void addClassFilter(ReferenceType arg1);
-	public void addClassFilter(String arg1);
-	public void addInstanceFilter(ObjectReference instance);
-	public void addThreadFilter(ThreadReference arg1);
-	public ReferenceType exception();
-	public boolean notifyCaught();
-	public boolean notifyUncaught();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/InvalidRequestStateException.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/InvalidRequestStateException.java
deleted file mode 100644
index 258f3bb..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/InvalidRequestStateException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/InvalidRequestStateException.html
- */
-public class InvalidRequestStateException extends RuntimeException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public InvalidRequestStateException() {
-	}
-
-	public InvalidRequestStateException(String arg1) {
-		super(arg1);
-	}
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MethodEntryRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MethodEntryRequest.java
deleted file mode 100644
index 7607e66..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MethodEntryRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/MethodEntryRequest.html
- */
-public interface MethodEntryRequest extends EventRequest {
-	public void addClassExclusionFilter(String arg1);
-	public void addClassFilter(ReferenceType arg1);
-	public void addClassFilter(String arg1);
-	public void addThreadFilter(ThreadReference arg1);
-	public void addInstanceFilter(ObjectReference instance);
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MethodExitRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MethodExitRequest.java
deleted file mode 100644
index eaf6ded..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MethodExitRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/MethodExitRequest.html
- */
-public interface MethodExitRequest extends EventRequest {
-	public void addClassExclusionFilter(String arg1);
-	public void addClassFilter(ReferenceType arg1);
-	public void addClassFilter(String arg1);
-	public void addThreadFilter(ThreadReference arg1);
-	public void addInstanceFilter(ObjectReference instance);
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ModificationWatchpointRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ModificationWatchpointRequest.java
deleted file mode 100644
index 177849d..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ModificationWatchpointRequest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/ModificationWatchpointRequest.html
- */
-public interface ModificationWatchpointRequest extends WatchpointRequest {
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorContendedEnterRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorContendedEnterRequest.java
deleted file mode 100644
index 6d09cb9..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorContendedEnterRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/MonitorContendedEnterRequest.html
- */
-public interface MonitorContendedEnterRequest extends EventRequest {
-	public void addClassExclusionFilter(String arg1) throws InvalidRequestStateException;
-	public void addClassFilter(ReferenceType arg1) throws InvalidRequestStateException;
-	public void addClassFilter(String arg1) throws InvalidRequestStateException;
-	public void addInstanceFilter(ObjectReference arg1) throws InvalidRequestStateException;
-	public void addThreadFilter(ThreadReference arg1) throws InvalidRequestStateException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorContendedEnteredRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorContendedEnteredRequest.java
deleted file mode 100644
index 0162cf0..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorContendedEnteredRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/MonitorContendedEnteredRequest.html
- */
-public interface MonitorContendedEnteredRequest extends EventRequest {
-	public void addClassExclusionFilter(String arg1) throws InvalidRequestStateException;
-	public void addClassFilter(ReferenceType arg1) throws InvalidRequestStateException;
-	public void addClassFilter(String arg1) throws InvalidRequestStateException;
-	public void addInstanceFilter(ObjectReference arg1) throws InvalidRequestStateException;
-	public void addThreadFilter(ThreadReference arg1) throws InvalidRequestStateException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorWaitRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorWaitRequest.java
deleted file mode 100644
index c8a0d1f..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorWaitRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/MonitorWaitRequest.html
- */
-public interface MonitorWaitRequest extends EventRequest {
-	public void addClassExclusionFilter(String arg1) throws InvalidRequestStateException;
-	public void addClassFilter(ReferenceType arg1) throws InvalidRequestStateException;
-	public void addClassFilter(String arg1) throws InvalidRequestStateException;
-	public void addInstanceFilter(ObjectReference arg1) throws InvalidRequestStateException;
-	public void addThreadFilter(ThreadReference arg1) throws InvalidRequestStateException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorWaitedRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorWaitedRequest.java
deleted file mode 100644
index 57d9d7e..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/MonitorWaitedRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/MonitorWaitedRequest.html
- */
-public interface MonitorWaitedRequest extends EventRequest {
-	public void addClassExclusionFilter(String arg1) throws InvalidRequestStateException;
-	public void addClassFilter(ReferenceType arg1) throws InvalidRequestStateException;
-	public void addClassFilter(String arg1) throws InvalidRequestStateException;
-	public void addInstanceFilter(ObjectReference arg1) throws InvalidRequestStateException;
-	public void addThreadFilter(ThreadReference arg1) throws InvalidRequestStateException;
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/StepRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/StepRequest.java
deleted file mode 100644
index 5147434..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/StepRequest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/StepRequest.html
- */
-public interface StepRequest extends EventRequest {
-	public static final int STEP_INTO = 1;
-	public static final int STEP_OVER = 2;
-	public static final int STEP_OUT = 3;
-	public static final int STEP_MIN = -1;
-	public static final int STEP_LINE = -2;
-	public void addClassExclusionFilter(String arg1);
-	public void addClassFilter(ReferenceType arg1);
-	public void addClassFilter(String arg1);
-	public void addInstanceFilter(ObjectReference instance);
-	public int depth();
-	public int size();
-	public ThreadReference thread();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ThreadDeathRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ThreadDeathRequest.java
deleted file mode 100644
index 6d26638..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ThreadDeathRequest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/ThreadDeathRequest.html
- */
-public interface ThreadDeathRequest extends EventRequest {
-	public void addThreadFilter(ThreadReference arg1);
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ThreadStartRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ThreadStartRequest.java
deleted file mode 100644
index ce9284f..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/ThreadStartRequest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/ThreadStartRequest.html
- */
-public interface ThreadStartRequest extends EventRequest {
-	public void addThreadFilter(ThreadReference arg1);
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/VMDeathRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/VMDeathRequest.java
deleted file mode 100644
index 3b5df43..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/VMDeathRequest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/VMDeathRequest.html
- */
-public interface VMDeathRequest extends EventRequest {
-
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/WatchpointRequest.java b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/WatchpointRequest.java
deleted file mode 100644
index 12b4c18..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/WatchpointRequest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package com.sun.jdi.request;
-
-import com.sun.jdi.Field;
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-/**
- * See http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/request/WatchpointRequest.html
- */
-public interface WatchpointRequest extends EventRequest {
-	public void addClassExclusionFilter(String arg1);
-	public void addClassFilter(ReferenceType arg1);
-	public void addClassFilter(String arg1);
-	public void addInstanceFilter(ObjectReference instance);
-	public void addThreadFilter(ThreadReference arg1);
-	public Field field();
-}
diff --git a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/package.html b/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/package.html
deleted file mode 100644
index 7eb1b81..0000000
--- a/org.eclipse.jdt.debug/jdi interfaces/com/sun/jdi/request/package.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Eclipse JDI Interfaces</title>
-</head>
-
-<body link="#0000FF" vlink="#800080">
-
-<p align="left">Provides JDI interfaces</p>
-
-<h2 align="left">Package Specification</h2>
-
-<p>This package provides a definition of the JDI class interfaces as specified
-in the JPDA. The specification for these interfaces can be found at
-<a href="http://download.oracle.com/javase/6/docs/jdk/api/jpda/jdi/index.html">
-http://download.oracle.com/javase/6/docs/jdk/api/jpda/jdi/index.html</a> </p>
-</body>
-</html>
-
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/LocationImpl.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/LocationImpl.java
index 5885ae4..222d070 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/LocationImpl.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/LocationImpl.java
@@ -20,7 +20,6 @@
 import org.eclipse.osgi.util.NLS;
 
 import com.sun.jdi.AbsentInformationException;
-import com.sun.jdi.Locatable;
 import com.sun.jdi.Location;
 import com.sun.jdi.Method;
 import com.sun.jdi.ReferenceType;
@@ -93,7 +92,7 @@
 	 * @see java.lang.Comparable#compareTo(java.lang.Object)
 	 */
 	@Override
-	public int compareTo(Locatable locatable) {
+	public int compareTo(Location locatable) {
 		if (locatable == null || !locatable.getClass().equals(this.getClass())) {
 			throw new ClassCastException(
 					JDIMessages.LocationImpl_Can__t_compare_location_to_given_object_1);
diff --git a/org.eclipse.jdt.debug/pom.xml b/org.eclipse.jdt.debug/pom.xml
index 32a21a1..cdc2b59 100644
--- a/org.eclipse.jdt.debug/pom.xml
+++ b/org.eclipse.jdt.debug/pom.xml
@@ -18,9 +18,6 @@
   </parent>
   <groupId>org.eclipse.jdt</groupId>
   <artifactId>org.eclipse.jdt.debug</artifactId>
-  <version>3.15.200-SNAPSHOT</version>
+  <version>3.16.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
-  <properties>
-    <maven.compiler.release>8</maven.compiler.release>
-  </properties>
 </project>
diff --git a/org.eclipse.jdt.launching/.classpath b/org.eclipse.jdt.launching/.classpath
index 8ee586f..7f26826 100644
--- a/org.eclipse.jdt.launching/.classpath
+++ b/org.eclipse.jdt.launching/.classpath
@@ -1,6 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="launching"/>
 	<classpathentry kind="src" output="support_bin" path="support">
diff --git a/org.eclipse.jdt.launching/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jdt.launching/.settings/org.eclipse.jdt.core.prefs
index 75410b6..425bbf6 100644
--- a/org.eclipse.jdt.launching/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jdt.launching/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
 org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=error
 org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -93,6 +94,7 @@
 org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
 org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=enabled
@@ -126,11 +128,13 @@
 org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=error
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
 org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
 org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL,HIGH,HIGH
 org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,EXPERIMENTAL,CONTEXTLAUNCHING
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=0
@@ -138,17 +142,20 @@
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0
 org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_compact_if=0
 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=0
 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
@@ -232,11 +239,12 @@
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
 org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
 org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -266,6 +274,8 @@
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -290,13 +300,17 @@
 org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
 org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
 org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
 org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
 org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -343,6 +357,8 @@
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -379,9 +395,12 @@
 org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
 org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
 org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -407,8 +426,12 @@
 org.eclipse.jdt.core.formatter.tabulation.size=4
 org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
 org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
 org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
 org.eclipse.jdt.core.incompatibleJDKLevel=ignore
 org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/org.eclipse.jdt.launching/META-INF/MANIFEST.MF b/org.eclipse.jdt.launching/META-INF/MANIFEST.MF
index c2e3b8f..0f31a53 100644
--- a/org.eclipse.jdt.launching/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.launching/META-INF/MANIFEST.MF
@@ -23,5 +23,5 @@
  org.eclipse.osgi;bundle-version="[3.8.0,4.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)"
 Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Automatic-Module-Name: org.eclipse.jdt.launching
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/SocketListenConnectorProcess.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/SocketListenConnectorProcess.java
index a0714fa..50ffe23 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/SocketListenConnectorProcess.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/SocketListenConnectorProcess.java
@@ -113,14 +113,10 @@
 		fStartTime = System.currentTimeMillis();
 		fAccepted = 0;
 		// If the connector does not support multiple connections, accept a single connection
-		try {
-			if (!connector.supportsMultipleConnections()) {
-				fConnectionLimit = 1;
-			}
-		}
-		catch (IOException | IllegalConnectorArgumentsException ex) {
+		if (!connector.supportsMultipleConnections()) {
 			fConnectionLimit = 1;
 		}
+
 		fLaunch.addProcess(this);
 		fWaitForConnectionJob = new WaitForConnectionJob(connector,arguments);
 		fWaitForConnectionJob.setPriority(Job.SHORT);
diff --git a/org.eclipse.jdt.launching/pom.xml b/org.eclipse.jdt.launching/pom.xml
index 3b281c6..93abf6c 100644
--- a/org.eclipse.jdt.launching/pom.xml
+++ b/org.eclipse.jdt.launching/pom.xml
@@ -20,9 +20,6 @@
   <artifactId>org.eclipse.jdt.launching</artifactId>
   <version>3.18.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
-  <properties>
-    <maven.compiler.release>8</maven.compiler.release>
-  </properties>
   
   <build>
         <plugins>
