Move to https://github.com/eclipse/lsp4e/
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 59a2d8f..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-target/
-bin/
-.settings/de.loskutov.anyedit.AnyEditTools.prefs
-.polyglot.*
-.META-INF_MANIFEST.MF
-dash-licenses/
-*.log
diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
deleted file mode 100644
index fdf2f7c..0000000
--- a/.mvn/extensions.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<extensions>
-  <extension>
-    <groupId>org.eclipse.tycho.extras</groupId>
-    <artifactId>tycho-pomless</artifactId>
-    <version>2.5.0</version>
-  </extension>
-</extensions>
diff --git a/.project b/.project
deleted file mode 100644
index ee42d35..0000000
--- a/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>lsp4e</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index bc4bc4a..0000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,73 +0,0 @@
-## LSP4E Changelog and New and Noteworthy
-
-### 0.20.0
-
-📅 Release Date: November 9th, 2021
-
-* Bug 576425 - Support finding resources for remote URIs
-* Bug 573717 - Use JFace notifications instead of Mylyn
-* Bug 576425 - Support locations outside a local file system
-* Bug 571313 - Add support for 'textDocument/linkedEditingRange' method
-* Bug 525413 - [rename] bind rename with Alt+Shift+R instead with F2
-* Multiple dependencies and build machinery updates
-
-### 0.19.0
-
-📅 Release Date: August 17th, 2021
-
-* Use newer LSP4J, bringing compatibility with LSP 3.16
-
-### 0.18.0
-
-📅 Release Date: March 2nd, 2021
-
-* New Capailities
-    * _"Bug 564491 - Replace deprecated editorInput variable in enabledWhen"_ allows to more easily use LSP4E in a TextViewer, outside of an editor
-    * _"Enable a long running LS start() method"_ can allow slower language server to work with LSP4E, while this was previously impossible
-* Bugfixes and other improvements about already existing capability
-    * Ensure LS is valid when triggering didChangeWorkspaceFolder
-    * [#571162] initialize folding capabilities properly.
-    * Bug 570527: launch setBreakpoints and configurationDone after initialized
-    * Bug 569714: delay projects watch in workspace job
-    * Allow DSPDebugTarget to complete earlier for non-debug launch
-    * Enable a long running LS start() method
-    * Make `window/logMessage` to report to Eclipse log instead of Console
-    * Bug 564491 - Replace deprecated editorInput variable in enabledWhen
-    * Bug 569345 - duplicate entries in open declaration (F3 and CTRL click)
-* LSP4E Development utilities
-    * Bug 569270: Add .options to build.properties to make debug/tracing discoverable in PDE
-* Dependencies, releng & build work
-    * Update target platform to newer Eclipse release
-    * Build with Tycho 2.2.0
-    * Move lsp4e.debug BREE to Java 11.
-    * Enable automated dependency IP check (dash license tool) in CI
-
-
-
-### v0.17.0 (Nov 2020)
-
-* Target Platform updated to:
-    * SimRel 2020-09, including Eclipse Platform 4.17
-    * Eclipse LSP4J 0.10.0
-* Java 11 is required to build LSP4E and run tests
-* Java 11 is required to run some of the bundles. For now just the org.eclipse.lsp4e.jdt and test bundles. In a future release it may encompass all the bundles. The Eclipse Platform now has bundles that require Java 11 and some of those bundles may be dependencies of LSP4E.
-* Highlight.js is now being used for lsp4e's completion documentation. See [Bug 565496](https://bugs.eclipse.org/bugs/show_bug.cgi?id=565496)
-* LSP4E's format menu item has been relocated Generic Editor Source submenu
-* New icon for unit completion kind. See [Bug 567812 ](https://bugs.eclipse.org/bugs/show_bug.cgi?id=567812)
-* [CommandExecutor](org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/CommandExecutor.java) has been updated with the improvements that were originally developed in WildWebDeveloper. Migrating those changes back to LSP4E makes these improvements available for all consumers of LSP4E.
-
-See also the [Bugzilla issues](https://bugs.eclipse.org/bugs/buglist.cgi?product=lsp4e&target_milestone=0.17.0) for details of bug fixes and other items changed in this release.
-
-Breaking Changes:
-
-* Eclipse LSP4J has some breaking API changes. While LSP4E's directly declared API did not change,
-  places where LSP4J types are exposed to LSP4E's client code there may be some API change effects.
-  Please consult [LSP4J v0.10.0](https://github.com/eclipse/lsp4j/releases/tag/v0.10.0) for more
-  details.
-
----
-
-### Older releases
-
-In Release 0.17.0 The Changelog was migrated to live in the LSP4E git repo. For older
-versions, please see the [release records on the PMI](https://projects.eclipse.org/projects/technology.lsp4e)
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 05ae502..0000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,130 +0,0 @@
-Issues and code contribution are handled via Eclipse.org infrastructure. See https://projects.eclipse.org/projects/technology.lsp4e/developer
-
-_TL;DR_: `mvn verify` will build a p2-accessible repository in `repository/target/repository`.
-
-# Development
-
-This project is built using _Maven Tycho_, a set of extensions to
-Maven for building Eclipse bundles and features.
-
-## Requirements
-
-1. Maven 3.6.3 or later. Although m2eclipse is bundled with its own Maven install,
-   Maven is necessary for command-line builds.
-
-1. JDK 11. Only Java 8 is required to run core LSP4E, but some components, such as JDT extensions and tests Java 11 is required. Some dependencies of LSP4E may also require Java 11.
-
-1. git (optional: you can use EGit from within Eclipse instead)
-
-1. The [Eclipse IDE](https://www.eclipse.org/downloads/eclipse-packages/).
-  It's easiest to use the _Eclipse IDE for Enterprise Java Developers_ package.
-
-  1. The [m2eclipse plugin](http://www.eclipse.org/m2e/) (also called m2e) is
-     required to import the projects into Eclipse. m2eclipse is included in
-     [several packages](https://www.eclipse.org/downloads/packages/compare),
-     such as the _Eclipse IDE for Enterprise Java Developers_ package.
-
-1. Clone the project to a local directory using `git clone ssh://username@git.eclipse.org:29418/lsp4e/lsp4e.git`.
-
-## Configuring Maven/Tycho Builds
-
-The plugin is built using Maven/Tycho and targeted to Java 8.
-
-
-### Eclipse Platform Target Platform
-
-The build is generally targeted against the newest release of the Eclipse
-Platform. Refer to [target-platform-latest.target](target-platforms/target-platform-latest/target-platform-latest.target) for details on the current dependencies used
-to build LSP4E.
-
-## Import into Eclipse
-
-Prerequisites:
-
-1. You have installed _Eclipse for RCP and RAP Developers_ 4.7 or later. 
-   Other distributions that include PDE and reasonable Java support may also work.
-
-2. You have cloned the lsp4e repo into a local directory.
-
-In Eclipse:
-
-1. **File > Import > Existing Maven Projects**
-
-2. Click **Next**. 
-
-3. In the **Root Directory** chooser select the directory where you cloned the project,
-   and which contains pom.xml.
-
-4. All targets should be selected. Click **Finish**.
-
-5. At this point the Problems view should show on the order of 1000 errors.
-
-6. In the Project Explorer, select the file
-   [target-platform-latest.target](target-platforms/target-platform-latest/target-platform-latest.target).
-   Open this file with the target editor.
-
-7. Click the "Set as Target Platform" link on the top right.
-
-## Contributing Changes
-
-When sending a pull request please squash your commits and set the commit message
-in this form:
-
-```
-Bug 528908 - Change Description
-
-Change details, if needed
-
-Signed-Off-By: Your Name <email@example.org>
-Change-Id: I8cd4aa13a8c61b550cfc80f68ab2b4d230b9f9b3
-```
-To push to Gerrit for review:
-
-```
-$ git push ssh://username@git.eclipse.org:29418/lsp4e/lsp4e.git HEAD:refs/for/master
-```
-
-Please see [Gerrit info on the Eclipse Wiki](https://wiki.eclipse.org/Gerrit) for more information on how to use Gerrit.
-
-Make sure that the name/email in the git commits matches the name/email you have
-registered with the Eclipse project, that you have signed the ECA and that you have
-signed-off your commit. See the section Eclipse Contributor Agreement below for more
-information.
-
-## Bug Tracking
-
-This project uses Bugzilla to track ongoing development and issues.
-
-* Search for issues: https://bugs.eclipse.org/bugs/buglist.cgi?product=LSP4E
-* Create a new report:
-   https://bugs.eclipse.org/bugs/enter_bug.cgi?product=LSP4E
-
-Be sure to search for existing bugs before you create another one. Remember that
-contributions are always welcome!
-
-## Eclipse Development Process
-
-This Eclipse Foundation open project is governed by the Eclipse Foundation
-Development Process and operates under the terms of the Eclipse IP Policy.
-
-## Eclipse Contributor Agreement
-
-Before your contribution can be accepted by the project team contributors must
-electronically sign the Eclipse Contributor Agreement (ECA).
-
-* http://www.eclipse.org/legal/ECA.php
-
-Commits that are provided by non-committers must have a Signed-off-by field in
-the footer indicating that the author is aware of the terms by which the
-contribution has been provided to the project. The non-committer must
-additionally have an Eclipse Foundation account and must have a signed Eclipse
-Contributor Agreement (ECA) on file.
-
-For more information, please see the Eclipse Committer Handbook:
-https://www.eclipse.org/projects/handbook/#resources-commit
-
-## Contact
-
-Contact the project developers via the project's "dev" list.
-
-* https://dev.eclipse.org/mailman/listinfo/lsp4e-dev
diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 4e1c03c..0000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,59 +0,0 @@
-pipeline {
-	options {
-		timeout(time: 40, unit: 'MINUTES')
-		buildDiscarder(logRotator(numToKeepStr:'10'))
-	}
-	agent {
-		label "centos-latest"
-	}
-	tools {
-		maven 'apache-maven-latest'
-		jdk 'openjdk-jdk11-latest'
-	}
-	stages {
-		stage('initialize Gerrit review') {
-			steps {
-				gerritReview labels: [Verified: 0], message: "Build started $BUILD_URL"
-			}
-		}
-		stage('Build') {
-			steps {
-				wrap([$class: 'Xvnc', useXauthority: true]) {
-					sh 'mvn clean verify org.eclipse.dash:license-tool-plugin:license-check -B -Psign -Dmaven.repo.local=$WORKSPACE/.m2/repository -Dmaven.test.failure.ignore=true -Dmaven.test.error.ignore=true -Ddash.fail=true'
-				}
-			}
-			post {
-				always {
-					archiveArtifacts artifacts: 'repository/target/repository/**/*,repository/target/*.zip,*/target/work/data/.metadata/.log'
-					junit '*/target/surefire-reports/TEST-*.xml'
-				}
-				success {
-					gerritReview labels: [Verified: 1], message: "Build Succcess $BUILD_URL"
-				}
-				unstable {
-					gerritReview labels: [Verified: -1], message: "Build UNSTABLE (test failures) $BUILD_URL"
-				}
-				failure {
-					gerritReview labels: [Verified: -1], message: "Build FAILED $BUILD_URL"
-				}
-			}
-		}
-		stage('Deploy Snapshot') {
-			when {
-				branch 'master'
-			}
-			steps {
-				sshagent ( ['projects-storage.eclipse.org-bot-ssh']) {
-					sh '''
-						DOWNLOAD_AREA=/home/data/httpd/download.eclipse.org/lsp4e/snapshots/
-						echo DOWNLOAD_AREA=$DOWNLOAD_AREA
-						ssh genie.lsp4e@projects-storage.eclipse.org "\
-							rm -rf  ${DOWNLOAD_AREA}/* && \
-							mkdir -p ${DOWNLOAD_AREA}"
-						scp -r repository/target/repository/* genie.lsp4e@projects-storage.eclipse.org:${DOWNLOAD_AREA}
-					'''
-				}
-			}
-		}
-	}
-}
diff --git a/README.md b/README.md
index 86738d7..8a4c974 100644
--- a/README.md
+++ b/README.md
@@ -1,74 +1 @@
-# Eclipse LSP4E
-
-[Eclipse LSP4E](https://projects.eclipse.org/projects/technology.lsp4e) makes Eclipse IDE able to consume the [Language Server protocol (LSP)](https://microsoft.github.io/language-server-protocol/) and the [Debug Adapter protocol (DAP)](https://microsoft.github.io/debug-adapter-protocol/).
-
-**Target audience** are Eclipse plugin developers or Language developers willing to integrate a language which ships a Language Server or Debug Adapter into Eclipse IDE. End-users can also take advantage of this as LSP4E also defines a way to bind Eclipse IDE to existing language servers from UI.
-
-**Install it into Eclipse IDE, or add it to your target-platform** using one of this p2 repository:
-* http://download.eclipse.org/lsp4e/releases/latest/ for latest release
-* http://download.eclipse.org/lsp4e/snapshots/ for latest CI build (usually of decent quality)
-
-## Preview
-
-### Language Server in Eclipse in the Eclipse IDE
-[<img alt="Video demo" src="https://content.screencast.com/users/mistria/folders/Default/media/1a860eda-8a50-4668-874c-ee2dd2ef213c/FirstFrame.jpg" width="400px">](http://www.screencast.com/t/Xs3TtaQM)
-
-### Debug Adapter in action in the Eclipse IDE
-[<img alt="Video demo" src="https://content.screencast.com/users/mistria/folders/Default/media/8112c854-eaae-4fd4-b863-84a39e848647/FirstFrame.jpg" width="400px">](https://www.screencast.com/t/0QRpxSA3M7Qy)
-
-## Features
-
-### Edition
-LSP4E mostly ships extensions to the [Generic Editor proposal for Eclipse Platform Text](https://www.eclipse.org/eclipse/news/4.7/M3/#generic-editor). But those classes can be reused in any editor or other extensions.
-
-At the moment, it provides regular JFace/Platform Text classes for:
-* detection of language server for given file
-* synchronization of files with Language Server
-* diagnostics as problem markers
-* completion
-* hover
-* jump to declaration
-* formatting
-* rename refactoring
-* Find References
-* File symbols (as Outline or Quick Outline)
-* Workspace symbols
-* Language Server messages as notifications
-
-### Debug
-
-Support for the Debug Adapter Protocol includes usual debug operations (breakpoints, step forward, step into, view variable value, evaluate expression, change variable value...) in the Platform Debug framework and its related UI components.
-
-## Examples
-
-Examples of integration contain:
-* [Eclipse Corrosion](https://github.com/eclipse/corrosion) **Rust** support plugin for Eclipse IDE, edition is powered by LSP4E and RLS.
-* [Eclipse aCute](https://github.com/eclipse/aCute) **C#** edition in Eclipse IDE using LSP4E and OmniSharp LSP implementation.
-* End-user using Language Server from **Docker image**, providing edition feature in the IDE without creating specific Eclipse IDE plugin: http://www.screencast.com/t/vksX3uZm1aj
-* [Eclipse WildWebDeveloper](https://github.com/eclipse/wildwebdeveloper) **HTML, CSS, JavaScript, TypeScript, Node.js, Angular, JSON, YAML (+Kubernetes) and XMLL** edition, using LSP4E and various language servers from SourceGraph and VSCode.
-* [language-servers-for-eclipse](https://github.com/eclipselabs/language-servers-for-eclipse) Binds various language servers to the Eclipse IDE.
-* [Solargraph](https://github.com/PyvesB/eclipse-solargraph) Binds a **Ruby** language server to the Eclipse IDE.
-* [Quarkus Tools](https://github.com/jbosstools/jbosstools-quarkus) Based on the Eclipse [LSP4MP](https://github.com/eclipse/lsp4mp) language server, extended for Quarkus specifics and binds to application.properties and Java files. 
-
-All those examples are good for usage as they provide advanced edition features, and great for showcase of the LSP4E project.
-
-## Community
-
-Contributions are highly welcome. [See how](CONTRIBUTING.md)
-
-## Changelog - New and Noteworthy
-
-Please review the [Changelog](CHANGELOG.md) for changes and new and noteworthy items.
-
-## Related projects
-
-The [Language Server protocol](https://microsoft.github.io/language-server-protocol/) specification is an open-source project.
-
-As the Language Server Protocol doesn't include support for syntax highlighting, most adopters of LSP4E usually pair it with the [Eclipse TM4E](https://projects.eclipse.org/projects/technology.tm4e) project to provide Syntax Highlighting according to TextMate grammars.
-
-Possible integration with Docker images as language-server are made possible thanks to **Eclipse Docker Tools**, which are part of the [Eclipse LinuxTools](https://projects.eclipse.org/projects/tools.linuxtools) project.
-
-## History
-
-This has been initiated during the EclipseCon France 2016 Unconference with the first official release
-in [February 2017](https://projects.eclipse.org/projects/technology.lsp4e/releases/0.1.0).
+Eclipse LSP4E project is now hosted at GitHub. See https://github.com/eclipse/lsp4e/ .
\ No newline at end of file
diff --git a/documentation/integrating-a-language-server.md b/documentation/integrating-a-language-server.md
deleted file mode 100644
index 0424ad5..0000000
--- a/documentation/integrating-a-language-server.md
+++ /dev/null
@@ -1,15 +0,0 @@
-## Properly integrating a language server with LSP4E
-
-### General principle
-
-Use the `org.eclipse.lsp4e.languageServer` extension in `plugin.xml` to define a language server (ie how to start it and connect to it) and to associate it with one or many content-types.
-
-### Examples
-
-See [multiple examples in the test](../org.eclipse.lsp4e.test/plugin.xml).
-
-### Tips and Tricks
-
-* Use the `ProcessStreamConnectionProvider` if your LS is accessible as a process.
-
-* To handle LSP Commands (e.g. associated with `CodeLens` messages) in the IDE, register a sub-class of `org.eclipse.lsp4e.command.LSPCommandHandler` in the `plugin.xml` file of your plug-in via the `org.eclipse.ui.handlers` extension. The handler has to be registered for the `commandId` equal to the `Command.command` attribute of an LSP message. Note that client side handlers will not be triggered, if the language server is capable of executing commands of the same `commandId`.
\ No newline at end of file
diff --git a/documentation/troubleshooting-language-servers.md b/documentation/troubleshooting-language-servers.md
deleted file mode 100644
index 2c26540..0000000
--- a/documentation/troubleshooting-language-servers.md
+++ /dev/null
@@ -1,17 +0,0 @@
-## Troubleshooting language servers with LSP4E
-
-### Log and analyze LSP messages
-
-In the vast majority of cases, when troubleshooting a Language Server integration, the unique source of truth are the LSP messages that are exchanged between the IDE (Eclipse IDE with LSP4E here) and the language server.
-
-LSP4E allows to easily get those messages, in both directions, logged in a file. To get it, go to _Preferences > Language Servers > Logs_ and find the interesting Language Server to inspect. Then double click on the `Log to file` column to enable logging. A popup will suggest that you restart the IDE, but what you can simply close all files associated to the target Language Server and reopen them, what matters isn't that the IDE restarts, but more that the Language Server restarts.
-
-Then in the _<workspace>/languageServers-log_ folder, you'll see files containing the raw messages and a timestamp. You can then inspect for typical cause of failures such as:
-* an expected message was not sent or received
-* a message contains an erroneous value
-* a message doesn't receive a response in due time
-* ...
-
-### Debug the language server
-
-TODO
\ No newline at end of file
diff --git a/documentation/using-language-server-via-configuration-no-code.md b/documentation/using-language-server-via-configuration-no-code.md
deleted file mode 100644
index 061ecc8..0000000
--- a/documentation/using-language-server-via-configuration-no-code.md
+++ /dev/null
@@ -1,46 +0,0 @@
-## Using a language server with Eclipse IDE, without code
-
-Eclipse LSP4E provides a way to dynamically define a language server and associate it with some files in the Eclipse IDE, without coding the integration.
-
-This is quite handy for testing a lanaguage server, however, it's not recommended to rely on it for actual production usage (you should prefer using the `org.eclipse.lsp4e.languageServers` extension point for that).
-
-Requirements for the language server
-* The Language Server must be "runnable" from command-line
-* The Language Server must start a specific process
-* The Language Server must support communication via __stdin & stdout__ (other streams not supported for this case)
-
-### Step 1: Identify or define the content-type for your Language Server targets
-
-In Preferences > Content-Type, check that either a content-type is already defined for your target files, and that this content type maps such files (by name or extension). If no content-type does that, you can augment an existing content-type or create a new content-type to associate with your target file name patterns/extensions.
-
-📝 The content-type must be a descendant of the _Text_ content-type.
-
-### Step 2: Create a Launch Configuration describing how to start your Language Server
-
-In the usual _Launch Configurations_ dialog, define how your langauge server should be started. Depending on your language server, you may want to start it as a Java Program or as an External Program... Use the various fields to customize things like command-line arguments or environment variables if necessary.
-
-To help you with development and testing, it's usually nice to be able to monitor the language server output. So you may want to tick the _Command > Allocate Console_ checkbox.
-
-### Step 3: Associate content-type with Language Server launch configuration
-
-_Preferences > Language Servers_, on the bottom block _Add..._. Then select
-* on the left: your target content-type
-* on the right: the Launch Configuration that can start your language server
-
-Another option on the association dialog allows to select the "launch mode". For configurations that allows it, you can for example use _debug_ instead of _run_ and that will allow you to benefit from debug capabilities.
-
-Then apply.
-
-### Step 4: See the result in action and monitor the Language Server
-
-Open one of your target files with the Generic Editor (_Right-click > Open With > Generic Editor_), if the file is already open in some editor, you'll need to close and reopen it. Once open in the Generic Editor, you should enjoy rich edition: diagnostics/problems, hover, completion, outline... coming from the Language Server.
-
-If you've enabled the _Allocate Console_ option, the console should show the messages sent by the Language Server to LSP4E.
-
-In the _Debug_ view, you can monitor the state of your Language Server process. Depending on the Launch Configuration type and other options, you have more or less monitoring and control capabilities available.
-
-### Bonus: Developing, testing and debugging a Language Server in the same Eclipse IDE
-
-During [Step 3](#Step 3: Associate content-type with Language Server launch configuration), if you used the _debug_ mode, then the _Debug_ view should show you more details about your language server running. Typically, if your language server is developed with Java or Node and you used related launch configurations, you'll see in debug the various frames/stacks/threads... that you can pause and inspect. Breakpoints would work too.
-
-So LSP4E is also a good way to develop and debug your language-server in the same IDE instance with this approach: you can have the sources of your language server imported, create a Launch Configuration for your Language Server from the project, place breakpoints and so on, associate this launch configuration with the target content-type and start editing the target files to see the breakpoints hit in your IDE.
\ No newline at end of file
diff --git a/org.eclipse.lsp4e.debug/.classpath b/org.eclipse.lsp4e.debug/.classpath
deleted file mode 100644
index e801ebf..0000000
--- a/org.eclipse.lsp4e.debug/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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-11"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.lsp4e.debug/.gitignore b/org.eclipse.lsp4e.debug/.gitignore
deleted file mode 100644
index ae3c172..0000000
--- a/org.eclipse.lsp4e.debug/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/bin/
diff --git a/org.eclipse.lsp4e.debug/.options b/org.eclipse.lsp4e.debug/.options
deleted file mode 100644
index d5d7458..0000000
--- a/org.eclipse.lsp4e.debug/.options
+++ /dev/null
@@ -1,10 +0,0 @@
-# Debugging options for the org.eclipse.lsp4e.debug plug-in
-
-org.eclipse.lsp4e.debug/debug= false
-
-# Tracing of data to/from the debug adapter at the IO level. 
-# This will trace the data to System.out as it is seen on the IO stream.
-org.eclipse.lsp4e.debug/trace/io= false
-# Tracing of data to/from the debug adapter at the message level.
-# This will trace parsed data, reformed into JSON-RPC 2.0 to System.out.
-org.eclipse.lsp4e.debug/trace/messages= false
diff --git a/org.eclipse.lsp4e.debug/.project b/org.eclipse.lsp4e.debug/.project
deleted file mode 100644
index 99fa25d..0000000
--- a/org.eclipse.lsp4e.debug/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.lsp4e.debug</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.lsp4e.debug/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.lsp4e.debug/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 4e38cb1..0000000
--- a/org.eclipse.lsp4e.debug/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,475 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
-org.eclipse.jdt.core.compiler.compliance=11
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-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=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=enabled
-org.eclipse.jdt.core.compiler.source=11
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-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_module_statements=16
-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_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not 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_bitwise_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not 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
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-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_lambda_arrow=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
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-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_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
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-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_lambda_arrow=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
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-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
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-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_additive_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_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
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/org.eclipse.lsp4e.debug/.settings/org.eclipse.jdt.launching.prefs b/org.eclipse.lsp4e.debug/.settings/org.eclipse.jdt.launching.prefs
deleted file mode 100644
index f8a131b..0000000
--- a/org.eclipse.lsp4e.debug/.settings/org.eclipse.jdt.launching.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
-org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/org.eclipse.lsp4e.debug/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.lsp4e.debug/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 844c93f..0000000
--- a/org.eclipse.lsp4e.debug/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,124 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=false
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=false
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=true
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=false
-cleanup.remove_redundant_type_arguments=false
-cleanup.remove_trailing_whitespaces=false
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=true
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=org.eclipse.jdt.ui.default.eclipse_clean_up_profile
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
-formatter_settings_version=15
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=false
-sp_cleanup.remove_redundant_type_arguments=false
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/org.eclipse.lsp4e.debug/EPL-2.0.html b/org.eclipse.lsp4e.debug/EPL-2.0.html
deleted file mode 100644
index 4b95323..0000000
--- a/org.eclipse.lsp4e.debug/EPL-2.0.html
+++ /dev/null
@@ -1,299 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>“Contribution” means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        “originates” from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor's behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>“Contributor” means any person or entity that Distributes the Program.</p>
-    <p>“Licensed Patents” mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>“Program” means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>“Recipient” means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>“Derivative Works” shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>“Modified Works” shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>“Distribute” means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>“Source Code” means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>“Secondary License” means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient's
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient's receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients' rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (‘notices’) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (“Commercial Contributor”)
-      hereby agrees to defend and indemnify every other Contributor
-      (“Indemnified Contributor”) against any losses, damages and costs
-      (collectively “Losses”) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor's responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient's patent(s), then such Recipient's rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient's rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient's rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient's obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
-    <p>“This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.”
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.lsp4e.debug/META-INF/MANIFEST.MF b/org.eclipse.lsp4e.debug/META-INF/MANIFEST.MF
deleted file mode 100644
index da875df..0000000
--- a/org.eclipse.lsp4e.debug/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,31 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Debug Adapter client for Eclipse IDE (Incubation)
-Bundle-SymbolicName: org.eclipse.lsp4e.debug;singleton:=true
-Bundle-Version: 0.13.1.qualifier
-Bundle-Activator: org.eclipse.lsp4e.debug.DSPPlugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.debug.core,
- org.eclipse.debug.ui,
- org.eclipse.jface,
- org.eclipse.lsp4j.jsonrpc;bundle-version="[0.12.0,0.13.0)",
- org.eclipse.lsp4j.jsonrpc.debug;bundle-version="[0.12.0,0.13.0)",
- org.eclipse.lsp4j.debug;bundle-version="[0.12.0,0.13.0)",
- org.eclipse.ui.editors,
- org.eclipse.core.filesystem,
- org.eclipse.ui.ide;bundle-version="[3.16.0,4.0.0)",
- org.eclipse.jface.text,
- org.eclipse.ui.genericeditor
-Bundle-RequiredExecutionEnvironment: JavaSE-11
-Bundle-ActivationPolicy: lazy
-Import-Package: com.google.gson,
- com.google.gson.reflect;version="2.7.0"
-Export-Package: org.eclipse.lsp4e.debug;x-internal:=true,
- org.eclipse.lsp4e.debug.breakpoints;x-internal:=true,
- org.eclipse.lsp4e.debug.console;x-internal:=true,
- org.eclipse.lsp4e.debug.debugmodel;x-internal:=true,
- org.eclipse.lsp4e.debug.launcher,
- org.eclipse.lsp4e.debug.presentation;x-internal:=true,
- org.eclipse.lsp4e.debug.sourcelookup;x-internal:=true
-Automatic-Module-Name: org.eclipse.lsp4e.debug
diff --git a/org.eclipse.lsp4e.debug/build.properties b/org.eclipse.lsp4e.debug/build.properties
deleted file mode 100644
index f2f59c9..0000000
--- a/org.eclipse.lsp4e.debug/build.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               EPL-2.0.html,\
-			   .options,\
-               icons/
diff --git a/org.eclipse.lsp4e.debug/examples/.gitignore b/org.eclipse.lsp4e.debug/examples/.gitignore
deleted file mode 100644
index ba2906d..0000000
--- a/org.eclipse.lsp4e.debug/examples/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-main
diff --git a/org.eclipse.lsp4e.debug/examples/.project b/org.eclipse.lsp4e.debug/examples/.project
deleted file mode 100644
index 7a74c63..0000000
--- a/org.eclipse.lsp4e.debug/examples/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>debugprotocolexamples</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.lsp4e.debug/examples/.vscode/launch.json b/org.eclipse.lsp4e.debug/examples/.vscode/launch.json
deleted file mode 100644
index f00afe1..0000000
--- a/org.eclipse.lsp4e.debug/examples/.vscode/launch.json
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-{
-    "version": "0.2.0",
-    "configurations": [
-        {
-            "name": "Integrated Terminal/Console",
-            "type": "python",
-            "request": "launch",
-            "stopOnEntry": true,
-            "program": "${workspaceRoot}/hello.py",
-            "cwd": "",
-            "console": "integratedTerminal",
-            "env": {}
-        },
-        {
-            "name": "(gdb) Launch",
-            "type": "cppdbg",
-            "request": "launch",
-            "program": "${workspaceRoot}/main",
-            "args": [],
-            "stopAtEntry": false,
-            "cwd": "${workspaceRoot}",
-            "environment": [],
-            "externalConsole": true,
-            "MIMode": "gdb",
-            "setupCommands": [
-                {
-                    "description": "Enable pretty-printing for gdb",
-                    "text": "-enable-pretty-printing",
-                    "ignoreFailures": true
-                }
-            ]
-        },
-        {
-            "type": "mock",
-            "request": "launch",
-            "name": "Mock Debug",
-            "program": "${workspaceRoot}/readme.md",
-            "trace": true
-        }
-    ]
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e.debug/examples/.vscode/settings.json b/org.eclipse.lsp4e.debug/examples/.vscode/settings.json
deleted file mode 100644
index 0f06797..0000000
--- a/org.eclipse.lsp4e.debug/examples/.vscode/settings.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "files.associations": {
-        "stdio.h": "c"
-    }
-}
\ No newline at end of file
diff --git "a/org.eclipse.lsp4e.debug/examples/Launch \050C++\051.launch" "b/org.eclipse.lsp4e.debug/examples/Launch \050C++\051.launch"
deleted file mode 100644
index 26852f2..0000000
--- "a/org.eclipse.lsp4e.debug/examples/Launch \050C++\051.launch"
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.lsp4e.debug.launchType">
-<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
-<listAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_ARGS">
-<listEntry value="/home/jonah/.vscode/extensions/ms-vscode.cpptools-0.14.4/debugAdapters/OpenDebugAD7"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_CMD" value="/bin/bash"/>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_MODE" value="launch server"/>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_PARAM" value="{&#13;&#10;       &quot;name&quot;: &quot;(gdb) Launch&quot;,&#10;      &quot;type&quot;: &quot;cppdbg&quot;,&#10;      &quot;request&quot;: &quot;launch&quot;,&#10;      &quot;program&quot;: &quot;/scratch/debug/git/lsp4e/org.eclipse.lsp4e.debug/examples/main&quot;,&#10;      &quot;args&quot;: [],&#10;      &quot;stopAtEntry&quot;: false,&#10;      &quot;cwd&quot;: &quot;/scratch/debug/git/lsp4e/org.eclipse.lsp4e.debug/examples&quot;,&#10;      &quot;environment&quot;: [],&#10;      &quot;externalConsole&quot;: true,&#10;      &quot;MIMode&quot;: &quot;gdb&quot;,&#10;      &quot;setupCommands&quot;: [&#10;        {&#10;            &quot;description&quot;: &quot;Enable pretty-printing for gdb&quot;,&#10;            &quot;text&quot;: &quot;-enable-pretty-printing&quot;,&#10;            &quot;ignoreFailures&quot;: true&#10;        }&#10;  ]&#10;}"/>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_SERVER_HOST" value="127.0.0.1"/>
-<intAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_SERVER_PORT" value="4711"/>
-</launchConfiguration>
diff --git "a/org.eclipse.lsp4e.debug/examples/Launch \050Mock\051.launch" "b/org.eclipse.lsp4e.debug/examples/Launch \050Mock\051.launch"
deleted file mode 100644
index c02b620..0000000
--- "a/org.eclipse.lsp4e.debug/examples/Launch \050Mock\051.launch"
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.lsp4e.debug.launchType">
-<listAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_ARGS">
-<listEntry value="/home/jonah/.vscode/extensions/andreweinand.mock-debug-0.25.0/out/mockDebug.js"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_CMD" value="/scratch/node/node-v6.11.0-linux-x64/bin/node"/>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_MODE" value="launch server"/>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_PARAM" value="{&#13;&#10;            &quot;type&quot;: &quot;mock&quot;,&#13;&#10;            &quot;request&quot;: &quot;launch&quot;,&#13;&#10;            &quot;name&quot;: &quot;Mock Debug&quot;,&#13;&#10;            &quot;program&quot;: &quot;/scratch/debug/git/lsp4e/org.eclipse.lsp4e.debug/examples/readme.md&quot;,&#13;&#10;            &quot;stopOnEntry&quot;: true,&#13;&#10;            &quot;trace&quot;: true&#13;&#10;}"/>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_SERVER_HOST" value="127.0.0.1"/>
-<intAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_SERVER_PORT" value="4711"/>
-</launchConfiguration>
diff --git "a/org.eclipse.lsp4e.debug/examples/Launch \050Python\051.launch" "b/org.eclipse.lsp4e.debug/examples/Launch \050Python\051.launch"
deleted file mode 100644
index 1c63ace..0000000
--- "a/org.eclipse.lsp4e.debug/examples/Launch \050Python\051.launch"
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.lsp4e.debug.launchType">
-<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
-<listAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_ARGS">
-<listEntry value="/home/jonah/.vscode/extensions/ms-python.python-0.9.0/out/client/debugger/Main.js"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_CMD" value="/scratch/node/node-v6.11.0-linux-x64/bin/node"/>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_MODE" value="launch server"/>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_PARAM" value="{&#10;            &quot;name&quot;: &quot;Integrated Terminal/Console&quot;,&#10;            &quot;type&quot;: &quot;python&quot;,&#10;            &quot;request&quot;: &quot;launch&quot;,&#10;            &quot;stopOnEntry&quot;: true,&#10;            &quot;program&quot;: &quot;/scratch/debug/git/lsp4e/org.eclipse.lsp4e.debug/examples/hello.py&quot;,&#10;            &quot;cwd&quot;: &quot;&quot;,&#10;            &quot;console&quot;: &quot;integratedTerminal&quot;,&#10;            &quot;env&quot;: {}            &#10;}"/>
-<stringAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_SERVER_HOST" value="127.0.0.1"/>
-<intAttribute key="org.eclipse.lsp4e.debug.model.ATTR_DSP_SERVER_PORT" value="4711"/>
-</launchConfiguration>
diff --git a/org.eclipse.lsp4e.debug/examples/Makefile b/org.eclipse.lsp4e.debug/examples/Makefile
deleted file mode 100644
index 334313e..0000000
--- a/org.eclipse.lsp4e.debug/examples/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-all:
-	gcc -Wall -pthread -g -o main main.c
diff --git a/org.eclipse.lsp4e.debug/examples/hello.py b/org.eclipse.lsp4e.debug/examples/hello.py
deleted file mode 100644
index 2acdf91..0000000
--- a/org.eclipse.lsp4e.debug/examples/hello.py
+++ /dev/null
@@ -1,20 +0,0 @@
-################################################################################
-# Copyright (c) 2017 Kichwa Coders Ltd. and others.
-# This program and the accompanying materials are made
-# available under the terms of the Eclipse Public License 2.0
-# which is available at https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-################################################################################
-print("Hello1")
-print("Hello2")
-print("Hello3")
-print("Hello4")
-print("Hello5")
-for i in range(100):
-	print("Hello %s" % i)
-print("Hello1")
-print("Hello2")
-print("Hello3")
-print("Hello4")
-print("Hello5")
diff --git a/org.eclipse.lsp4e.debug/examples/main.c b/org.eclipse.lsp4e.debug/examples/main.c
deleted file mode 100644
index 9822a32..0000000
--- a/org.eclipse.lsp4e.debug/examples/main.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-#include <stdio.h>
-#include <string.h>
-#include <pthread.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-
-#define FOREVER
-#define NUMTHREADS 3
-
-pthread_t tid[NUMTHREADS];
-int threadNums[NUMTHREADS];
-
-void *doSomeThing(void *arg) {
-  int threadNum = *(int *)arg;
-  printf("Running thread %d\n", threadNum);
-
-  // Fake some work
-  for (int i = 0; i < 0xfffffff; i++)
-    ;
-
-  printf("Finishing thread %d\n", threadNum);
-  return NULL;
-}
-
-int main(void) {
-  int err = setvbuf(stdout, NULL, _IONBF, 0);
-  if (err != 0) {
-      printf("Failed to setvbuf: %s\n", strerror(err));
-  }
-
-#ifdef FOREVER
-  while (1) {
-#endif
-  for (int i = 0; i < NUMTHREADS; i++) {
-    threadNums[i] = i;
-    int err = pthread_create(&tid[i], NULL, &doSomeThing, &threadNums[i]);
-    if (err != 0) {
-      printf("Failed to create thread %d: %s\n", i, strerror(err));
-    } else {
-      printf("Created thread %d\n", i);
-    }
-  }
-
-  printf("Joining threads\n");
-  for (int i = 0; i < NUMTHREADS; i++) {
-    int err = pthread_join(tid[i], NULL);
-    if (err != 0) {
-      printf("Failed to join thread %d: %s\n", i, strerror(err));
-    } else {
-      printf("Joined thread %d\n", i);
-    }
-  }
-#ifdef FOREVER
-  printf("Sleeping before restarting.\n");
-  sleep(3);
-  }
-#endif
-
-  
-  printf("Main thread done\n");
-  return 0;
-}
diff --git a/org.eclipse.lsp4e.debug/examples/readme.md b/org.eclipse.lsp4e.debug/examples/readme.md
deleted file mode 100644
index 1a875de..0000000
--- a/org.eclipse.lsp4e.debug/examples/readme.md
+++ /dev/null
@@ -1,11 +0,0 @@
-## Examples for lsp4e.debug
-
-This project contains launch settings to launch the following debug adapters:
-
-- Mock Debug -- https://marketplace.visualstudio.com/items?itemName=andreweinand.mock-debug
-- Python -- https://marketplace.visualstudio.com/items?itemName=ms-python.python
-- C/C++ -- https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools
-
-Each of the examples has settings for launching in VS Code's launch.json, plus launch configurations for LSP4E.Debug.
-
-You will most probably need to update the paths to files within the various launch files depending on where you clone this repo.
diff --git a/org.eclipse.lsp4e.debug/forceQualifierUpdate.properties b/org.eclipse.lsp4e.debug/forceQualifierUpdate.properties
deleted file mode 100644
index db051cb..0000000
--- a/org.eclipse.lsp4e.debug/forceQualifierUpdate.properties
+++ /dev/null
@@ -1 +0,0 @@
-Bump qualifier so sources are published.
\ No newline at end of file
diff --git a/org.eclipse.lsp4e.debug/icons/pda.gif b/org.eclipse.lsp4e.debug/icons/pda.gif
deleted file mode 100644
index 04c5052..0000000
--- a/org.eclipse.lsp4e.debug/icons/pda.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e.debug/icons/view16/debugger_tab.gif b/org.eclipse.lsp4e.debug/icons/view16/debugger_tab.gif
deleted file mode 100644
index d90a29f..0000000
--- a/org.eclipse.lsp4e.debug/icons/view16/debugger_tab.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e.debug/plugin.xml b/org.eclipse.lsp4e.debug/plugin.xml
deleted file mode 100644
index 527e059..0000000
--- a/org.eclipse.lsp4e.debug/plugin.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
-   <extension
-         point="org.eclipse.debug.core.launchConfigurationTypes">
-      <launchConfigurationType
-            delegate="org.eclipse.lsp4e.debug.launcher.DSPLaunchDelegate"
-            id="org.eclipse.lsp4e.debug.launchType"
-            modes="debug,run"
-            name="Debug Adapter Launcher"
-            public="true"
-            sourceLocatorId="org.eclipse.lsp4e.debug.sourceLocator"
-            sourcePathComputerId="org.eclipse.lsp4e.debug.sourcePathComputer">
-      </launchConfigurationType>
-   </extension>
-   <extension
-         point="org.eclipse.debug.ui.launchConfigurationTabGroups">
-      <launchConfigurationTabGroup
-            class="org.eclipse.lsp4e.debug.launcher.DSPTabGroup"
-            description="Debug using the debug protocol"
-            id="org.eclipse.lsp4e.debug.tabGroup"
-            type="org.eclipse.lsp4e.debug.launchType">
-      </launchConfigurationTabGroup>
-   </extension>
-   <extension
-         point="org.eclipse.debug.ui.launchConfigurationTypeImages">
-      <launchConfigurationTypeImage
-            configTypeID="org.eclipse.lsp4e.debug.launchType"
-            icon="icons/pda.gif"
-            id="org.eclipse.lsp4e.debug.typeImage">
-      </launchConfigurationTypeImage>
-   </extension>
-   <extension
-         point="org.eclipse.debug.ui.debugModelPresentations">
-      <debugModelPresentation
-            class="org.eclipse.lsp4e.debug.presentation.DSPDebugModelPresentation"
-            id="org.eclipse.lsp4e.debug.model">
-      </debugModelPresentation>
-   </extension>
-   <extension
-         point="org.eclipse.debug.core.sourceLocators">
-      <sourceLocator
-            class="org.eclipse.lsp4e.debug.sourcelookup.DSPSourceLookupDirector"
-            id="org.eclipse.lsp4e.debug.sourceLocator"
-            name="LSP4E Debug Source Locator">
-      </sourceLocator>
-   </extension>
-   <extension
-         point="org.eclipse.debug.core.sourcePathComputers">
-      <sourcePathComputer
-            class="org.eclipse.lsp4e.debug.sourcelookup.DSPSourcePathComputerDelegate"
-            id="org.eclipse.lsp4e.debug.sourcePathComputer">
-      </sourcePathComputer>
-   </extension>
-   <extension
-         point="org.eclipse.ui.editorActions">
-      <editorContribution
-            targetID="org.eclipse.ui.DefaultTextEditor"
-            id="org.eclipse.lsp4e.debug.textEditor.rulerActions">
-         <action
-               label="unusedlabel"
-               class="org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
-               style="push"
-               actionID="RulerDoubleClick"
-               id="org.eclipse.lsp4e.debug.textEditor.doubleClickBreakpointAction"/>
-      </editorContribution>
-      <editorContribution
-            targetID="org.eclipse.ui.genericeditor.GenericEditor"
-            id="org.eclipse.lsp4e.debug.genericEditor.rulerActions">
-         <action
-               label="unusedlabel"
-               class="org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
-               style="push"
-               actionID="RulerDoubleClick"
-               id="org.eclipse.lsp4e.debug.genericEditor.doubleClickBreakpointAction"/>
-      </editorContribution>
-   </extension>
-   <extension
-         point="org.eclipse.core.runtime.adapters">
-      <factory
-            adaptableType="org.eclipse.jface.text.TextSelection"
-            class="org.eclipse.lsp4e.debug.breakpoints.TextSelectionToIVariable">
-         <adapter
-               type="org.eclipse.debug.core.model.IVariable">
-         </adapter>
-      </factory>
-   </extension>
-   <extension
-         id="org.eclipse.lsp4e.debug.breakpoints.markerType.lineBreakpoint"
-         name="LSP4E Debug Line Breakpoint Marker"
-         point="org.eclipse.core.resources.markers">
-      <super type="org.eclipse.debug.core.lineBreakpointMarker"/>
-      <persistent value="true"/>
-   </extension>
-   <extension
-         point="org.eclipse.debug.core.breakpoints">
-      <breakpoint
-            class="org.eclipse.lsp4e.debug.breakpoints.DSPLineBreakpoint"
-            name="LSP4E Debug Line Breakpoint"
-            markerType="org.eclipse.lsp4e.debug.breakpoints.markerType.lineBreakpoint"
-            id="org.eclipse.lsp4e.debug.breakpoints.lineBreakpoint"/>
-   </extension>
-   <extension point="org.eclipse.debug.ui.toggleBreakpointsTargetFactories">
-      <toggleTargetFactory
-            id="org.eclipse.lsp4e.debug.breakpoints.ToggleBreakpointsTargetFactory"
-            class="org.eclipse.lsp4e.debug.breakpoints.ToggleBreakpointsTargetFactory">
-      </toggleTargetFactory>
-   </extension>
-</plugin>
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/DSPImages.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/DSPImages.java
deleted file mode 100644
index 0538dc3..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/DSPImages.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2019 QNX Software Systems 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:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.debug;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.swt.graphics.Image;
-
-public class DSPImages {
-	private DSPImages() {
-		// private constructor to avoid instances, requested by sonar
-	}
-
-	private static final String NAME_PREFIX = DSPPlugin.PLUGIN_ID + '.';
-	private static final int NAME_PREFIX_LENGTH = NAME_PREFIX.length();
-
-	// The plugin registry
-	private static ImageRegistry imageRegistry = new ImageRegistry();
-
-	// Subdirectory (under the package containing this class) where 16 color images
-	// are
-	private static URL fgIconBaseURL;
-	static {
-		fgIconBaseURL = Platform.getBundle(DSPPlugin.PLUGIN_ID).getEntry("/icons/"); //$NON-NLS-1$
-	}
-
-	private static final String T_TABS = "view16/"; //$NON-NLS-1$
-	@SuppressWarnings("unused") // none yet, leave for the future
-	private static final String T_OBJS = "obj16/"; //$NON-NLS-1$
-
-	public static final String IMG_VIEW_DEBUGGER_TAB = NAME_PREFIX + "debugger_tab.gif"; //$NON-NLS-1$
-
-	public static final ImageDescriptor DESC_TAB_DEBUGGER = createManaged(T_TABS, IMG_VIEW_DEBUGGER_TAB);
-
-	public static void initialize() {
-	}
-
-	private static ImageDescriptor createManaged(String prefix, String name) {
-		return createManaged(imageRegistry, prefix, name);
-	}
-
-	private static ImageDescriptor createManaged(ImageRegistry registry, String prefix, String name) {
-		ImageDescriptor result = ImageDescriptor
-				.createFromURL(makeIconFileURL(prefix, name.substring(NAME_PREFIX_LENGTH)));
-		registry.put(name, result);
-		return result;
-	}
-
-	public static Image get(String key) {
-		return imageRegistry.get(key);
-	}
-
-	private static URL makeIconFileURL(String prefix, String name) {
-		StringBuilder buffer = new StringBuilder(prefix);
-		buffer.append(name);
-		try {
-			return new URL(fgIconBaseURL, buffer.toString());
-		} catch (MalformedURLException e) {
-			DSPPlugin.logError(e);
-			return null;
-		}
-	}
-
-	/**
-	 * Helper method to access the image registry from the JavaPlugin class.
-	 */
-	static ImageRegistry getImageRegistry() {
-		return imageRegistry;
-	}
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/DSPPlugin.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/DSPPlugin.java
deleted file mode 100644
index 2fa64f3..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/DSPPlugin.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2018 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.lsp4j.jsonrpc.ResponseErrorException;
-import org.eclipse.lsp4j.jsonrpc.messages.ResponseError;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class DSPPlugin extends AbstractUIPlugin {
-	public static final boolean DEBUG = Boolean.parseBoolean(Platform.getDebugOption("org.eclipse.lsp4e.debug/debug")); //$NON-NLS-1$
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.lsp4e.debug"; //$NON-NLS-1$
-
-	// Unique identifier for the DSP debug model launch config
-	public static final String ID_DSP_DEBUG_MODEL = "org.eclipse.lsp4e.debug.model";
-
-	// Launch configuration attribute keys
-	/** String, one of {@link #DSP_MODE_LAUNCH} or {@link #DSP_MODE_CONNECT} */
-	public static final String ATTR_DSP_MODE = ID_DSP_DEBUG_MODEL + ".ATTR_DSP_MODE";
-	public static final String DSP_MODE_LAUNCH = "launch server";
-	public static final String DSP_MODE_CONNECT = "connect to server";
-	/** String */
-	public static final String ATTR_DSP_CMD = ID_DSP_DEBUG_MODEL + ".ATTR_DSP_CMD";
-	/** List<String> */
-	public static final String ATTR_DSP_ARGS = ID_DSP_DEBUG_MODEL + ".ATTR_DSP_ARGS";
-	/** String - should be properly formed JSON */
-	public static final String ATTR_DSP_PARAM = ID_DSP_DEBUG_MODEL + ".ATTR_DSP_PARAM";
-	/** String */
-	public static final String ATTR_DSP_SERVER_HOST = ID_DSP_DEBUG_MODEL + ".ATTR_DSP_SERVER_HOST";
-	/** Integer */
-	public static final String ATTR_DSP_SERVER_PORT = ID_DSP_DEBUG_MODEL + ".ATTR_DSP_SERVER_PORT";
-	/** Boolean */
-	public static final String ATTR_DSP_MONITOR_DEBUG_ADAPTER = ID_DSP_DEBUG_MODEL + ".ATTR_DSP_MONITOR_ADAPTER";
-	/** Boolean */
-	public static final String ATTR_CUSTOM_DEBUG_ADAPTER = ID_DSP_DEBUG_MODEL + ".ATTR_CUSTOM_DEBUG_ADAPTER";
-	/** Boolean */
-	public static final String ATTR_CUSTOM_LAUNCH_PARAMS = ID_DSP_DEBUG_MODEL + ".ATTR_CUSTOM_LAUNCH_PARAMS";
-
-	// The shared instance
-	private static DSPPlugin plugin;
-
-	public DSPPlugin() {
-	}
-
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		plugin = this;
-	}
-
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 *
-	 * @return the shared instance
-	 */
-	public static DSPPlugin getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * Utility method to log errors.
-	 *
-	 * @param thr The exception through which we noticed the error
-	 */
-	public static void logError(final Throwable thr) {
-		logError(thr.getMessage(), thr);
-	}
-
-	/**
-	 * Utility method to log errors.
-	 *
-	 * @param message User comprehensible message
-	 * @param thr     The exception through which we noticed the error
-	 */
-	public static void logError(final String message, final Throwable thr) {
-		log(IStatus.ERROR, message, thr);
-	}
-
-	/**
-	 * Log an info message for this plug-in
-	 *
-	 * @param message
-	 */
-	public static void logInfo(final String message) {
-		log(IStatus.INFO, message, null);
-	}
-
-	/**
-	 * Utility method to log warnings for this plug-in.
-	 *
-	 * @param message User comprehensible message
-	 * @param thr     The exception through which we noticed the warning
-	 */
-	public static void logWarning(final String message, final Throwable thr) {
-		log(IStatus.WARNING, message, thr);
-	}
-
-	private static void log(int severity, String message, final Throwable thr) {
-		ResponseError error = null;
-		if (thr instanceof ResponseErrorException) {
-			ResponseErrorException responseErrorException = (ResponseErrorException) thr;
-			error = responseErrorException.getResponseError();
-		} else if (thr != null && thr.getCause() instanceof ResponseErrorException) {
-			ResponseErrorException responseErrorException = (ResponseErrorException) thr.getCause();
-			error = responseErrorException.getResponseError();
-		}
-		if (error != null) {
-			try {
-				message += " - response error: " + error.toString();
-			} catch (Exception e) {
-				message += " - response error formatting exception " + e.getMessage();
-			}
-		}
-		getDefault().getLog().log(new Status(severity, PLUGIN_ID, 0, message, thr));
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/DSPBreakpointAdapter.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/DSPBreakpointAdapter.java
deleted file mode 100644
index 387388e..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/DSPBreakpointAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.breakpoints;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.core.model.ILineBreakpoint;
-import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.lsp4e.debug.DSPPlugin;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-public class DSPBreakpointAdapter implements IToggleBreakpointsTarget {
-	@Override
-	public void toggleLineBreakpoints(IWorkbenchPart part, ISelection selection) throws CoreException {
-		ITextEditor textEditor = getEditor(part);
-		if (textEditor != null) {
-			IResource resource = textEditor.getEditorInput().getAdapter(IResource.class);
-			if (resource != null) {
-				ITextSelection textSelection = (ITextSelection) selection;
-				int lineNumber = textSelection.getStartLine();
-				IBreakpoint[] breakpoints = DebugPlugin.getDefault().getBreakpointManager()
-						.getBreakpoints(DSPPlugin.ID_DSP_DEBUG_MODEL);
-				for (int i = 0; i < breakpoints.length; i++) {
-					IBreakpoint breakpoint = breakpoints[i];
-					if (breakpoint instanceof ILineBreakpoint && resource.equals(breakpoint.getMarker().getResource())
-							&& ((ILineBreakpoint) breakpoint).getLineNumber() == (lineNumber + 1)) {
-						// remove
-						breakpoint.delete();
-						return;
-					}
-				}
-				// create line breakpoint (doc line numbers start at 0)
-				DSPLineBreakpoint lineBreakpoint = new DSPLineBreakpoint(resource, lineNumber + 1);
-				DebugPlugin.getDefault().getBreakpointManager().addBreakpoint(lineBreakpoint);
-			}
-		}
-	}
-
-	@Override
-	public boolean canToggleLineBreakpoints(IWorkbenchPart part, ISelection selection) {
-		// TODO
-		return true;
-	}
-
-	private ITextEditor getEditor(IWorkbenchPart part) {
-		if (part instanceof ITextEditor) {
-			return (ITextEditor) part;
-		}
-		return null;
-	}
-
-	@Override
-	public void toggleMethodBreakpoints(IWorkbenchPart part, ISelection selection) throws CoreException {
-		// TODO
-	}
-
-	@Override
-	public boolean canToggleMethodBreakpoints(IWorkbenchPart part, ISelection selection) {
-		// TODO
-		return false;
-	}
-
-	@Override
-	public void toggleWatchpoints(IWorkbenchPart part, ISelection selection) throws CoreException {
-		// TODO
-	}
-
-	@Override
-	public boolean canToggleWatchpoints(IWorkbenchPart part, ISelection selection) {
-		// TODO
-		return false;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/DSPLineBreakpoint.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/DSPLineBreakpoint.java
deleted file mode 100644
index 9d12d5d..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/DSPLineBreakpoint.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.breakpoints;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.core.model.LineBreakpoint;
-import org.eclipse.lsp4e.debug.DSPPlugin;
-
-public class DSPLineBreakpoint extends LineBreakpoint {
-
-	public static final String ID = "org.eclipse.lsp4e.debug.breakpoints.markerType.lineBreakpoint";
-
-	public DSPLineBreakpoint() {
-	}
-
-	public DSPLineBreakpoint(final IResource resource, final int lineNumber) throws CoreException {
-		run(getMarkerRule(resource), monitor -> {
-			IMarker marker = resource.createMarker(ID);
-			setMarker(marker);
-			marker.setAttribute(IBreakpoint.ENABLED, Boolean.TRUE);
-			marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
-			marker.setAttribute(IBreakpoint.ID, getModelIdentifier());
-			marker.setAttribute(IMarker.MESSAGE, resource.getName() + " [line: " + lineNumber + "]");
-		});
-	}
-
-	public DSPLineBreakpoint(final IResource resource, String fileName, final int lineNumber) throws CoreException {
-		run(getMarkerRule(resource), monitor -> {
-			IMarker marker = resource.createMarker(ID);
-			setMarker(marker);
-			marker.setAttribute(IBreakpoint.ENABLED, Boolean.TRUE);
-			marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
-			marker.setAttribute(IBreakpoint.ID, getModelIdentifier());
-			marker.setAttribute(IMarker.MESSAGE, resource.getName() + " [line: " + lineNumber + "]");
-		});
-	}
-
-	@Override
-	public String getModelIdentifier() {
-		return DSPPlugin.ID_DSP_DEBUG_MODEL;
-	}
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/TextSelectionToIVariable.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/TextSelectionToIVariable.java
deleted file mode 100644
index 88b3399..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/TextSelectionToIVariable.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.breakpoints;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.concurrent.ExecutionException;
-
-import org.eclipse.core.runtime.Adapters;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.model.IValue;
-import org.eclipse.debug.core.model.IVariable;
-import org.eclipse.debug.ui.DebugUITools;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.lsp4e.debug.DSPPlugin;
-import org.eclipse.lsp4e.debug.debugmodel.DSPStackFrame;
-
-public class TextSelectionToIVariable implements IAdapterFactory {
-
-	@Override
-	public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
-		if (!(adaptableObject instanceof TextSelection)) {
-			return null;
-		}
-		if (!IVariable.class.isAssignableFrom(adapterType)) {
-			return null;
-		}
-		TextSelection selection = (TextSelection) adaptableObject;
-		return (T) getVariableFor(selection);
-	}
-
-	@Override
-	public Class<?>[] getAdapterList() {
-		return new Class<?>[] { IVariable.class };
-	}
-
-	private IVariable getVariableFor(TextSelection selection) {
-		IDocument document = getDocument(selection);
-		if (document == null) {
-			return null;
-		}
-		DSPStackFrame frame = getFrame();
-		if (frame == null) {
-			return null;
-		}
-		try {
-			String variableName = document.get(selection.getOffset(), selection.getLength());
-			if (variableName.isEmpty()) {
-				variableName = findVariableName(document, selection.getOffset());
-			}
-
-			if (Boolean.TRUE.equals(frame.getDebugTarget().getCapabilities().getSupportsEvaluateForHovers())) {
-				try {
-					// ok to call get as it should be a different thread.
-					return frame.evaluate(variableName).get();
-				} catch (ExecutionException e) {
-					DSPPlugin.logError(e);
-					// will fall back by looking by looking up in current frame
-				} catch (InterruptedException e) {
-					Thread.currentThread().interrupt();
-					DSPPlugin.logError(e);
-					// will fall back by looking by looking up in current frame
-				}
-
-			}
-
-			try {
-				for (IVariable scopeVariable : frame.getVariables()) {
-					IValue scope = scopeVariable.getValue();
-					if (scope != null) {
-						IVariable[] vars = scope.getVariables();
-						for (IVariable var : vars) {
-							if (var.getName().equals(variableName)) {
-								return var;
-							}
-						}
-					}
-				}
-			} catch (DebugException de) {
-				DSPPlugin.logError(de);
-			}
-
-		} catch (BadLocationException e) {
-			DSPPlugin.logError(e);
-		}
-		return null;
-	}
-
-	private String findVariableName(IDocument document, int offset) {
-		try {
-			if (!Character.isJavaIdentifierPart(document.getChar(offset))) {
-				return null;
-			}
-			int startOffset = offset;
-			while (startOffset - 1 >= 0 && Character.isJavaIdentifierPart(document.getChar(startOffset - 1)))
-				startOffset--;
-			int endOffset = offset;
-			while (endOffset + 1 < document.getLength()
-					&& Character.isJavaIdentifierPart(document.getChar(endOffset + 1)))
-				endOffset++;
-			return document.get(startOffset, endOffset - startOffset + 1);
-		} catch (BadLocationException ex) {
-			DSPPlugin.logError(ex);
-			return null;
-		}
-	}
-
-	protected DSPStackFrame getFrame() {
-		IAdaptable adaptable = DebugUITools.getDebugContext();
-		if (adaptable != null) {
-			return Adapters.adapt(adaptable, DSPStackFrame.class);
-		}
-		return null;
-	}
-
-	private IDocument getDocument(TextSelection sel) {
-		try {
-			Method documentMethod = TextSelection.class.getDeclaredMethod("getDocument"); //$NON-NLS-1$
-			documentMethod.setAccessible(true);
-			return (IDocument) documentMethod.invoke(sel);
-		} catch (NoSuchMethodException | IllegalArgumentException | IllegalAccessException
-				| InvocationTargetException e) {
-			DSPPlugin.logError(e);
-			return null;
-		}
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/ToggleBreakpointsTargetFactory.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/ToggleBreakpointsTargetFactory.java
deleted file mode 100644
index ccfdc23..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/breakpoints/ToggleBreakpointsTargetFactory.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders Canada Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.breakpoints;
-
-import java.util.Collections;
-import java.util.Set;
-
-import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget;
-import org.eclipse.debug.ui.actions.IToggleBreakpointsTargetFactory;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.lsp4e.debug.DSPPlugin;
-import org.eclipse.ui.IWorkbenchPart;
-
-public class ToggleBreakpointsTargetFactory implements IToggleBreakpointsTargetFactory {
-
-	private static final DSPBreakpointAdapter DSP_BREAKPOINT_ADAPTER = new DSPBreakpointAdapter();
-
-	public static final String TOGGLE_BREAKPOINT_TARGET_ID = DSPPlugin.PLUGIN_ID + ".toggleBreakpointTarget"; //$NON-NLS-1$
-
-	private static final Set<String> TOGGLE_TARGET_IDS = Collections.singleton(TOGGLE_BREAKPOINT_TARGET_ID);
-
-	@Override
-	public Set<String> getToggleTargets(IWorkbenchPart part, ISelection selection) {
-		return TOGGLE_TARGET_IDS;
-	}
-
-	@Override
-	public String getDefaultToggleTarget(IWorkbenchPart part, ISelection selection) {
-		return null;
-	}
-
-	@Override
-	public IToggleBreakpointsTarget createToggleTarget(String targetID) {
-		if (TOGGLE_BREAKPOINT_TARGET_ID.equals(targetID)) {
-			return DSP_BREAKPOINT_ADAPTER;
-		}
-		return null;
-	}
-
-	@Override
-	public String getToggleTargetName(String targetID) {
-		if (TOGGLE_BREAKPOINT_TARGET_ID.equals(targetID)) {
-			return "LSP4E Breakpoint";
-		}
-		return null;
-	}
-
-	@Override
-	public String getToggleTargetDescription(String targetID) {
-		if (TOGGLE_BREAKPOINT_TARGET_ID.equals(targetID)) {
-			return "LSP4E Breakpoint for Debug Adapter";
-		}
-		return null;
-
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/console/DSPProcess.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/console/DSPProcess.java
deleted file mode 100644
index d727af9..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/console/DSPProcess.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.console;
-
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.lsp4e.debug.debugmodel.DSPDebugTarget;
-
-/**
- * Represents that Debug Adapter process and provides a console to see any
- * communication to/from the adapter.
- */
-public class DSPProcess implements IProcess {
-
-	private DSPDebugTarget target;
-	private DSPStreamsProxy proxy;
-
-	public DSPProcess(DSPDebugTarget target) {
-		this.target = target;
-		this.proxy = new DSPStreamsProxy(target.getDebugProtocolServer());
-	}
-
-	@Override
-	public <T> T getAdapter(Class<T> adapter) {
-		return target.getAdapter(adapter);
-	}
-
-	@Override
-	public boolean canTerminate() {
-		return target.canTerminate();
-	}
-
-	@Override
-	public boolean isTerminated() {
-		return target.isTerminated();
-	}
-
-	@Override
-	public void terminate() throws DebugException {
-		target.terminate();
-	}
-
-	@Override
-	public String getLabel() {
-		// TODO
-		return target.getName();
-	}
-
-	@Override
-	public ILaunch getLaunch() {
-		return target.getLaunch();
-	}
-
-	@Override
-	public DSPStreamsProxy getStreamsProxy() {
-		return proxy;
-	}
-
-	@Override
-	public void setAttribute(String key, String value) {
-		// TODO
-	}
-
-	@Override
-	public String getAttribute(String key) {
-		// TODO
-		return null;
-	}
-
-	@Override
-	public int getExitValue() throws DebugException {
-		// TODO
-		return 0;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/console/DSPStreamMonitor.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/console/DSPStreamMonitor.java
deleted file mode 100644
index 8518499..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/console/DSPStreamMonitor.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.console;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.debug.core.IStreamListener;
-import org.eclipse.debug.core.model.IFlushableStreamMonitor;
-
-public class DSPStreamMonitor implements IFlushableStreamMonitor {
-
-	private ListenerList<IStreamListener> listeners = new ListenerList<>();
-	private StringBuilder stream = new StringBuilder();
-	private boolean buffer;
-
-	@Override
-	public String getContents() {
-		return stream.toString();
-	}
-
-	@Override
-	public void addListener(IStreamListener listener) {
-		listeners.add(listener);
-	}
-
-	@Override
-	public void removeListener(IStreamListener listener) {
-		listeners.remove(listener);
-	}
-
-	public void append(String text) {
-		if (buffer && text != null) {
-			stream.append(text);
-		}
-		notifyAppend(text);
-	}
-
-	public void notifyAppend(String text) {
-		if (text == null) {
-			return;
-		}
-		for (IStreamListener listener : listeners) {
-			SafeRunner.run(() -> listener.streamAppended(text, this));
-		}
-	}
-
-	@Override
-	public void flushContents() {
-		stream.setLength(0);
-		stream.trimToSize();
-	}
-
-	@Override
-	public void setBuffered(boolean buffer) {
-		this.buffer = buffer;
-	}
-
-	@Override
-	public boolean isBuffered() {
-		return buffer;
-	}
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/console/DSPStreamsProxy.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/console/DSPStreamsProxy.java
deleted file mode 100644
index d20350f..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/console/DSPStreamsProxy.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.console;
-
-import java.io.IOException;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.debug.core.model.IStreamsProxy2;
-import org.eclipse.lsp4j.debug.EvaluateArguments;
-import org.eclipse.lsp4j.debug.EvaluateArgumentsContext;
-import org.eclipse.lsp4j.debug.EvaluateResponse;
-import org.eclipse.lsp4j.debug.services.IDebugProtocolServer;
-import org.eclipse.lsp4j.jsonrpc.ResponseErrorException;
-import org.eclipse.lsp4j.jsonrpc.messages.ResponseError;
-
-public class DSPStreamsProxy implements IStreamsProxy2 {
-
-	private IDebugProtocolServer debugProtocolServer;
-	private DSPStreamMonitor outputStream;
-	private DSPStreamMonitor errorStream;
-
-	public DSPStreamsProxy(IDebugProtocolServer debugProtocolServer) {
-		this.debugProtocolServer = debugProtocolServer;
-		this.errorStream = new DSPStreamMonitor();
-		this.outputStream = new DSPStreamMonitor();
-	}
-
-	@Override
-	public DSPStreamMonitor getErrorStreamMonitor() {
-		return errorStream;
-	}
-
-	@Override
-	public DSPStreamMonitor getOutputStreamMonitor() {
-		return outputStream;
-	}
-
-	@Override
-	public void write(String input) throws IOException {
-		String trimmed = input.trim();
-		if (!trimmed.isEmpty()) {
-			EvaluateArguments args = new EvaluateArguments();
-			args.setContext(EvaluateArgumentsContext.REPL);
-			args.setExpression(trimmed);
-			// TODO args.setFrameId(0);
-			CompletableFuture<EvaluateResponse> future = debugProtocolServer.evaluate(args);
-			future.thenAcceptAsync(response -> {
-				// TODO support structured responses too?
-				if (response != null && response.getResult() != null) {
-					String result = response.getResult() + System.lineSeparator();
-					outputStream.append(result);
-				}
-			}).exceptionally(t -> {
-				if (t.getCause() instanceof ResponseErrorException) {
-					ResponseErrorException exception = (ResponseErrorException) t.getCause();
-					ResponseError error = exception.getResponseError();
-					errorStream.append(error.getMessage() + System.lineSeparator());
-				} else {
-					errorStream.append(t.getLocalizedMessage() + System.lineSeparator());
-				}
-				return null;
-			});
-		}
-	}
-
-	@Override
-	public void closeInputStream() throws IOException {
-		// TODO
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPBreakpointManager.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPBreakpointManager.java
deleted file mode 100644
index 627abde..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPBreakpointManager.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.debugmodel;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IMarkerDelta;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.debug.core.IBreakpointListener;
-import org.eclipse.debug.core.IBreakpointManager;
-import org.eclipse.debug.core.IBreakpointManagerListener;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.core.model.ILineBreakpoint;
-import org.eclipse.lsp4e.debug.DSPPlugin;
-import org.eclipse.lsp4j.debug.BreakpointEventArguments;
-import org.eclipse.lsp4j.debug.Capabilities;
-import org.eclipse.lsp4j.debug.SetBreakpointsArguments;
-import org.eclipse.lsp4j.debug.SetBreakpointsResponse;
-import org.eclipse.lsp4j.debug.Source;
-import org.eclipse.lsp4j.debug.SourceBreakpoint;
-import org.eclipse.lsp4j.debug.services.IDebugProtocolServer;
-
-/**
- * TODO The DSP breakpoint manager is a minimal effort so far. It does not
- * really work as there isn't a two way mapping of debug adapter setting. Big
- * TODOs:
- * <ul>
- * <li>Function breakpoints
- * <li>Event points
- * <li>Update platform breakpoints based on adapter events and responses
- * <li>Support for line breakpoints not on IResource. For example CDT has
- * additional fields in the marker to specify full path
- */
-public class DSPBreakpointManager implements IBreakpointManagerListener, IBreakpointListener {
-	private Map<Source, List<SourceBreakpoint>> targetBreakpoints = new HashMap<>();
-	private IDebugProtocolServer debugProtocolServer;
-	private IBreakpointManager platformBreakpointManager;
-	private Capabilities capabilities;
-
-	public DSPBreakpointManager(IBreakpointManager platformBreakpointManager, IDebugProtocolServer debugProtocolServer,
-			Capabilities capabilities) {
-		this.debugProtocolServer = debugProtocolServer;
-		this.platformBreakpointManager = platformBreakpointManager;
-		this.capabilities = capabilities;
-	}
-
-	/**
-	 * Initialize the manager and send all platform breakpoints to the debug
-	 * adapter.
-	 *
-	 * @return the completeable future to signify when the breakpoints are all sent.
-	 */
-	public CompletableFuture<Void> initialize() {
-		platformBreakpointManager.addBreakpointListener(this);
-		platformBreakpointManager.addBreakpointManagerListener(this);
-		return resendAllTargetBreakpoints(platformBreakpointManager.isEnabled());
-	}
-
-	/**
-	 * Called when the debug manager is no longer needed/debug session is shut down.
-	 */
-	public void shutdown() {
-		platformBreakpointManager.removeBreakpointListener(this);
-		platformBreakpointManager.removeBreakpointManagerListener(this);
-	}
-
-	/**
-	 * Returns whether this target can install the given breakpoint.
-	 *
-	 * @param breakpoint breakpoint to consider
-	 * @return whether this target can install the given breakpoint
-	 */
-	public boolean supportsBreakpoint(IBreakpoint breakpoint) {
-		return breakpoint instanceof ILineBreakpoint;
-	}
-
-	/**
-	 * When the breakpoint manager disables, remove all registered breakpoints
-	 * requests from the VM. When it enables, reinstall them.
-	 */
-	@Override
-	public void breakpointManagerEnablementChanged(boolean enabled) {
-		resendAllTargetBreakpoints(enabled);
-	}
-
-	private CompletableFuture<Void> resendAllTargetBreakpoints(boolean enabled) {
-		IBreakpoint[] breakpoints = platformBreakpointManager.getBreakpoints();
-		for (IBreakpoint breakpoint : breakpoints) {
-			if (supportsBreakpoint(breakpoint)) {
-				if (enabled) {
-					addBreakpointToMap(breakpoint);
-				} else {
-					deleteBreakpointFromMap(breakpoint);
-				}
-			}
-		}
-		return sendBreakpoints();
-	}
-
-	@Override
-	public void breakpointAdded(IBreakpoint breakpoint) {
-		if (supportsBreakpoint(breakpoint)) {
-			try {
-				if ((breakpoint.isEnabled() && platformBreakpointManager.isEnabled()) || !breakpoint.isRegistered()) {
-					addBreakpointToMap(breakpoint);
-					sendBreakpoints();
-				}
-			} catch (CoreException e) {
-				DSPPlugin.logError(e);
-			}
-		}
-	}
-
-	@Override
-	public void breakpointRemoved(IBreakpoint breakpoint, IMarkerDelta delta) {
-		if (supportsBreakpoint(breakpoint)) {
-			deleteBreakpointFromMap(breakpoint);
-			sendBreakpoints();
-		}
-	}
-
-	@Override
-	public void breakpointChanged(IBreakpoint breakpoint, IMarkerDelta delta) {
-		if (supportsBreakpoint(breakpoint)) {
-			try {
-				if (breakpoint.isEnabled() && platformBreakpointManager.isEnabled()) {
-					breakpointAdded(breakpoint);
-				} else {
-					breakpointRemoved(breakpoint, null);
-				}
-			} catch (CoreException e) {
-			}
-		}
-	}
-
-	private void addBreakpointToMap(IBreakpoint breakpoint) {
-		Assert.isTrue(supportsBreakpoint(breakpoint) && breakpoint instanceof ILineBreakpoint);
-		if (breakpoint instanceof ILineBreakpoint) {
-			ILineBreakpoint lineBreakpoint = (ILineBreakpoint) breakpoint;
-			IMarker marker = lineBreakpoint.getMarker();
-			IResource resource = marker.getResource();
-			IPath location = resource.getLocation();
-			String path = location.toOSString();
-			String name = location.lastSegment();
-			int lineNumber;
-			try {
-				lineNumber = lineBreakpoint.getLineNumber();
-			} catch (CoreException e) {
-				lineNumber = -1;
-			}
-
-			Source source = new Source();
-			source.setName(name);
-			source.setPath(path);
-
-			List<SourceBreakpoint> sourceBreakpoints = targetBreakpoints.computeIfAbsent(source,
-					s -> new ArrayList<>());
-			SourceBreakpoint sourceBreakpoint = new SourceBreakpoint();
-			sourceBreakpoint.setLine(lineNumber);
-			sourceBreakpoints.add(sourceBreakpoint);
-		}
-	}
-
-	private void deleteBreakpointFromMap(IBreakpoint breakpoint) {
-		Assert.isTrue(supportsBreakpoint(breakpoint) && breakpoint instanceof ILineBreakpoint);
-		if (breakpoint instanceof ILineBreakpoint) {
-			ILineBreakpoint lineBreakpoint = (ILineBreakpoint) breakpoint;
-			IResource resource = lineBreakpoint.getMarker().getResource();
-			IPath location = resource.getLocation();
-			String path = location.toOSString();
-			String name = location.lastSegment();
-			int lineNumber;
-			try {
-				lineNumber = lineBreakpoint.getLineNumber();
-			} catch (CoreException e) {
-				lineNumber = -1;
-			}
-			for (Entry<Source, List<SourceBreakpoint>> entry : targetBreakpoints.entrySet()) {
-				Source source = entry.getKey();
-				if (Objects.equals(name, source.getName()) && Objects.equals(path, source.getPath())) {
-					List<SourceBreakpoint> bps = entry.getValue();
-					for (Iterator<SourceBreakpoint> iterator = bps.iterator(); iterator.hasNext();) {
-						SourceBreakpoint sourceBreakpoint = iterator.next();
-						if (Objects.equals(lineNumber, sourceBreakpoint.getLine())) {
-							iterator.remove();
-						}
-					}
-				}
-			}
-		}
-	}
-
-	private CompletableFuture<Void> sendBreakpoints() {
-		List<CompletableFuture<Void>> all = new ArrayList<>();
-		for (Iterator<Entry<Source, List<SourceBreakpoint>>> iterator = targetBreakpoints.entrySet()
-				.iterator(); iterator.hasNext();) {
-			Entry<Source, List<SourceBreakpoint>> entry = iterator.next();
-
-			Source source = entry.getKey();
-			List<SourceBreakpoint> bps = entry.getValue();
-			int[] lines = bps.stream().mapToInt(SourceBreakpoint::getLine).toArray();
-			SourceBreakpoint[] sourceBps = bps.toArray(new SourceBreakpoint[bps.size()]);
-
-			SetBreakpointsArguments arguments = new SetBreakpointsArguments();
-			arguments.setSource(source);
-			arguments.setLines(lines);
-			arguments.setBreakpoints(sourceBps);
-			arguments.setSourceModified(false);
-			CompletableFuture<SetBreakpointsResponse> future = debugProtocolServer.setBreakpoints(arguments);
-			CompletableFuture<Void> future2 = future.thenAccept((SetBreakpointsResponse bpResponse) -> {
-				// TODO update platform breakpoint with new info
-			});
-			all.add(future2);
-
-			// Once we told adapter there are no breakpoints for a source file, we can stop
-			// tracking that file
-			if (bps.isEmpty()) {
-				iterator.remove();
-			}
-		}
-		return CompletableFuture.allOf(all.toArray(new CompletableFuture[all.size()]));
-	}
-
-	public void breakpointEvent(BreakpointEventArguments args) {
-		// TODO Implement updates to breakpoints that come from the server (e.g.
-		// breakpoints inserted/modified/removed from the CLI)
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPDebugElement.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPDebugElement.java
deleted file mode 100644
index 0c280fe..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPDebugElement.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.debugmodel;
-
-import java.util.concurrent.CancellationException;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IBreakpointManager;
-import org.eclipse.debug.core.model.DebugElement;
-import org.eclipse.lsp4e.debug.DSPPlugin;
-import org.eclipse.lsp4j.debug.services.IDebugProtocolServer;
-
-public abstract class DSPDebugElement extends DebugElement {
-
-	private String errorMessage;
-
-	public DSPDebugElement(DSPDebugTarget target) {
-		super(target);
-	}
-
-	@Override
-	public String getModelIdentifier() {
-		return DSPPlugin.ID_DSP_DEBUG_MODEL;
-	}
-
-	@Override
-	public DSPDebugTarget getDebugTarget() {
-		return (DSPDebugTarget) super.getDebugTarget();
-	}
-
-	public IDebugProtocolServer getDebugProtocolServer() {
-		return getDebugTarget().getDebugProtocolServer();
-	}
-
-	/**
-	 * Returns the breakpoint manager
-	 *
-	 * @return the breakpoint manager
-	 */
-	protected IBreakpointManager getBreakpointManager() {
-		return DebugPlugin.getDefault().getBreakpointManager();
-	}
-
-	/**
-	 * TODO: This method was created for the prototyping work. It needs to be
-	 * replaced now.
-	 *
-	 * Gets the response from the debug command and prints some debug info
-	 *
-	 * @param future
-	 * @throws DebugException
-	 */
-	protected static <T> T complete(CompletableFuture<T> future) throws DebugException {
-		try {
-			return future.get();
-		} catch (ExecutionException e) {
-			throw newTargetRequestFailedException("Failed to get result from target", e);
-		} catch (InterruptedException e) {
-			Thread.currentThread().interrupt();
-			throw newTargetRequestFailedException("Failed to get result from target", e);
-		}
-	}
-
-	protected static <T> T monitorGet(CompletableFuture<T> future, IProgressMonitor monitor) throws DebugException {
-		try {
-			while (true) {
-				if (monitor.isCanceled()) {
-					future.cancel(true);
-					return future.get();
-				}
-				try {
-					return future.get(100, TimeUnit.MILLISECONDS);
-				} catch (TimeoutException e) {
-					// check monitor cancelled and try again.
-				}
-			}
-		} catch (CancellationException e) {
-			throw new DebugException(new Status(IStatus.CANCEL, DSPPlugin.PLUGIN_ID,
-					DebugException.TARGET_REQUEST_FAILED, "Cancelled", e));
-		} catch (InterruptedException e) {
-			Thread.currentThread().interrupt();
-			future.cancel(true);
-			throw new DebugException(new Status(IStatus.CANCEL, DSPPlugin.PLUGIN_ID,
-					DebugException.TARGET_REQUEST_FAILED, "Interrupted", e));
-		} catch (ExecutionException e) {
-			throw new DebugException(new Status(IStatus.ERROR, DSPPlugin.PLUGIN_ID,
-					DebugException.TARGET_REQUEST_FAILED, "Unexpected exception", e));
-		}
-
-	}
-
-	protected static DebugException newTargetRequestFailedException(String message, Throwable e) {
-		return new DebugException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
-				DebugException.TARGET_REQUEST_FAILED, message, e));
-	}
-
-	protected void setErrorMessage(String message) {
-		errorMessage = message;
-	}
-
-	/**
-	 * Return the error message for the current element, or <code>null</code> if
-	 * none.
-	 *
-	 * @return error message to display to the user
-	 */
-	public String getErrorMessage() {
-		// TODO Once set, we never clear an error on an element
-		return errorMessage;
-	}
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPDebugTarget.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPDebugTarget.java
deleted file mode 100644
index 6da1217..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPDebugTarget.java
+++ /dev/null
@@ -1,712 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017-2020 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Pierre-Yves Bigourdan <pyvesdev@gmail.com>:
- *    Bug 552451 - Should the DSPProcess be added to the Launch when "attach" is used?
- *    Bug 553196 - Toolbar & console terminate buttons always enabled even when the DSPDebugTarget is terminated
- *    Bug 553234 - Implement DSPDebugTarget disconnect methods
- *    Bug 567158 - IllegalArgumentException when terminating DPSProcess that was never initialised
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.debugmodel;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.function.UnaryOperator;
-
-import org.eclipse.core.resources.IMarkerDelta;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IMemoryBlock;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.lsp4e.debug.DSPPlugin;
-import org.eclipse.lsp4e.debug.console.DSPProcess;
-import org.eclipse.lsp4e.debug.console.DSPStreamsProxy;
-import org.eclipse.lsp4j.debug.BreakpointEventArguments;
-import org.eclipse.lsp4j.debug.Capabilities;
-import org.eclipse.lsp4j.debug.ConfigurationDoneArguments;
-import org.eclipse.lsp4j.debug.ContinuedEventArguments;
-import org.eclipse.lsp4j.debug.DisconnectArguments;
-import org.eclipse.lsp4j.debug.ExitedEventArguments;
-import org.eclipse.lsp4j.debug.InitializeRequestArguments;
-import org.eclipse.lsp4j.debug.LoadedSourceEventArguments;
-import org.eclipse.lsp4j.debug.ModuleEventArguments;
-import org.eclipse.lsp4j.debug.OutputEventArguments;
-import org.eclipse.lsp4j.debug.OutputEventArgumentsCategory;
-import org.eclipse.lsp4j.debug.ProcessEventArguments;
-import org.eclipse.lsp4j.debug.RunInTerminalRequestArguments;
-import org.eclipse.lsp4j.debug.RunInTerminalRequestArgumentsKind;
-import org.eclipse.lsp4j.debug.RunInTerminalResponse;
-import org.eclipse.lsp4j.debug.StoppedEventArguments;
-import org.eclipse.lsp4j.debug.TerminateArguments;
-import org.eclipse.lsp4j.debug.TerminatedEventArguments;
-import org.eclipse.lsp4j.debug.Thread;
-import org.eclipse.lsp4j.debug.ThreadEventArguments;
-import org.eclipse.lsp4j.debug.ThreadsResponse;
-import org.eclipse.lsp4j.debug.launch.DSPLauncher;
-import org.eclipse.lsp4j.debug.services.IDebugProtocolClient;
-import org.eclipse.lsp4j.debug.services.IDebugProtocolServer;
-import org.eclipse.lsp4j.jsonrpc.Launcher;
-import org.eclipse.lsp4j.jsonrpc.MessageConsumer;
-import org.eclipse.lsp4j.jsonrpc.services.JsonRequest;
-import org.eclipse.lsp4j.jsonrpc.validation.ReflectiveMessageValidator;
-
-public class DSPDebugTarget extends DSPDebugElement implements IDebugTarget, IDebugProtocolClient {
-	private static final boolean TRACE_IO = Boolean
-			.parseBoolean(Platform.getDebugOption("org.eclipse.lsp4e.debug/trace/io")); //$NON-NLS-1$
-	private static final boolean TRACE_MESSAGES = Boolean
-			.parseBoolean(Platform.getDebugOption("org.eclipse.lsp4e.debug/trace/messages")); //$NON-NLS-1$
-
-	/**
-	 * Any events we receive from the adapter that require further contact with the
-	 * adapter needs to be farmed off to another thread as the events arrive on the
-	 * same thread. (Note for requests, use the *Async versions on
-	 * completeablefuture to achieve the same effect.)
-	 */
-	private ExecutorService threadPool = Executors.newCachedThreadPool();
-
-	private ILaunch launch;
-	private Future<?> debugProtocolFuture;
-	private IDebugProtocolServer debugProtocolServer;
-	private Capabilities capabilities;
-	/**
-	 * Once we have received initialized event, this member will be "done" as a flag
-	 */
-	private CompletableFuture<Void> initialized = new CompletableFuture<>();
-
-	/**
-	 * The cached set of current threads. This should generally not be directly
-	 * accessed and instead accessed via {@link #getThreads()} which will ensure
-	 * they are up to date (against the {@link #refreshThreads} flag).
-	 */
-	private Map<Integer, DSPThread> threads = Collections.synchronizedMap(new TreeMap<>());
-	/**
-	 * Set to true to update the threads list from the debug adapter.
-	 */
-	private AtomicBoolean refreshThreads = new AtomicBoolean(true);
-
-	private boolean fTerminated = false;
-	private boolean fSentTerminateRequest = false;
-	private String targetName = null;
-
-	private Runnable processCleanup;
-	private DSPBreakpointManager breakpointManager;
-	private DSPProcess process;
-	private InputStream in;
-	private OutputStream out;
-
-	/**
-	 * User supplied debug paramters for {@link IDebugProtocolServer#launch(Map)}
-	 * and {@link IDebugProtocolServer#attach(Map)}
-	 */
-	private Map<String, Object> dspParameters;
-
-	public DSPDebugTarget(ILaunch launch, Runnable processCleanup, InputStream in, OutputStream out,
-			Map<String, Object> dspParameters) {
-		super(null);
-		this.in = in;
-		this.out = out;
-		this.launch = launch;
-		this.processCleanup = processCleanup;
-		this.dspParameters = dspParameters;
-	}
-
-	public void initialize(IProgressMonitor monitor) throws CoreException {
-		SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
-		try {
-
-			PrintWriter traceMessages;
-			if (TRACE_MESSAGES) {
-				traceMessages = new PrintWriter(System.out);
-			} else {
-				traceMessages = null;
-			}
-			if (TRACE_IO) {
-				in = new TraceInputStream(in, System.out);
-				out = new TraceOutputStream(out, System.out);
-			}
-			// TODO this Function copied from createClientLauncher so that I can replace
-			// threadpool, so make this wrapper more accessible
-			UnaryOperator<MessageConsumer> wrapper = consumer -> {
-				MessageConsumer result = consumer;
-				if (traceMessages != null) {
-					result = message -> {
-						traceMessages.println(message);
-						traceMessages.flush();
-						consumer.consume(message);
-					};
-				}
-				if (true) {
-					result = new ReflectiveMessageValidator(result);
-				}
-				return result;
-			};
-
-			InputStream in2 = in;
-			OutputStream out2 = out;
-			ExecutorService threadPool2 = threadPool;
-			Launcher<? extends IDebugProtocolServer> debugProtocolLauncher = createLauncher(wrapper, in2, out2,
-					threadPool2);
-
-			debugProtocolFuture = debugProtocolLauncher.startListening();
-			debugProtocolServer = debugProtocolLauncher.getRemoteProxy();
-
-			CompletableFuture<?> future = initialize(dspParameters, subMonitor);
-			monitorGet(future, subMonitor);
-		} catch (Exception e) {
-			terminated();
-			throw e;
-		} finally {
-			subMonitor.done();
-		}
-	}
-
-	/**
-	 * As the main reason for extending {@link DSPDebugTarget} is to interface to a
-	 * custom debug adapter that has more functionality than the protocol defines.
-	 * Overriding this method allows an extender to provide their own service
-	 * interface that extends {@link IDebugProtocolServer}.
-	 *
-	 * For more information on how to <a href=
-	 * "https://github.com/eclipse/lsp4j/tree/master/documentation#extending-the-protocol">extend
-	 * the protocol</a> using LSP4J
-	 */
-	protected Launcher<? extends IDebugProtocolServer> createLauncher(UnaryOperator<MessageConsumer> wrapper,
-			InputStream in, OutputStream out, ExecutorService threadPool) {
-		Launcher<IDebugProtocolServer> debugProtocolLauncher = DSPLauncher.createClientLauncher(this, in, out,
-				threadPool, wrapper);
-		return debugProtocolLauncher;
-	}
-
-	private CompletableFuture<?> initialize(Map<String, Object> dspParameters, IProgressMonitor monitor) {
-		InitializeRequestArguments arguments = new InitializeRequestArguments();
-		arguments.setClientID("lsp4e.debug");
-		String adapterId = "adapterId";
-		if (dspParameters.containsKey("type") && dspParameters.get("type") instanceof String) {
-			adapterId = (String) dspParameters.get("type");
-		}
-		arguments.setAdapterID(adapterId);
-		arguments.setPathFormat("path");
-		arguments.setSupportsVariableType(true);
-		arguments.setSupportsVariablePaging(true);
-		arguments.setLinesStartAt1(true);
-		arguments.setColumnsStartAt1(true);
-		arguments.setSupportsRunInTerminalRequest(true);
-		targetName = Objects.toString(dspParameters.get("program"), "Debug Adapter Target");
-
-		monitor.subTask("Initializing connection to debug adapter");
-		boolean isLaunchRequest = "launch".equals(dspParameters.getOrDefault("request", "launch"));
-		CompletableFuture<?> future = getDebugProtocolServer().initialize(arguments)
-				.thenAccept((Capabilities capabilities) -> {
-					monitor.worked(10);
-					this.capabilities = capabilities;
-				}).thenRun(() -> {
-					process = new DSPProcess(this);
-					if (isLaunchRequest) {
-						launch.addProcess(process);
-					}
-				}).thenCompose(v -> {
-					monitor.worked(10);
-					if (isLaunchRequest) {
-						monitor.subTask("Launching program");
-						return getDebugProtocolServer().launch(dspParameters);
-					} else {
-						monitor.subTask("Attaching to running program");
-						return getDebugProtocolServer().attach(dspParameters);
-					}
-				}).handle((q, t) -> {
-					if (t != null) {
-						initialized.completeExceptionally(t);
-					}
-					return q;
-				});
-		if (ILaunchManager.DEBUG_MODE.equals(launch.getLaunchMode())) {
-			future = CompletableFuture.allOf(future, initialized.thenRun(() -> {
-				monitor.worked(10);
-			}).thenCompose(v -> {
-				monitor.worked(10);
-				monitor.subTask("Sending breakpoints");
-				breakpointManager = new DSPBreakpointManager(getBreakpointManager(), getDebugProtocolServer(),
-						capabilities);
-				return breakpointManager.initialize();
-			}).thenCompose(v -> {
-				monitor.worked(30);
-				monitor.subTask("Sending configuration done");
-				if (Boolean.TRUE.equals(capabilities.getSupportsConfigurationDoneRequest())) {
-					return getDebugProtocolServer().configurationDone(new ConfigurationDoneArguments());
-				}
-				return CompletableFuture.completedFuture(null);
-			}));
-		}
-		return future;
-	}
-
-	private void terminated() {
-		fTerminated = true;
-		fireTerminateEvent();
-		if (process != null) {
-			// Disable the terminate button of the console associated with the DSPProcess.
-			DebugPlugin.getDefault()
-					.fireDebugEventSet(new DebugEvent[] { new DebugEvent(process, DebugEvent.TERMINATE) });
-		}
-		if (breakpointManager != null) {
-			breakpointManager.shutdown();
-		}
-		debugProtocolFuture.cancel(true);
-		try {
-			in.close();
-		} catch (IOException e1) {
-			// ignore inner resource exception
-		}
-		try {
-			out.close();
-		} catch (IOException e1) {
-			// ignore inner resource exception
-		}
-		processCleanup.run();
-	}
-
-	@Override
-	public void initialized() {
-		initialized.complete(null);
-	}
-
-	/**
-	 * Throws a debug exception with a status code of
-	 * <code>TARGET_REQUEST_FAILED</code>.
-	 *
-	 * @param message exception message
-	 * @param e       underlying exception or <code>null</code>
-	 * @throws DebugException if a problem is encountered
-	 */
-	@Override
-	protected void requestFailed(String message, Throwable e) throws DebugException {
-		throw newTargetRequestFailedException(message, e);
-	}
-
-	@Override
-	public DSPDebugTarget getDebugTarget() {
-		return this;
-	}
-
-	@Override
-	public ILaunch getLaunch() {
-		return launch;
-	}
-
-	@Override
-	public <T> T getAdapter(Class<T> adapter) {
-		return null;
-	}
-
-	@Override
-	public boolean canTerminate() {
-		return !isTerminated();
-	}
-
-	@Override
-	public boolean isTerminated() {
-		return fTerminated;
-	}
-
-	@Override
-	public void terminated(TerminatedEventArguments body) {
-		terminated();
-	}
-
-	/**
-	 * This implementation follows the "Debug session end" guidelines in
-	 * https://microsoft.github.io/debug-adapter-protocol/overview:
-	 *
-	 * "When the development tool ends a debug session, the sequence of events is
-	 * slightly different based on whether the session has been initially 'launched'
-	 * or 'attached':
-	 *
-	 * Debuggee launched: if a debug adapter supports the terminate request, the
-	 * development tool uses it to terminate the debuggee gracefully, i.e. it gives
-	 * the debuggee a chance to cleanup everything before terminating. If the
-	 * debuggee does not terminate but continues to run (or hits a breakpoint), the
-	 * debug session will continue, but if the development tool tries again to
-	 * terminate the debuggee, it will then use the disconnect request to end the
-	 * debug session unconditionally. The disconnect request is expected to
-	 * terminate the debuggee (and any child processes) forcefully.
-	 *
-	 * Debuggee attached: If the debuggee has been 'attached' initially, the
-	 * development tool issues a disconnect request. This should detach the debugger
-	 * from the debuggee but will allow it to continue."
-	 */
-	@Override
-	public void terminate() throws DebugException {
-		boolean shouldSendTerminateRequest = !fSentTerminateRequest
-				&& Boolean.TRUE.equals(getCapabilities().getSupportsTerminateRequest())
-				&& "launch".equals(dspParameters.getOrDefault("request", "launch"));
-		if (shouldSendTerminateRequest) {
-			fSentTerminateRequest = true;
-			getDebugProtocolServer().terminate(new TerminateArguments());
-		} else {
-			DisconnectArguments arguments = new DisconnectArguments();
-			arguments.setTerminateDebuggee(true);
-			getDebugProtocolServer().disconnect(arguments).thenRun(this::terminated);
-		}
-	}
-
-	@Override
-	public void continued(ContinuedEventArguments body) {
-		threadPool.execute(() -> {
-			DSPDebugElement source = null;
-			source = getThread(body.getThreadId());
-			if (source == null || body.getAllThreadsContinued() == null || body.getAllThreadsContinued()) {
-				Arrays.asList(getThreads()).forEach(DSPThread::continued);
-			}
-			if (source != null) {
-				source.fireResumeEvent(DebugEvent.CLIENT_REQUEST);
-			}
-		});
-	}
-
-	@Override
-	public void stopped(StoppedEventArguments body) {
-		threadPool.execute(() -> {
-			DSPThread source = null;
-			if (body.getThreadId() != null) {
-				source = getThread(body.getThreadId());
-			}
-			if (source == null || body.getAllThreadsStopped() == null || body.getAllThreadsStopped()) {
-				Arrays.asList(getThreads()).forEach(t -> {
-					t.stopped();
-					t.fireChangeEvent(DebugEvent.CHANGE);
-				});
-			}
-
-			if (source != null) {
-				source.stopped();
-				source.fireSuspendEvent(calcDetail(body.getReason()));
-			}
-		});
-	}
-
-	private int calcDetail(String reason) {
-		if (reason.equals("breakpoint") || reason.equals("entry") || reason.equals("exception")) { //$NON-NLS-1$
-			return DebugEvent.BREAKPOINT;
-		} else if (reason.equals("step")) { //$NON-NLS-1$
-			return DebugEvent.STEP_OVER;
-		} else if (reason.equals("pause")) { //$NON-NLS-1$
-			return DebugEvent.CLIENT_REQUEST;
-		} else {
-			return DebugEvent.UNSPECIFIED;
-		}
-	}
-
-	@Override
-	public boolean canResume() {
-		return !isTerminated() && isSuspended() && getThreads().length > 0;
-	}
-
-	@Override
-	public boolean canSuspend() {
-		return !isTerminated() && !isSuspended() && getThreads().length > 0;
-	}
-
-	@Override
-	public boolean isSuspended() {
-		DSPThread[] dspThreads = getThreads();
-		boolean anyMatch = Arrays.asList(dspThreads).stream().anyMatch(DSPThread::isSuspended);
-		return anyMatch;
-	}
-
-	@Override
-	public void resume() throws DebugException {
-		DSPThread[] dspThreads = getThreads();
-		// TODO add support to protocol for ContinueArguments to support all
-		if (dspThreads.length > 0) {
-			dspThreads[0].resume();
-		}
-	}
-
-	@Override
-	public void suspend() throws DebugException {
-		DSPThread[] dspThreads = getThreads();
-		// TODO add support to protocol for PauseArguments to support all
-		if (dspThreads.length > 0) {
-			dspThreads[0].suspend();
-		}
-	}
-
-	@Override
-	public boolean canDisconnect() {
-		return !isDisconnected();
-	}
-
-	@Override
-	public void disconnect() throws DebugException {
-		getDebugProtocolServer().disconnect(new DisconnectArguments()).thenRun(this::terminated);
-	}
-
-	@Override
-	public boolean isDisconnected() {
-		return fTerminated;
-	}
-
-	@Override
-	public boolean supportsStorageRetrieval() {
-		return false;
-	}
-
-	@Override
-	public IMemoryBlock getMemoryBlock(long startAddress, long length) throws DebugException {
-		return null;
-	}
-
-	@Override
-	public IProcess getProcess() {
-		return process;
-	}
-
-	@Override
-	public DSPThread[] getThreads() {
-		if (!refreshThreads.getAndSet(false)) {
-			synchronized (threads) {
-				Collection<DSPThread> values = threads.values();
-				return values.toArray(new DSPThread[values.size()]);
-			}
-		}
-		try {
-			CompletableFuture<ThreadsResponse> threads2 = getDebugProtocolServer().threads();
-			CompletableFuture<DSPThread[]> future = threads2.thenApplyAsync(threadsResponse -> {
-				synchronized (threads) {
-					Map<Integer, DSPThread> lastThreads = new TreeMap<>(threads);
-					threads.clear();
-					Thread[] body = threadsResponse.getThreads();
-					for (Thread thread : body) {
-						DSPThread dspThread = lastThreads.get(thread.getId());
-						if (dspThread == null) {
-							dspThread = new DSPThread(this, thread.getId());
-						}
-						dspThread.update(thread);
-						threads.put(thread.getId(), dspThread);
-						// fireChangeEvent(DebugEvent.CONTENT);
-					}
-					Collection<DSPThread> values = threads.values();
-					return values.toArray(new DSPThread[values.size()]);
-				}
-			});
-			return future.get();
-		} catch (RuntimeException | ExecutionException e) {
-			if (isTerminated()) {
-				return new DSPThread[0];
-			}
-			DSPPlugin.logError(e);
-			return new DSPThread[0];
-		} catch (InterruptedException e) {
-			java.lang.Thread.currentThread().interrupt();
-			return new DSPThread[0];
-		}
-	}
-
-	/**
-	 * Get a thread object without connecting to the debug adapter. This is for when
-	 * we get a thread before it is fully populated, so return a new thread in that
-	 * case and let it be populated later
-	 *
-	 * @param threadId
-	 * @return
-	 */
-	private DSPThread getThread(Integer threadId) {
-		return threads.computeIfAbsent(threadId, id -> new DSPThread(this, threadId));
-	}
-
-	@Override
-	public boolean hasThreads() throws DebugException {
-		return getThreads().length > 0;
-	}
-
-	@Override
-	public String getName() {
-		return targetName;
-	}
-
-	@Override
-	public boolean supportsBreakpoint(IBreakpoint breakpoint) {
-		return !isTerminated() && breakpointManager.supportsBreakpoint(breakpoint);
-	}
-
-	@Override
-	public void exited(ExitedEventArguments args) {
-		// TODO
-	}
-
-	@Override
-	public void thread(ThreadEventArguments args) {
-		refreshThreads.set(true);
-		fireChangeEvent(DebugEvent.CONTENT);
-	}
-
-	@Override
-	public void output(OutputEventArguments args) {
-		boolean outputted = false;
-		if (process != null) {
-			DSPStreamsProxy dspStreamsProxy = process.getStreamsProxy();
-			String output = args.getOutput();
-			if (args.getCategory() == null || OutputEventArgumentsCategory.CONSOLE.equals(args.getCategory())
-					|| OutputEventArgumentsCategory.STDOUT.equals(args.getCategory())) {
-				// TODO put this data in a different region with a different colour
-				dspStreamsProxy.getOutputStreamMonitor().append(output);
-				outputted = true;
-			} else if (OutputEventArgumentsCategory.STDERR.equals(args.getCategory())) {
-				dspStreamsProxy.getErrorStreamMonitor().append(output);
-				outputted = true;
-			}
-		}
-		if (!outputted && DSPPlugin.DEBUG) {
-			System.out.println("output: " + args);
-		}
-
-	}
-
-	@Override
-	public void module(ModuleEventArguments args) {
-		// TODO
-
-	}
-
-	@Override
-	public void loadedSource(LoadedSourceEventArguments args) {
-		// TODO
-
-	}
-
-	@Override
-	public void process(ProcessEventArguments args) {
-		// TODO
-
-	}
-
-	/**
-	 * runInTerminal request; value of command field is 'runInTerminal'.
-	 * <p>
-	 * With this request a debug adapter can run a command in a terminal.
-	 */
-	@JsonRequest
-	public CompletableFuture<RunInTerminalResponse> runInTerminal(RunInTerminalRequestArguments args) {
-		if (RunInTerminalRequestArgumentsKind.EXTERNAL.equals(args.getKind())) {
-			// TODO handle external run in terminal in an external way?
-		}
-		// TODO use a "real" terminal (like the one in TMF?) for
-		// RunInTerminalRequestArgumentsKind.INTEGRATED terminal
-		StringBuilder cmd = new StringBuilder();
-		for (String arg : args.getArgs()) {
-			if (arg.contains(" ")) {
-				cmd.append("\"");
-				cmd.append(arg);
-				cmd.append("\"");
-			} else {
-				cmd.append(arg);
-			}
-			cmd.append(" ");
-		}
-		if (cmd.length() > 0) {
-			cmd.setLength(cmd.length() - 1);
-		}
-		ProcessBuilder processBuilder = new ProcessBuilder(args.getArgs());
-		// processBuilder.inheritIO();
-		if (args.getCwd() != null) {
-			processBuilder.directory(new File(args.getCwd()));
-		}
-		if (args.getEnv() != null) {
-			Set<Entry<String, String>> entrySet = args.getEnv().entrySet();
-			for (Entry<String, String> entry : entrySet) {
-				String name = entry.getKey();
-				String value = entry.getValue();
-				if (value == null) {
-					processBuilder.environment().remove(name);
-				} else {
-					processBuilder.environment().put(name, value);
-				}
-			}
-		}
-		try {
-			if (DSPPlugin.DEBUG) {
-				System.out.println("Launching: " + cmd);
-			}
-			Process start = processBuilder.start();
-			DebugPlugin.newProcess(launch, start, cmd.toString());
-
-			try {
-				// TODO the python adapter (that uses the runInTerminal feature) does not like
-				// to be told too early that the process is ready
-				java.lang.Thread.sleep(1000);
-			} catch (InterruptedException e) {
-				java.lang.Thread.currentThread().interrupt();
-			}
-			RunInTerminalResponse response = new RunInTerminalResponse();
-			// TODO, no standard way of getting ID. Can via reflection and/or custom
-			// launcher like CDT does.
-			response.setProcessId(null); // Explicitly indicate we don't know the process id
-			return CompletableFuture.completedFuture(response);
-		} catch (IOException e) {
-			// TODO
-			return CompletableFuture.completedFuture(null);
-		}
-
-	}
-
-	@Override
-	public void breakpoint(BreakpointEventArguments args) {
-		breakpointManager.breakpointEvent(args);
-	}
-
-	@Override
-	public void breakpointAdded(IBreakpoint breakpoint) {
-		breakpointManager.breakpointAdded(breakpoint);
-	}
-
-	@Override
-	public void breakpointRemoved(IBreakpoint breakpoint, IMarkerDelta delta) {
-		breakpointManager.breakpointRemoved(breakpoint, delta);
-	}
-
-	@Override
-	public void breakpointChanged(IBreakpoint breakpoint, IMarkerDelta delta) {
-		breakpointManager.breakpointChanged(breakpoint, delta);
-	}
-
-	@Override
-	public IDebugProtocolServer getDebugProtocolServer() {
-		return debugProtocolServer;
-	}
-
-	public Capabilities getCapabilities() {
-		return capabilities;
-	}
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPStackFrame.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPStackFrame.java
deleted file mode 100644
index 952b557..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPStackFrame.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.debugmodel;
-
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.model.IRegisterGroup;
-import org.eclipse.debug.core.model.IStackFrame;
-import org.eclipse.debug.core.model.IVariable;
-import org.eclipse.lsp4j.debug.EvaluateArguments;
-import org.eclipse.lsp4j.debug.EvaluateArgumentsContext;
-import org.eclipse.lsp4j.debug.EvaluateResponse;
-import org.eclipse.lsp4j.debug.Scope;
-import org.eclipse.lsp4j.debug.ScopesArguments;
-import org.eclipse.lsp4j.debug.StackFrame;
-
-public class DSPStackFrame extends DSPDebugElement implements IStackFrame {
-	private DSPThread thread;
-	private StackFrame stackFrame;
-	private int depth;
-	private IVariable[] cachedVariables;
-
-	public DSPStackFrame(DSPThread thread, StackFrame stackFrame, int depth) {
-		super(thread.getDebugTarget());
-		this.thread = thread;
-		this.stackFrame = stackFrame;
-		this.depth = depth;
-	}
-
-	public DSPStackFrame replace(StackFrame newStackFrame, int newDepth) {
-		if (newDepth == depth && Objects.equals(newStackFrame.getSource(), stackFrame.getSource())) {
-			stackFrame = newStackFrame;
-			cachedVariables = null;
-			return this;
-		}
-		return new DSPStackFrame(thread, newStackFrame, newDepth);
-	}
-
-	@Override
-	public void terminate() throws DebugException {
-		getDebugTarget().terminate();
-	}
-
-	@Override
-	public boolean isTerminated() {
-		return getDebugTarget().isTerminated();
-	}
-
-	@Override
-	public boolean canTerminate() {
-		return getDebugTarget().canTerminate();
-	}
-
-	@Override
-	public void suspend() throws DebugException {
-		getThread().suspend();
-	}
-
-	@Override
-	public void resume() throws DebugException {
-		getThread().resume();
-	}
-
-	@Override
-	public boolean isSuspended() {
-		return getDebugTarget().isSuspended();
-	}
-
-	@Override
-	public boolean canSuspend() {
-		return getThread().canSuspend();
-	}
-
-	@Override
-	public boolean canResume() {
-		return getThread().canResume();
-	}
-
-	@Override
-	public void stepReturn() throws DebugException {
-		getThread().stepReturn();
-	}
-
-	@Override
-	public void stepOver() throws DebugException {
-		getThread().stepOver();
-	}
-
-	@Override
-	public void stepInto() throws DebugException {
-		getThread().stepInto();
-	}
-
-	@Override
-	public boolean isStepping() {
-		return getThread().isStepping();
-	}
-
-	@Override
-	public boolean canStepReturn() {
-		return getThread().canStepReturn();
-	}
-
-	@Override
-	public boolean canStepOver() {
-		return getThread().canStepOver();
-	}
-
-	@Override
-	public boolean canStepInto() {
-		return getThread().canStepInto();
-	}
-
-	@Override
-	public boolean hasVariables() throws DebugException {
-		return true;
-	}
-
-	@Override
-	public boolean hasRegisterGroups() throws DebugException {
-		return false;
-	}
-
-	@Override
-	public IVariable[] getVariables() throws DebugException {
-		if (cachedVariables == null) {
-			ScopesArguments arguments = new ScopesArguments();
-			arguments.setFrameId(stackFrame.getId());
-			Scope[] scopes = complete(getDebugTarget().getDebugProtocolServer().scopes(arguments)).getScopes();
-			List<DSPVariable> vars = new ArrayList<>();
-			for (Scope scope : scopes) {
-				DSPVariable variable = new DSPVariable(getDebugTarget(), Integer.valueOf(-1), scope.getName(), "",
-						scope.getVariablesReference());
-				vars.add(variable);
-			}
-			cachedVariables = vars.toArray(new IVariable[vars.size()]);
-		}
-		return cachedVariables;
-	}
-
-	@Override
-	public DSPThread getThread() {
-		return thread;
-	}
-
-	@Override
-	public IRegisterGroup[] getRegisterGroups() throws DebugException {
-		return null;
-	}
-
-	@Override
-	public String getName() throws DebugException {
-		return stackFrame.getName();
-	}
-
-	@Override
-	public int getLineNumber() throws DebugException {
-		return (int) stackFrame.getLine();
-	}
-
-	@Override
-	public int getCharStart() throws DebugException {
-		return -1;
-	}
-
-	@Override
-	public int getCharEnd() throws DebugException {
-		return -1;
-	}
-
-	public String getSourceName() {
-		return stackFrame.getSource().getPath();
-	}
-
-	public Integer getFrameId() {
-		return stackFrame.getId();
-	}
-
-	public int getFrameInstructionAddressBits() {
-		String addr = stackFrame.getInstructionPointerReference();
-		if (addr == null || addr.length() > 10) {
-			return 64;
-		}
-		return 32;
-	}
-
-	public BigInteger getFrameInstructionAddress() {
-		String addr = stackFrame.getInstructionPointerReference();
-		if (addr == null || addr.length() == 0) {
-			return new BigInteger("0");
-		}
-		if (addr.startsWith("0x")) {
-			addr = addr.substring(2);
-		}
-		return new BigInteger(addr, 16);
-	}
-
-	@Override
-	public String toString() {
-		return "StackFrame [depth=" + depth + ", line=" + stackFrame.getLine() + ", thread=" + thread + ", stackFrame="
-				+ stackFrame + "]";
-	}
-
-	/**
-	 * Return the stack depth of this frame. The top of the stack is 0.
-	 *
-	 * @return stack depth
-	 */
-	public int getDepth() {
-		return depth;
-	}
-
-	/**
-	 * Evaluate the given expression in the context of this frame.
-	 *
-	 * @param expression any expression
-	 * @return future with an IVariable that has the result
-	 */
-	public CompletableFuture<IVariable> evaluate(String expression) {
-		EvaluateArguments args = new EvaluateArguments();
-		args.setContext(EvaluateArgumentsContext.HOVER);
-		args.setFrameId(getFrameId());
-		args.setExpression(expression);
-		CompletableFuture<EvaluateResponse> evaluate = getDebugProtocolServer().evaluate(args);
-		CompletableFuture<IVariable> future = evaluate.thenApply(res -> new DSPVariable(getDebugTarget(),
-				res.getVariablesReference(), expression, res.getResult(), res.getVariablesReference()));
-		return future;
-
-	}
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPThread.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPThread.java
deleted file mode 100644
index 22b7625..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPThread.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.debugmodel;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.core.model.IStackFrame;
-import org.eclipse.debug.core.model.IThread;
-import org.eclipse.lsp4e.debug.DSPPlugin;
-import org.eclipse.lsp4j.debug.ContinueArguments;
-import org.eclipse.lsp4j.debug.NextArguments;
-import org.eclipse.lsp4j.debug.PauseArguments;
-import org.eclipse.lsp4j.debug.StackFrame;
-import org.eclipse.lsp4j.debug.StackTraceArguments;
-import org.eclipse.lsp4j.debug.StepInArguments;
-import org.eclipse.lsp4j.debug.StepOutArguments;
-import org.eclipse.lsp4j.debug.Thread;
-
-public class DSPThread extends DSPDebugElement implements IThread {
-	private final Integer id;
-	/**
-	 * The name may not be known, if it is requested we will ask for it from the
-	 * target.
-	 */
-	private String name;
-	private List<DSPStackFrame> frames = Collections.synchronizedList(new ArrayList<>());
-	private AtomicBoolean refreshFrames = new AtomicBoolean(true);
-	private boolean stepping;
-	private boolean isSuspended = false;
-
-	public DSPThread(DSPDebugTarget debugTarget, Thread thread) {
-		super(debugTarget);
-		this.id = thread.getId();
-		this.name = thread.getName();
-	}
-
-	public DSPThread(DSPDebugTarget debugTarget, Integer threadId) {
-		super(debugTarget);
-		this.id = threadId;
-	}
-
-	/**
-	 * Update properties of the thread. The ID can't be changed, so the passed in
-	 * thread should match.
-	 *
-	 * @param thread
-	 * @throws DebugException
-	 */
-	public void update(Thread thread) {
-		Assert.isTrue(Objects.equals(this.id, thread.getId()));
-		this.name = thread.getName();
-		refreshFrames.set(true);
-		// fireChangeEvent(DebugEvent.STATE);
-	}
-
-	@Override
-	public void terminate() throws DebugException {
-		getDebugTarget().terminate();
-	}
-
-	@Override
-	public boolean isTerminated() {
-		return getDebugTarget().isTerminated();
-	}
-
-	@Override
-	public boolean canTerminate() {
-		return getDebugTarget().canTerminate();
-	}
-
-	private <T> T handleExceptionalResume(Throwable t) {
-		DSPPlugin.logError("Failed to resume debug adapter", t);
-		setErrorMessage(t.getMessage());
-		stopped();
-		fireSuspendEvent(DebugEvent.CLIENT_REQUEST);
-		return null;
-	}
-
-	public void continued() {
-		isSuspended = false;
-		refreshFrames.set(true);
-	}
-
-	public void stopped() {
-		isSuspended = true;
-		stepping = false;
-		refreshFrames.set(true);
-	}
-
-	@Override
-	public void stepReturn() throws DebugException {
-		continued();
-		stepping = true;
-		fireResumeEvent(DebugEvent.STEP_OVER);
-		StepOutArguments arguments = new StepOutArguments();
-		arguments.setThreadId(id);
-		getDebugProtocolServer().stepOut(arguments).exceptionally(this::handleExceptionalResume);
-	}
-
-	@Override
-	public void stepOver() throws DebugException {
-		continued();
-		stepping = true;
-		fireResumeEvent(DebugEvent.STEP_OVER);
-		NextArguments arguments = new NextArguments();
-		arguments.setThreadId(id);
-		getDebugProtocolServer().next(arguments).exceptionally(this::handleExceptionalResume);
-	}
-
-	@Override
-	public void stepInto() throws DebugException {
-		continued();
-		stepping = true;
-		fireResumeEvent(DebugEvent.STEP_INTO);
-		StepInArguments arguments = new StepInArguments();
-		arguments.setThreadId(id);
-		getDebugProtocolServer().stepIn(arguments).exceptionally(this::handleExceptionalResume);
-	}
-
-	@Override
-	public void resume() throws DebugException {
-		continued();
-		stepping = true;
-		fireResumeEvent(DebugEvent.RESUME);
-		ContinueArguments arguments = new ContinueArguments();
-		arguments.setThreadId(id);
-		getDebugProtocolServer().continue_(arguments).thenAccept(response -> {
-			if (response == null || response.getAllThreadsContinued() == null || response.getAllThreadsContinued()) {
-				// turns out everything was resumed, so need to update other threads too
-				getDebugTarget().fireResumeEvent(DebugEvent.CLIENT_REQUEST);
-			}
-		}).exceptionally(this::handleExceptionalResume);
-	}
-
-	@Override
-	public boolean isStepping() {
-		return stepping;
-	}
-
-	private boolean canResumeOrStep() {
-		return isSuspended();
-		// TODO add additional restrictions, like if an evaluation is happening?
-	}
-
-	@Override
-	public boolean canStepReturn() {
-		return canResumeOrStep();
-	}
-
-	@Override
-	public boolean canStepOver() {
-		return canResumeOrStep();
-	}
-
-	@Override
-	public boolean canStepInto() {
-		return canResumeOrStep();
-	}
-
-	@Override
-	public boolean canResume() {
-		return canResumeOrStep();
-	}
-
-	@Override
-	public void suspend() throws DebugException {
-		PauseArguments arguments = new PauseArguments();
-		arguments.setThreadId(id);
-		getDebugProtocolServer().pause(arguments).exceptionally(t -> {
-			DSPPlugin.logError("Failed to suspend debug adapter", t);
-			setErrorMessage(t.getMessage());
-			fireChangeEvent(DebugEvent.STATE);
-			return null;
-		});
-	}
-
-	@Override
-	public boolean isSuspended() {
-		return isSuspended;
-	}
-
-	@Override
-	public boolean canSuspend() {
-		return !isSuspended();
-	}
-
-	@Override
-	public String getModelIdentifier() {
-		return getDebugTarget().getModelIdentifier();
-	}
-
-	@Override
-	public ILaunch getLaunch() {
-		return getDebugTarget().getLaunch();
-	}
-
-	@Override
-	public boolean hasStackFrames() throws DebugException {
-		return isSuspended();
-	}
-
-	@Override
-	public IStackFrame getTopStackFrame() throws DebugException {
-		IStackFrame[] stackFrames = getStackFrames();
-		if (stackFrames.length > 0) {
-			return stackFrames[0];
-		} else {
-			return null;
-		}
-	}
-
-	@Override
-	public IStackFrame[] getStackFrames() throws DebugException {
-		if (!refreshFrames.getAndSet(false)) {
-			synchronized (frames) {
-				return frames.toArray(new DSPStackFrame[frames.size()]);
-			}
-		}
-		try {
-			StackTraceArguments arguments = new StackTraceArguments();
-			arguments.setThreadId(id);
-			// TODO implement paging to get rest of frames
-			arguments.setStartFrame(0);
-			arguments.setLevels(20);
-			CompletableFuture<DSPStackFrame[]> future = getDebugTarget().getDebugProtocolServer().stackTrace(arguments)
-					.thenApply(response -> {
-						synchronized (frames) {
-							StackFrame[] backendFrames = response.getStackFrames();
-							for (int i = 0; i < backendFrames.length; i++) {
-								if (i < frames.size()) {
-									frames.set(i, frames.get(i).replace(backendFrames[i], i));
-								} else {
-									frames.add(new DSPStackFrame(this, backendFrames[i], i));
-								}
-							}
-							frames.subList(backendFrames.length, frames.size()).clear();
-							return frames.toArray(new DSPStackFrame[frames.size()]);
-						}
-					});
-			return future.get();
-		} catch (RuntimeException | ExecutionException e) {
-			if (isTerminated()) {
-				return new DSPStackFrame[0];
-			}
-			throw newTargetRequestFailedException(e.getMessage(), e);
-		} catch (InterruptedException e) {
-			java.lang.Thread.currentThread().interrupt();
-			return new DSPStackFrame[0];
-		}
-	}
-
-	@Override
-	public int getPriority() throws DebugException {
-		return 0;
-	}
-
-	@Override
-	public String getName() {
-		if (name == null) {
-			// Queue up a refresh of the threads to get our name
-			getDebugTarget().getThreads();
-			return "<pending>";
-		}
-		return name;
-	}
-
-	@Override
-	public IBreakpoint[] getBreakpoints() {
-		// TODO update breakpoints from stopped messages from server
-		return new IBreakpoint[0];
-	}
-
-	public Integer getId() {
-		return id;
-	}
-
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPValue.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPValue.java
deleted file mode 100644
index 7d9c6e8..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPValue.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.debugmodel;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.model.IValue;
-import org.eclipse.debug.core.model.IVariable;
-import org.eclipse.lsp4j.debug.Variable;
-import org.eclipse.lsp4j.debug.VariablesArguments;
-
-public final class DSPValue extends DSPDebugElement implements IValue {
-
-	private DSPVariable modelVariable;
-	private Integer variablesReference;
-	private String value;
-	private IVariable[] cachedVariables;
-
-	public DSPValue(DSPVariable variable, Integer variablesReference, String value) {
-		super(variable.getDebugTarget());
-		this.modelVariable = variable;
-		this.variablesReference = variablesReference;
-		this.value = value;
-	}
-
-	@Override
-	public IVariable[] getVariables() throws DebugException {
-		if (!hasVariables()) {
-			return new IVariable[0];
-		}
-		if (cachedVariables == null) {
-			VariablesArguments arguments = new VariablesArguments();
-			arguments.setVariablesReference(variablesReference);
-			Variable[] targetVariables = complete(getDebugTarget().getDebugProtocolServer().variables(arguments))
-					.getVariables();
-
-			List<DSPVariable> variables = new ArrayList<>();
-			for (Variable variable : targetVariables) {
-				variables.add(new DSPVariable(modelVariable.getDebugTarget(), variablesReference, variable.getName(),
-						variable.getValue(), variable.getVariablesReference()));
-			}
-
-			cachedVariables = variables.toArray(new DSPVariable[variables.size()]);
-		}
-		return cachedVariables;
-	}
-
-	@Override
-	public String getReferenceTypeName() throws DebugException {
-		// TODO
-		return modelVariable.getName();
-	}
-
-	@Override
-	public String getValueString() throws DebugException {
-		return value;
-	}
-
-	@Override
-	public boolean isAllocated() throws DebugException {
-		// TODO
-		return true;
-	}
-
-	@Override
-	public boolean hasVariables() throws DebugException {
-		return variablesReference != null && variablesReference > 0;
-	}
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPVariable.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPVariable.java
deleted file mode 100644
index 049542e..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/DSPVariable.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017-2019 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Pierre-Yves B. <pyvesdev@gmail.com> - Bug 553139 - NullPointerException if the debug adapter does not support SetVariable
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.debugmodel;
-
-import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.model.IValue;
-import org.eclipse.debug.core.model.IVariable;
-import org.eclipse.lsp4j.debug.SetVariableArguments;
-import org.eclipse.lsp4j.debug.ValueFormat;
-import org.eclipse.lsp4j.debug.services.IDebugProtocolServer;
-
-public class DSPVariable extends DSPDebugElement implements IVariable {
-
-	private final Integer parentVariablesReference;
-	private final String name;
-	private DSPValue dspValue;
-
-	public DSPVariable(DSPDebugTarget debugTarget, Integer parentVariablesReference, String name, String value,
-			Integer childrenVariablesReference) {
-		super(debugTarget);
-		this.parentVariablesReference = parentVariablesReference;
-		this.name = name;
-		this.dspValue = new DSPValue(this, childrenVariablesReference, value);
-	}
-
-	@Override
-	public void setValue(String expression) throws DebugException {
-		SetVariableArguments setVariableArgs = new SetVariableArguments();
-		setVariableArgs.setVariablesReference(parentVariablesReference);
-		setVariableArgs.setValue(expression);
-		setVariableArgs.setName(getName());
-		setVariableArgs.setFormat(new ValueFormat());
-		IDebugProtocolServer debugAdapter = getDebugProtocolServer();
-		debugAdapter.setVariable(setVariableArgs).thenAcceptAsync(res -> {
-			String v = res.getValue();
-			if (v == null) {
-				v = expression;
-			}
-			this.dspValue = new DSPValue(this, res.getVariablesReference(), v);
-			this.fireChangeEvent(DebugEvent.CONTENT);
-		});
-	}
-
-	@Override
-	public void setValue(IValue value) throws DebugException {
-		// TODO
-	}
-
-	@Override
-	public boolean supportsValueModification() {
-		return Boolean.TRUE.equals(getDebugTarget().getCapabilities().getSupportsSetVariable());
-	}
-
-	@Override
-	public boolean verifyValue(String expression) throws DebugException {
-		return true;
-	}
-
-	@Override
-	public boolean verifyValue(IValue value) throws DebugException {
-		// TODO
-		return false;
-	}
-
-	@Override
-	public IValue getValue() throws DebugException {
-		return this.dspValue;
-	}
-
-	@Override
-	public String getName() throws DebugException {
-		return name;
-	}
-
-	@Override
-	public String getReferenceTypeName() throws DebugException {
-		// TODO
-		return name;
-	}
-
-	@Override
-	public boolean hasValueChanged() throws DebugException {
-		// TODO
-		return false;
-	}
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/TraceInputStream.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/TraceInputStream.java
deleted file mode 100644
index c547737..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/TraceInputStream.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.debugmodel;
-
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-public class TraceInputStream extends FilterInputStream {
-	private OutputStream trace;
-
-	public TraceInputStream(InputStream in, OutputStream trace) {
-		super(in);
-		this.trace = trace;
-	}
-
-	@Override
-	public int read() throws IOException {
-		int b = in.read();
-		trace.write(b);
-		trace.flush();
-		return b;
-	}
-
-	@Override
-	public int read(byte[] b, int off, int len) throws IOException {
-		int n = in.read(b, off, len);
-		trace.write(b, off, n);
-		trace.flush();
-		return n;
-	}
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/TraceOutputStream.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/TraceOutputStream.java
deleted file mode 100644
index aae53fd..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/debugmodel/TraceOutputStream.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.debugmodel;
-
-import java.io.FilterOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-public class TraceOutputStream extends FilterOutputStream {
-
-	private OutputStream trace;
-
-	public TraceOutputStream(OutputStream out, OutputStream trace) {
-		super(out);
-		this.trace = trace;
-	}
-
-	@Override
-	public void write(int b) throws IOException {
-		trace.write(b);
-		trace.flush();
-		out.write(b);
-	}
-
-	@Override
-	public void write(byte[] b, int off, int len) throws IOException {
-		trace.write(b, off, len);
-		trace.flush();
-		out.write(b, off, len);
-	}
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPLaunchDelegate.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPLaunchDelegate.java
deleted file mode 100644
index 2c58ea2..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPLaunchDelegate.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2019 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.launcher;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.reflect.Type;
-import java.net.Socket;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.lsp4e.debug.DSPPlugin;
-import org.eclipse.lsp4e.debug.debugmodel.DSPDebugTarget;
-import org.eclipse.osgi.util.NLS;
-
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-
-public class DSPLaunchDelegate implements ILaunchConfigurationDelegate {
-
-	/**
-	 * Structured arguments for the
-	 * {@link DSPLaunchDelegate#launch(DSPLaunchDelegateLaunchBuilder) method.
-	 *
-	 * Use this class to simplify calling the launch method and make the source code
-	 * of consumers a little easier to read.
-	 */
-	public static class DSPLaunchDelegateLaunchBuilder {
-		ILaunchConfiguration configuration;
-		String mode;
-		ILaunch launch;
-		IProgressMonitor monitor;
-		boolean launchNotConnect;
-		String debugCmd;
-		List<String> debugCmdArgs;
-		boolean monitorDebugAdapter;
-		String server;
-		int port;
-		Map<String, Object> dspParameters;
-
-		private DSPLaunchDelegateLaunchBuilder(DSPLaunchDelegateLaunchBuilder other) {
-			this.configuration = other.configuration;
-			this.mode = other.mode;
-			this.launch = other.launch;
-			this.monitor = other.monitor;
-
-			this.launchNotConnect = other.launchNotConnect;
-
-			this.debugCmd = other.debugCmd;
-			this.debugCmdArgs = other.debugCmdArgs == null ? null : new ArrayList<>(other.debugCmdArgs);
-			this.monitorDebugAdapter = other.monitorDebugAdapter;
-
-			this.server = other.server;
-			this.port = other.port;
-
-			this.dspParameters = new HashMap<>(other.dspParameters);
-		}
-
-		/**
-		 * Construct a builder using the normal arguments to
-		 * {@link ILaunchConfigurationDelegate#launch(ILaunchConfiguration, String, ILaunch, IProgressMonitor)}
-		 *
-		 * @param configuration
-		 * @param mode
-		 * @param launch
-		 * @param monitor
-		 */
-		public DSPLaunchDelegateLaunchBuilder(ILaunchConfiguration configuration, String mode, ILaunch launch,
-				IProgressMonitor monitor) {
-			this.configuration = configuration;
-			this.mode = mode;
-			this.launch = launch;
-			this.monitor = monitor;
-		}
-
-		public DSPLaunchDelegateLaunchBuilder setLaunchDebugAdapter(String debugCmd, List<String> debugCmdArgs) {
-			this.launchNotConnect = true;
-			this.debugCmd = debugCmd;
-			this.debugCmdArgs = debugCmdArgs;
-			return this;
-		}
-
-		public DSPLaunchDelegateLaunchBuilder setAttachDebugAdapter(String server, int port) {
-			this.launchNotConnect = false;
-			this.server = server;
-			this.port = port;
-			return this;
-		}
-
-		public DSPLaunchDelegateLaunchBuilder setMonitorDebugAdapter(boolean monitorDebugAdapter) {
-			this.monitorDebugAdapter = monitorDebugAdapter;
-			return this;
-		}
-
-		public DSPLaunchDelegateLaunchBuilder setDspParameters(Map<String, Object> dspParameters) {
-			this.dspParameters = dspParameters;
-			return this;
-		}
-
-		public ILaunchConfiguration getConfiguration() {
-			return configuration;
-		}
-
-		public String getMode() {
-			return mode;
-		}
-
-		public ILaunch getLaunch() {
-			return launch;
-		}
-
-		public IProgressMonitor getMonitor() {
-			return monitor;
-		}
-
-		public boolean isLaunchNotConnect() {
-			return launchNotConnect;
-		}
-
-		public String getDebugCmd() {
-			return debugCmd;
-		}
-
-		public List<String> getDebugCmdArgs() {
-			return debugCmdArgs;
-		}
-
-		public boolean isMonitorDebugAdapter() {
-			return monitorDebugAdapter;
-		}
-
-		public String getServer() {
-			return server;
-		}
-
-		public int getPort() {
-			return port;
-		}
-
-		public Map<String, Object> getDspParameters() {
-			return dspParameters;
-		}
-
-		@Override
-		public String toString() {
-			return "DSPLaunchDelegateLaunchBuilder [configuration=" + configuration + ", mode=" + mode + ", launch="
-					+ launch + ", monitor=" + monitor + ", launchNotConnect=" + launchNotConnect + ", debugCmd="
-					+ debugCmd + ", debugCmdArgs=" + debugCmdArgs + ", monitorDebugAdapter=" + monitorDebugAdapter
-					+ ", server=" + server + ", port=" + port + ", dspParameters=" + dspParameters + "]";
-		}
-
-	}
-
-	@Override
-	public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor)
-			throws CoreException {
-		DSPLaunchDelegateLaunchBuilder builder = new DSPLaunchDelegateLaunchBuilder(configuration, mode, launch,
-				monitor);
-		builder.launchNotConnect = DSPPlugin.DSP_MODE_LAUNCH
-				.equals(configuration.getAttribute(DSPPlugin.ATTR_DSP_MODE, DSPPlugin.DSP_MODE_LAUNCH));
-		builder.debugCmd = configuration.getAttribute(DSPPlugin.ATTR_DSP_CMD, (String) null);
-		builder.debugCmdArgs = configuration.getAttribute(DSPPlugin.ATTR_DSP_ARGS, (List<String>) null);
-		builder.monitorDebugAdapter = configuration.getAttribute(DSPPlugin.ATTR_DSP_MONITOR_DEBUG_ADAPTER, false);
-		builder.server = configuration.getAttribute(DSPPlugin.ATTR_DSP_SERVER_HOST, (String) null);
-		builder.port = configuration.getAttribute(DSPPlugin.ATTR_DSP_SERVER_PORT, 0);
-
-		String dspParametersJson = configuration.getAttribute(DSPPlugin.ATTR_DSP_PARAM, (String) null);
-		builder.dspParameters = jsonToMap(dspParametersJson);
-
-		launch(builder);
-	}
-
-	private Map<String, Object> jsonToMap(String dspParametersJson) {
-		Gson gson = new Gson();
-		Type type = new TypeToken<Map<String, Object>>() {
-		}.getType();
-		Map<String, Object> dspParameters = gson.fromJson(dspParametersJson, type);
-		if (dspParameters == null) {
-			dspParameters = new HashMap<>();
-		}
-		return dspParameters;
-	}
-
-	public void launch(DSPLaunchDelegateLaunchBuilder builder) throws CoreException {
-		// Make a copy so we can modify locally as needed.
-		builder = new DSPLaunchDelegateLaunchBuilder(builder);
-		SubMonitor subMonitor = SubMonitor.convert(builder.monitor, 100);
-		builder.dspParameters = new HashMap<>(builder.dspParameters);
-
-		boolean customDebugAdapter = builder.configuration.getAttribute(DSPPlugin.ATTR_CUSTOM_DEBUG_ADAPTER, false);
-		boolean customLaunchParameters = builder.configuration.getAttribute(DSPPlugin.ATTR_CUSTOM_LAUNCH_PARAMS, false);
-
-		if (customDebugAdapter) {
-			builder.launchNotConnect = DSPPlugin.DSP_MODE_LAUNCH
-					.equals(builder.configuration.getAttribute(DSPPlugin.ATTR_DSP_MODE, DSPPlugin.DSP_MODE_LAUNCH));
-			builder.debugCmd = builder.configuration.getAttribute(DSPPlugin.ATTR_DSP_CMD, (String) null);
-			builder.debugCmdArgs = builder.configuration.getAttribute(DSPPlugin.ATTR_DSP_ARGS, (List<String>) null);
-			builder.monitorDebugAdapter = builder.configuration.getAttribute(DSPPlugin.ATTR_DSP_MONITOR_DEBUG_ADAPTER,
-					false);
-			builder.server = builder.configuration.getAttribute(DSPPlugin.ATTR_DSP_SERVER_HOST, (String) null);
-			builder.port = builder.configuration.getAttribute(DSPPlugin.ATTR_DSP_SERVER_PORT, 0);
-		}
-		if (customLaunchParameters) {
-			String dspParametersJson = builder.configuration.getAttribute(DSPPlugin.ATTR_DSP_PARAM, (String) null);
-			Map<String, Object> customParams = jsonToMap(dspParametersJson);
-			builder.dspParameters.putAll(customParams);
-		}
-
-		// DSP supports run/debug as a simple flag to the debug server.
-		// See LaunchRequestArguments.noDebug
-		if (ILaunchManager.DEBUG_MODE.equals(builder.mode)) {
-			subMonitor.setTaskName("Starting debug session");
-			builder.dspParameters.put("noDebug", false);
-		} else if (ILaunchManager.RUN_MODE.equals(builder.mode)) {
-			subMonitor.setTaskName("Starting run session");
-			builder.dspParameters.put("noDebug", true);
-		} else {
-			abort(NLS.bind("Unsupported launch mode '{0}'.", builder.mode), null);
-		}
-
-		Runnable cleanup;
-		InputStream inputStream;
-		OutputStream outputStream;
-		try {
-
-			if (builder.launchNotConnect) {
-				List<String> command = new ArrayList<>();
-
-				if (builder.debugCmd == null) {
-					abort("Debug command unspecified.", null); //$NON-NLS-1$
-				}
-				command.add(builder.debugCmd);
-				if (builder.debugCmdArgs != null && !builder.debugCmdArgs.isEmpty()) {
-					command.addAll(builder.debugCmdArgs);
-				}
-
-				ProcessBuilder processBuilder = new ProcessBuilder(command);
-				subMonitor
-						.subTask(NLS.bind("Launching debug adapter: {0}", "\"" + String.join("\" \"", command) + "\""));
-				Process debugAdapterProcess = processBuilder.start();
-				if (builder.monitorDebugAdapter) {
-					// Uglish workaround: should instead have a dedicated ProcessFactory reading
-					// process attribute rather than launch one
-					String initialCaptureOutput = builder.launch.getAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT);
-					builder.launch.setAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, Boolean.toString(true));
-					IProcess debugAdapterIProcess = DebugPlugin.newProcess(builder.launch, debugAdapterProcess,
-							"Debug Adapter");
-					builder.launch.setAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, initialCaptureOutput);
-
-					List<Byte> bytes = Collections.synchronizedList(new LinkedList<>());
-					inputStream = new InputStream() {
-						@Override
-						public int read() throws IOException {
-							while (debugAdapterProcess.isAlive()) {
-								if (!bytes.isEmpty()) {
-									return bytes.remove(0);
-								} else {
-									try {
-										Thread.sleep(50);
-									} catch (InterruptedException e) {
-										Thread.currentThread().interrupt();
-										DSPPlugin.logError(e);
-									}
-								}
-							}
-							return -1;
-						}
-					};
-					DSPLaunchDelegateLaunchBuilder finalBuilder = builder;
-					debugAdapterIProcess.getStreamsProxy().getOutputStreamMonitor().addListener((text, monitor) -> {
-						try {
-							for (byte b : text
-									.getBytes(finalBuilder.launch.getAttribute(DebugPlugin.ATTR_CONSOLE_ENCODING))) {
-								bytes.add(Byte.valueOf(b));
-							}
-						} catch (IOException e) {
-							DSPPlugin.logError(e);
-						}
-					});
-					outputStream = new OutputStream() {
-						@Override
-						public void write(int b) throws IOException {
-							debugAdapterIProcess.getStreamsProxy().write(new String(new byte[] { (byte) b }));
-						}
-					};
-					cleanup = () -> {
-						try {
-							debugAdapterIProcess.terminate();
-							debugAdapterProcess.destroy();
-						} catch (DebugException e) {
-							DSPPlugin.logError(e);
-						}
-					};
-				} else {
-					inputStream = debugAdapterProcess.getInputStream();
-					outputStream = debugAdapterProcess.getOutputStream();
-					cleanup = debugAdapterProcess::destroy;
-				}
-			} else {
-
-				if (builder.server == null) {
-					abort("Debug server host unspecified.", null); //$NON-NLS-1$
-				}
-
-				if (builder.port < 1 || builder.port > 65535) {
-					abort("Debug server port unspecified or out of range 1-65535.", null); //$NON-NLS-1$
-				}
-				subMonitor.subTask(NLS.bind("Connecting to debug adapter: {0}:{1}", builder.server, builder.port));
-				Socket socket = new Socket(builder.server, builder.port);
-				inputStream = socket.getInputStream();
-				outputStream = socket.getOutputStream();
-				cleanup = () -> {
-					try {
-						socket.close();
-					} catch (IOException e) {
-						// ignore inner resource exception
-					}
-				};
-			}
-
-			subMonitor.setWorkRemaining(80);
-
-			ILaunch launch = builder.launch;
-			Map<String, Object> dspParameters = builder.dspParameters;
-			IDebugTarget target = createDebugTarget(subMonitor, cleanup, inputStream, outputStream, launch,
-					dspParameters);
-			builder.launch.addDebugTarget(target);
-		} catch (IOException | OperationCanceledException e1) {
-			abort("Failed to start debugging", e1);
-		} finally {
-			subMonitor.done();
-		}
-	}
-
-	/**
-	 * For extenders/consumers of {@link DSPLaunchDelegate} who want to provide
-	 * customization of the IDebugTarget, this method allows extenders to hook in a
-	 * custom debug target implementation. The debug target is normally a subclass
-	 * of {@link DSPDebugTarget}, but does not have to be. The arguments to this
-	 * method are normally just passed to {@link DSPDebugTarget} constructor.
-	 */
-	protected IDebugTarget createDebugTarget(SubMonitor subMonitor, Runnable cleanup, InputStream inputStream,
-			OutputStream outputStream, ILaunch launch, Map<String, Object> dspParameters) throws CoreException {
-		DSPDebugTarget target = new DSPDebugTarget(launch, cleanup, inputStream, outputStream, dspParameters);
-		target.initialize(subMonitor.split(80));
-		return target;
-	}
-
-	/**
-	 * Throws an exception with a new status containing the given message and
-	 * optional exception.
-	 *
-	 * @param message error message
-	 * @param e       underlying exception
-	 * @throws CoreException
-	 */
-	private void abort(String message, Throwable e) throws CoreException {
-		throw new CoreException(new Status(IStatus.ERROR, DSPPlugin.PLUGIN_ID, 0, message, e));
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPMainTab.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPMainTab.java
deleted file mode 100644
index d90ec2a..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPMainTab.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2019 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.launcher;
-
-import static org.eclipse.swt.events.SelectionListener.widgetSelectedAdapter;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.lsp4e.debug.DSPImages;
-import org.eclipse.lsp4e.debug.DSPPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.PlatformUI;
-
-public class DSPMainTab extends AbstractLaunchConfigurationTab {
-
-	private static final int DEFAULT_PORT = 4711;
-	private static final String DEFAULT_SERVER = "127.0.0.1";
-	private Text debugCommandText;
-	// TODO the arguments in the UI should be some sort of a list to match what is
-	// stored
-	private Text debugArgsText;
-	private Text jsonText;
-
-	private Button launchDebugServer;
-	private Button monitorAdapterLauncherProcessCheckbox;
-	private Button connectDebugServer;
-	private Text serverHost;
-	private Text serverPort;
-
-	private boolean allowCustomSettingsCheckbox;
-	private Button customDebugAdapterCheckbox;
-	private Group debugAdapterSettingsGroup;
-	private Composite launchParametersGroup;
-	private Button customLaunchParametersCheckbox;
-
-	public DSPMainTab() {
-		this(false);
-	}
-
-	public DSPMainTab(boolean allowCustomSettingsCheckbox) {
-		this.allowCustomSettingsCheckbox = allowCustomSettingsCheckbox;
-	}
-
-	@Override
-	public void createControl(Composite parent) {
-		Composite comp = new Composite(parent, SWT.NONE);
-		setControl(comp);
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), getHelpContextId());
-		comp.setLayout(new GridLayout(1, true));
-		comp.setFont(parent.getFont());
-
-		createVerticalSpacer(comp, 3);
-		createDebugAdapterComponent(comp);
-		createDebugJSonComponent(comp);
-
-	}
-
-	private void createDebugAdapterComponent(Composite parent) {
-		if (allowCustomSettingsCheckbox) {
-			customDebugAdapterCheckbox = new Button(parent, SWT.CHECK);
-			customDebugAdapterCheckbox.setText("Override defaults and launch with these debug adapters settings.");
-			customDebugAdapterCheckbox.setLayoutData(GridDataFactory.fillDefaults().span(1, 1).create());
-			customDebugAdapterCheckbox
-					.addSelectionListener(widgetSelectedAdapter(e -> updateLaunchConfigurationDialog()));
-		}
-
-		debugAdapterSettingsGroup = new Group(parent, SWT.NONE);
-		debugAdapterSettingsGroup.setText("Debug Adapter Settings");
-		debugAdapterSettingsGroup.setLayout(new GridLayout(2, false));
-		debugAdapterSettingsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-		Label debugText = new Label(debugAdapterSettingsGroup, SWT.NONE);
-		debugText.setText("Launch specific debug adapters using these settings.");
-		debugText.setLayoutData(GridDataFactory.fillDefaults().span(2, 1).create());
-
-		launchDebugServer = new Button(debugAdapterSettingsGroup, SWT.RADIO);
-		launchDebugServer.setText("&Launch a Debug Server using the following arguments:");
-		launchDebugServer.addSelectionListener(widgetSelectedAdapter(e -> updateLaunchConfigurationDialog()));
-		launchDebugServer.setLayoutData(GridDataFactory.fillDefaults().span(2, 1).create());
-		launchDebugServer.setSelection(true);
-
-		Label programLabel = new Label(debugAdapterSettingsGroup, SWT.NONE);
-		programLabel.setText("&Command:");
-		programLabel.setLayoutData(new GridData(GridData.BEGINNING));
-		debugCommandText = new Text(debugAdapterSettingsGroup, SWT.SINGLE | SWT.BORDER);
-		debugCommandText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		debugCommandText.addModifyListener(e -> updateLaunchConfigurationDialog());
-		Label argsLabel = new Label(debugAdapterSettingsGroup, SWT.NONE);
-		argsLabel.setText("&Arguments:");
-		argsLabel.setLayoutData(new GridData(GridData.BEGINNING));
-
-		debugArgsText = new Text(debugAdapterSettingsGroup, SWT.SINGLE | SWT.BORDER);
-		debugArgsText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		debugArgsText.addModifyListener(e -> updateLaunchConfigurationDialog());
-
-		Composite filler = new Composite(debugAdapterSettingsGroup, SWT.NONE);
-		filler.setLayoutData(new GridData(0, 0));
-		monitorAdapterLauncherProcessCheckbox = new Button(debugAdapterSettingsGroup, SWT.CHECK);
-		GridData layoutData = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
-		monitorAdapterLauncherProcessCheckbox.setLayoutData(layoutData);
-		monitorAdapterLauncherProcessCheckbox
-				.addSelectionListener(widgetSelectedAdapter(e -> updateLaunchConfigurationDialog()));
-		monitorAdapterLauncherProcessCheckbox.setText("Monitor Debug Adapter launcher process");
-
-		connectDebugServer = new Button(debugAdapterSettingsGroup, SWT.RADIO);
-		connectDebugServer.setText("Connect to &running Debug Server using the following arguments:");
-		connectDebugServer.addSelectionListener(widgetSelectedAdapter(e -> updateLaunchConfigurationDialog()));
-		connectDebugServer.setLayoutData(GridDataFactory.fillDefaults().span(2, 1).create());
-
-		Label serverHostLabel = new Label(debugAdapterSettingsGroup, SWT.NONE);
-		serverHostLabel.setText("Server &Host:");
-		serverHostLabel.setLayoutData(new GridData(GridData.BEGINNING));
-		serverHost = new Text(debugAdapterSettingsGroup, SWT.SINGLE | SWT.BORDER);
-		serverHost.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		serverHost.addModifyListener(e -> updateLaunchConfigurationDialog());
-
-		Label serverPortLabel = new Label(debugAdapterSettingsGroup, SWT.NONE);
-		serverPortLabel.setText("Server &Port:");
-		serverPortLabel.setLayoutData(new GridData(GridData.BEGINNING));
-		serverPort = new Text(debugAdapterSettingsGroup, SWT.SINGLE | SWT.BORDER);
-		serverPort.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		serverPort.addModifyListener(e -> updateLaunchConfigurationDialog());
-
-	}
-
-	private void createDebugJSonComponent(Composite parent) {
-		if (allowCustomSettingsCheckbox) {
-			customLaunchParametersCheckbox = new Button(parent, SWT.CHECK);
-			customLaunchParametersCheckbox.setText("Enable additional Json settings for this launch.");
-			customLaunchParametersCheckbox.setLayoutData(GridDataFactory.fillDefaults().span(1, 1).create());
-			customLaunchParametersCheckbox
-					.addSelectionListener(widgetSelectedAdapter(e -> updateLaunchConfigurationDialog()));
-		}
-
-		launchParametersGroup = new Group(parent, SWT.NONE);
-		launchParametersGroup.setLayout(new GridLayout());
-		launchParametersGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
-
-		Label jsonLabel = new Label(launchParametersGroup, SWT.NONE);
-		jsonLabel.setText("Launch &Parameters (Json):");
-		jsonLabel.setLayoutData(new GridData(GridData.BEGINNING));
-
-		jsonText = new Text(launchParametersGroup, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.V_SCROLL);
-		jsonText.setLayoutData(new GridData(GridData.FILL_BOTH));
-		jsonText.addModifyListener(e -> updateLaunchConfigurationDialog());
-
-	}
-
-	private void setEnabled(Composite composite, boolean enabled) {
-		for (Control control : composite.getChildren()) {
-			if (control instanceof Composite) {
-				setEnabled((Composite) control, enabled);
-			} else {
-				control.setEnabled(enabled);
-			}
-		}
-		composite.setEnabled(enabled);
-	}
-
-	@Override
-	protected void updateLaunchConfigurationDialog() {
-		boolean enableDebugAdapterSettings = customDebugAdapterCheckbox == null
-				|| customDebugAdapterCheckbox.getSelection();
-		boolean launch = launchDebugServer.getSelection();
-
-		setEnabled(debugAdapterSettingsGroup, enableDebugAdapterSettings);
-		debugCommandText.setEnabled(launch && enableDebugAdapterSettings);
-		debugArgsText.setEnabled(launch && enableDebugAdapterSettings);
-		monitorAdapterLauncherProcessCheckbox.setEnabled(launch && enableDebugAdapterSettings);
-		serverHost.setEnabled(!launch && enableDebugAdapterSettings);
-		serverPort.setEnabled(!launch && enableDebugAdapterSettings);
-
-		boolean enableLaunchParameterSettings = customLaunchParametersCheckbox == null
-				|| customLaunchParametersCheckbox.getSelection();
-		setEnabled(launchParametersGroup, enableLaunchParameterSettings);
-
-		super.updateLaunchConfigurationDialog();
-	}
-
-	@Override
-	public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
-		configuration.setAttribute(DSPPlugin.ATTR_CUSTOM_DEBUG_ADAPTER, false);
-		configuration.setAttribute(DSPPlugin.ATTR_CUSTOM_LAUNCH_PARAMS, false);
-
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_MODE, DSPPlugin.DSP_MODE_LAUNCH);
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_CMD, "");
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_ARGS, Collections.emptyList());
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_SERVER_HOST, DEFAULT_SERVER);
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_SERVER_PORT, DEFAULT_PORT);
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_PARAM, "");
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_MONITOR_DEBUG_ADAPTER, false);
-	}
-
-	@Override
-	public void initializeFrom(ILaunchConfiguration configuration) {
-		try {
-			if (allowCustomSettingsCheckbox) {
-				customDebugAdapterCheckbox
-						.setSelection(configuration.getAttribute(DSPPlugin.ATTR_CUSTOM_DEBUG_ADAPTER, false));
-				customLaunchParametersCheckbox
-						.setSelection(configuration.getAttribute(DSPPlugin.ATTR_CUSTOM_LAUNCH_PARAMS, false));
-			}
-
-			boolean launch = DSPPlugin.DSP_MODE_LAUNCH
-					.equals(configuration.getAttribute(DSPPlugin.ATTR_DSP_MODE, DSPPlugin.DSP_MODE_LAUNCH));
-			launchDebugServer.setSelection(launch);
-			connectDebugServer.setSelection(!launch);
-			debugCommandText.setText(configuration.getAttribute(DSPPlugin.ATTR_DSP_CMD, ""));
-			List<String> args = configuration.getAttribute(DSPPlugin.ATTR_DSP_ARGS, Collections.emptyList());
-			if (args.isEmpty()) {
-				debugArgsText.setText("");
-			} else if (args.size() == 1) {
-				debugArgsText.setText(args.get(0));
-			} else {
-				debugArgsText.setText(String.join(" ", args.toArray(new String[args.size()])));
-			}
-			monitorAdapterLauncherProcessCheckbox
-					.setSelection(configuration.getAttribute(DSPPlugin.ATTR_DSP_MONITOR_DEBUG_ADAPTER, false));
-			serverHost.setText(configuration.getAttribute(DSPPlugin.ATTR_DSP_SERVER_HOST, DEFAULT_SERVER));
-			serverPort.setText(
-					Integer.toString(configuration.getAttribute(DSPPlugin.ATTR_DSP_SERVER_PORT, DEFAULT_PORT)));
-			jsonText.setText(configuration.getAttribute(DSPPlugin.ATTR_DSP_PARAM, ""));
-		} catch (CoreException e) {
-			setErrorMessage(e.getMessage());
-		}
-
-	}
-
-	@Override
-	public void performApply(ILaunchConfigurationWorkingCopy configuration) {
-		if (allowCustomSettingsCheckbox) {
-			configuration.setAttribute(DSPPlugin.ATTR_CUSTOM_DEBUG_ADAPTER, customDebugAdapterCheckbox.getSelection());
-			configuration.setAttribute(DSPPlugin.ATTR_CUSTOM_LAUNCH_PARAMS,
-					customLaunchParametersCheckbox.getSelection());
-		}
-
-		boolean launch = launchDebugServer.getSelection();
-		if (launch) {
-			configuration.setAttribute(DSPPlugin.ATTR_DSP_MODE, DSPPlugin.DSP_MODE_LAUNCH);
-		} else {
-			configuration.setAttribute(DSPPlugin.ATTR_DSP_MODE, DSPPlugin.DSP_MODE_CONNECT);
-		}
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_CMD, getAttributeValueFrom(debugCommandText));
-		String arg = getAttributeValueFrom(debugArgsText);
-		if (arg == null) {
-			configuration.setAttribute(DSPPlugin.ATTR_DSP_ARGS, (String) null);
-		} else {
-			configuration.setAttribute(DSPPlugin.ATTR_DSP_ARGS, Arrays.asList(arg.split("\\s+"))); //$NON-NLS-1$
-		}
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_MONITOR_DEBUG_ADAPTER,
-				monitorAdapterLauncherProcessCheckbox.getSelection());
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_SERVER_HOST, getAttributeValueFrom(serverHost));
-		String portString = getAttributeValueFrom(serverPort);
-		int port = DEFAULT_PORT;
-		try {
-			port = Integer.parseInt(portString);
-		} catch (NumberFormatException e) {
-			// handled in error checking already
-		}
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_SERVER_PORT, port);
-		configuration.setAttribute(DSPPlugin.ATTR_DSP_PARAM, getAttributeValueFrom(jsonText));
-
-	}
-
-	/**
-	 * Returns the string in the text widget, or <code>null</code> if empty.
-	 *
-	 * @return text or <code>null</code>
-	 */
-	protected String getAttributeValueFrom(Text text) {
-		String value = text.getText().trim();
-		if (!value.isEmpty()) {
-			return value;
-		}
-		return null;
-	}
-
-	@Override
-	public String getName() {
-		return "Debug Adapter";
-	}
-
-	@Override
-	public String getId() {
-		return "org.eclipse.lsp4e.debug.launcher.DSPMainTab";
-	}
-
-	@Override
-	public Image getImage() {
-		return DSPImages.get(DSPImages.IMG_VIEW_DEBUGGER_TAB);
-	}
-
-	@Override
-	public boolean isValid(ILaunchConfiguration launchConfig) {
-		setErrorMessage(null);
-		setMessage(null);
-
-		boolean enableDebugAdapterSettings = customDebugAdapterCheckbox == null
-				|| customDebugAdapterCheckbox.getSelection();
-		if (enableDebugAdapterSettings) {
-			boolean launch = launchDebugServer.getSelection();
-			if (launch) {
-				if (getAttributeValueFrom(debugCommandText) == null) {
-					setMessage("Specify a debug adapter command");
-					return false;
-				}
-			} else {
-				if (getAttributeValueFrom(serverHost) == null) {
-					setMessage("Specify a server host");
-					return false;
-				}
-
-				try {
-					int port = Integer.parseInt(getAttributeValueFrom(serverPort));
-					if (port < 1 || port > 65535) {
-						throw new NumberFormatException();
-					}
-				} catch (NumberFormatException e) {
-					setMessage("Specify a port as an integer in the range 1-65535");
-					return false;
-				}
-			}
-		}
-
-		boolean enableLaunchParameterSettings = customLaunchParametersCheckbox == null
-				|| customLaunchParametersCheckbox.getSelection();
-		if (enableLaunchParameterSettings) {
-			// We don't check anything here yet. It would be good to check JSON is valid.
-		}
-
-		return true;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPOverrideSettingsTab.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPOverrideSettingsTab.java
deleted file mode 100644
index f99f900..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPOverrideSettingsTab.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.launcher;
-
-public class DSPOverrideSettingsTab extends DSPMainTab {
-
-	public DSPOverrideSettingsTab() {
-		super(true);
-	}
-
-	@Override
-	public String getId() {
-		return "org.eclipse.lsp4e.debug.launcher.DSPOverrideSettingsTab";
-	}
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPTabGroup.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPTabGroup.java
deleted file mode 100644
index f2e0024..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/launcher/DSPTabGroup.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.launcher;
-
-import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
-import org.eclipse.debug.ui.CommonTab;
-import org.eclipse.debug.ui.ILaunchConfigurationDialog;
-import org.eclipse.debug.ui.ILaunchConfigurationTab;
-
-public class DSPTabGroup extends AbstractLaunchConfigurationTabGroup {
-
-	@Override
-	public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
-		setTabs(new ILaunchConfigurationTab[] { new DSPMainTab(), new CommonTab() });
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/presentation/DSPDebugModelPresentation.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/presentation/DSPDebugModelPresentation.java
deleted file mode 100644
index a92ee43..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/presentation/DSPDebugModelPresentation.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.presentation;
-
-import java.net.URI;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.debug.core.model.IDisconnect;
-import org.eclipse.debug.core.model.ILineBreakpoint;
-import org.eclipse.debug.core.model.ITerminate;
-import org.eclipse.debug.core.model.IValue;
-import org.eclipse.debug.internal.ui.DebugUIPlugin;
-import org.eclipse.debug.ui.IDebugModelPresentation;
-import org.eclipse.debug.ui.ISourcePresentation;
-import org.eclipse.debug.ui.IValueDetailListener;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.IFontProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.lsp4e.debug.debugmodel.DSPDebugElement;
-import org.eclipse.lsp4e.debug.debugmodel.DSPThread;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IURIEditorInput;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.FileStoreEditorInput;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.part.FileEditorInput;
-
-public class DSPDebugModelPresentation extends LabelProvider implements IDebugModelPresentation, IFontProvider {
-
-	private Font italic;
-
-	@Override
-	public String getText(Object element) {
-		StringBuilder label = new StringBuilder();
-		if (element instanceof DSPThread) {
-			DSPThread thread = (DSPThread) element;
-			label.append(NLS.bind("Thread #{0} [{1}]", thread.getId(), thread.getName()));
-
-		}
-
-		if (label.length() != 0) {
-			if (element instanceof ITerminate) {
-				if (((ITerminate) element).isTerminated()) {
-					label.insert(0, "<terminated>");
-				}
-			} else if (element instanceof IDisconnect && ((IDisconnect) element).isDisconnected()) {
-				label.insert(0, "<disconnected>");
-			}
-		} else {
-			// Use default TODO should the entire default be copied here?
-			label.append(DebugUIPlugin.getDefaultLabelProvider().getText(element));
-		}
-		if (element instanceof DSPDebugElement) {
-			DSPDebugElement debugElement = (DSPDebugElement) element;
-			if (debugElement.getErrorMessage() != null) {
-				label.append(" <error:");
-				label.append(debugElement.getErrorMessage());
-				label.append(">");
-			}
-		}
-		return label.toString();
-	}
-
-	@Override
-	public Font getFont(Object element) {
-		if (element instanceof DSPDebugElement) {
-			DSPDebugElement debugElement = (DSPDebugElement) element;
-			if (debugElement.getErrorMessage() != null) {
-				return italic();
-			}
-		}
-		return null;
-	}
-
-	private Font italic() {
-		if (italic == null) {
-			Font dialogFont = JFaceResources.getDialogFont();
-			FontData[] fontData = dialogFont.getFontData();
-			for (int i = 0; i < fontData.length; i++) {
-				FontData data = fontData[i];
-				data.setStyle(SWT.ITALIC);
-			}
-			Display display = getDisplay();
-			italic = new Font(display, fontData);
-		}
-		return italic;
-	}
-
-	@Override
-	public void dispose() {
-		if (italic != null) {
-			italic.dispose();
-		}
-		super.dispose();
-	}
-
-	@Override
-	public IEditorInput getEditorInput(Object element) {
-		if (element instanceof ILineBreakpoint) {
-			return new FileEditorInput((IFile) ((ILineBreakpoint) element).getMarker().getResource());
-		}
-		if (element instanceof IFile) {
-			return new FileEditorInput((IFile) element);
-		}
-
-		IFileStore fileStore = EFS.getLocalFileSystem().getStore(new Path(element.toString()));
-		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-		IFile[] files = root.findFilesForLocationURI(fileStore.toURI());
-		if (files != null) {
-			for (IFile file : files) {
-				if (file.exists()) {
-					return new FileEditorInput(file);
-				}
-			}
-		}
-		return new FileStoreEditorInput(fileStore);
-	}
-
-	@Override
-	public String getEditorId(IEditorInput input, Object element) {
-		String id = null;
-		if (input != null) {
-			IEditorDescriptor descriptor = null;
-			if (input instanceof IFileEditorInput) {
-				IFileEditorInput fileEditorInput = (IFileEditorInput) input;
-				IFile file = fileEditorInput.getFile();
-				descriptor = IDE.getDefaultEditor(file);
-			} else if (input instanceof IURIEditorInput) {
-				IURIEditorInput uriEditorInput = (IURIEditorInput) input;
-				URI uri = uriEditorInput.getURI();
-				try {
-					IFileStore fileStore = EFS.getStore(uri);
-					id = IDE.getEditorDescriptorForFileStore(fileStore, false).getId();
-				} catch (CoreException e) {
-					// fallback to default case
-				}
-			}
-			if (id == null) {
-				if (descriptor == null) {
-					IEditorRegistry registry = PlatformUI.getWorkbench().getEditorRegistry();
-					descriptor = registry.getDefaultEditor(input.getName());
-				}
-
-				id = "org.eclipse.ui.genericeditor.GenericEditor";
-				if (descriptor != null) {
-					id = descriptor.getId();
-				}
-			}
-
-			if (id == null && element instanceof ILineBreakpoint) {
-				// There is no associated editor ID for this breakpoint, see if an alternative
-				// can be supplied from an adapter.
-				ISourcePresentation sourcePres = Platform.getAdapterManager().getAdapter(element,
-						ISourcePresentation.class);
-				if (sourcePres != null) {
-					String lid = sourcePres.getEditorId(input, element);
-					if (lid != null) {
-						id = lid;
-					}
-				}
-			}
-		}
-		return id;
-	}
-
-	@Override
-	public void setAttribute(String attribute, Object value) {
-	}
-
-	@Override
-	public void computeDetail(IValue value, IValueDetailListener listener) {
-		// TODO Auto-generated method stub
-
-	}
-
-	public static Display getDisplay() {
-		Display display;
-		display = Display.getCurrent();
-		if (display == null) {
-			display = Display.getDefault();
-		}
-		return display;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/AbsolutePathSourceContainer.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/AbsolutePathSourceContainer.java
deleted file mode 100644
index cf72471..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/AbsolutePathSourceContainer.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.sourcelookup;
-
-import java.nio.file.Paths;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainer;
-
-public class AbsolutePathSourceContainer extends AbstractSourceContainer implements ISourceContainer {
-
-	@Override
-	public Object[] findSourceElements(String name) throws CoreException {
-		if (name != null && Paths.get(name).isAbsolute()) {
-			return new Object[] { name };
-		}
-		return new Object[0];
-	}
-
-	@Override
-	public String getName() {
-		return "Absolute Path";
-	}
-
-	@Override
-	public ISourceContainerType getType() {
-		return null;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/DSPSourceLookupDirector.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/DSPSourceLookupDirector.java
deleted file mode 100644
index b4a4ef6..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/DSPSourceLookupDirector.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.sourcelookup;
-
-import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
-import org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant;
-
-public class DSPSourceLookupDirector extends AbstractSourceLookupDirector {
-
-	public static final String ID = "org.eclipse.lsp4e.debug.sourceLocator";
-
-	@Override
-	public void initializeParticipants() {
-		addParticipants(new ISourceLookupParticipant[] { new DSPSourceLookupParticipant() });
-
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/DSPSourceLookupParticipant.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/DSPSourceLookupParticipant.java
deleted file mode 100644
index 85df4a3..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/DSPSourceLookupParticipant.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.sourcelookup;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupParticipant;
-import org.eclipse.lsp4e.debug.debugmodel.DSPStackFrame;
-
-public class DSPSourceLookupParticipant extends AbstractSourceLookupParticipant {
-
-	@Override
-	public String getSourceName(Object object) throws CoreException {
-		if (object instanceof String) {
-			return (String) object;
-		}
-		if (object instanceof DSPStackFrame) {
-			return ((DSPStackFrame) object).getSourceName();
-		}
-		return null;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/DSPSourcePathComputerDelegate.java b/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/DSPSourcePathComputerDelegate.java
deleted file mode 100644
index 9df9fc3..0000000
--- a/org.eclipse.lsp4e.debug/src/org/eclipse/lsp4e/debug/sourcelookup/DSPSourcePathComputerDelegate.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders Ltd. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.debug.sourcelookup;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate;
-
-public class DSPSourcePathComputerDelegate implements ISourcePathComputerDelegate {
-
-	@Override
-	public ISourceContainer[] computeSourceContainers(ILaunchConfiguration configuration, IProgressMonitor monitor)
-			throws CoreException {
-		return new ISourceContainer[] { new AbsolutePathSourceContainer() };
-	}
-
-}
diff --git a/org.eclipse.lsp4e.jdt/.classpath b/org.eclipse.lsp4e.jdt/.classpath
deleted file mode 100644
index e801ebf..0000000
--- a/org.eclipse.lsp4e.jdt/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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-11"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.lsp4e.jdt/.project b/org.eclipse.lsp4e.jdt/.project
deleted file mode 100644
index d539104..0000000
--- a/org.eclipse.lsp4e.jdt/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.lsp4e.jdt</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.lsp4e.jdt/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.lsp4e.jdt/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 7adc0fb..0000000
--- a/org.eclipse.lsp4e.jdt/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,10 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
-org.eclipse.jdt.core.compiler.compliance=11
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
-org.eclipse.jdt.core.compiler.release=enabled
-org.eclipse.jdt.core.compiler.source=11
diff --git a/org.eclipse.lsp4e.jdt/EPL-2.0.html b/org.eclipse.lsp4e.jdt/EPL-2.0.html
deleted file mode 100644
index 4b95323..0000000
--- a/org.eclipse.lsp4e.jdt/EPL-2.0.html
+++ /dev/null
@@ -1,299 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>“Contribution” means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        “originates” from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor's behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>“Contributor” means any person or entity that Distributes the Program.</p>
-    <p>“Licensed Patents” mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>“Program” means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>“Recipient” means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>“Derivative Works” shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>“Modified Works” shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>“Distribute” means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>“Source Code” means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>“Secondary License” means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient's
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient's receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients' rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (‘notices’) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (“Commercial Contributor”)
-      hereby agrees to defend and indemnify every other Contributor
-      (“Indemnified Contributor”) against any losses, damages and costs
-      (collectively “Losses”) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor's responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient's patent(s), then such Recipient's rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient's rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient's rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient's obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
-    <p>“This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.”
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.lsp4e.jdt/META-INF/MANIFEST.MF b/org.eclipse.lsp4e.jdt/META-INF/MANIFEST.MF
deleted file mode 100644
index 2aacea4..0000000
--- a/org.eclipse.lsp4e.jdt/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,17 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: JDT Integration for LSP4E
-Bundle-SymbolicName: org.eclipse.lsp4e.jdt;singleton:=true
-Bundle-Version: 0.10.1.qualifier
-Automatic-Module-Name: org.eclipse.lsp4e.jdt
-Bundle-RequiredExecutionEnvironment: JavaSE-11
-Bundle-ClassPath: .
-Bundle-Localization: plugin
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.core.runtime;bundle-version="3.12.0",
- org.eclipse.jface.text;bundle-version="3.13.0",
- org.eclipse.ui;bundle-version="3.108.0",
- org.eclipse.lsp4e;bundle-version="0.13.2",
- org.eclipse.jdt.core;bundle-version="3.20.0",
- org.eclipse.jdt.ui;bundle-version="3.20.0",
- org.eclipse.swt
diff --git a/org.eclipse.lsp4e.jdt/build.properties b/org.eclipse.lsp4e.jdt/build.properties
deleted file mode 100644
index 8414662..0000000
--- a/org.eclipse.lsp4e.jdt/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               EPL-2.0.html,\
-               plugin.properties
diff --git a/org.eclipse.lsp4e.jdt/plugin.properties b/org.eclipse.lsp4e.jdt/plugin.properties
deleted file mode 100644
index 4f3efee..0000000
--- a/org.eclipse.lsp4e.jdt/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2020 Pivotal Inc. and others.
-# This program and the accompanying materials are made
-# available under the terms of the Eclipse Public License 2.0
-# which is available at https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-#  - Martin Lippert (Pivotal Inc.) - Initial implementation
-###############################################################################
-
-lsCompletionComputer_name=Language Server Proposals
diff --git a/org.eclipse.lsp4e.jdt/plugin.xml b/org.eclipse.lsp4e.jdt/plugin.xml
deleted file mode 100644
index 9c3eefe..0000000
--- a/org.eclipse.lsp4e.jdt/plugin.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
-
-   <extension
-         id="ls-based-java-completion-computer"
-         name="%lsCompletionComputer_name"
-         point="org.eclipse.jdt.ui.javaCompletionProposalComputer">
-      <javaCompletionProposalComputer
-            activate="true"
-            categoryId="org.eclipse.lsp4e.jdt.ls-based-java-completion-computer"
-            class="org.eclipse.lsp4e.jdt.LSJavaCompletionProposalComputer"
-            needsSortingAfterFiltering="false"
-            requiresUIThread="false">
-      </javaCompletionProposalComputer>
-   </extension>
-   
-   <extension
-         id="ls-based-java-hover-provider"
-         point="org.eclipse.jdt.ui.javaEditorTextHovers">
-      <hover
-            activate="true"
-            class="org.eclipse.lsp4e.jdt.LSJavaHoverProvider"
-            id="org.eclipse.lsp4e.jdt.hoverprovider">
-      </hover>
-   </extension>
-   
-   <extension
-         point="org.eclipse.core.filebuffers.documentSetup">
-      <participant
-            class="org.eclipse.lsp4e.ConnectDocumentToLanguageServerSetupParticipant"
-            contentTypeId="org.eclipse.jdt.core.javaSource">
-      </participant>
-   </extension>
-
-</plugin>
diff --git a/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/LSJavaCompletionProposalComputer.java b/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/LSJavaCompletionProposalComputer.java
deleted file mode 100644
index f5d68c8..0000000
--- a/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/LSJavaCompletionProposalComputer.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2020 Pivotal Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  - Martin Lippert (Pivotal Inc.) - Initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.jdt;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.ui.text.java.ContentAssistInvocationContext;
-import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
-import org.eclipse.jdt.ui.text.java.IJavaCompletionProposalComputer;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.contentassist.IContextInformation;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.operations.completion.LSContentAssistProcessor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-
-@SuppressWarnings({ "restriction" })
-public class LSJavaCompletionProposalComputer implements IJavaCompletionProposalComputer {
-	
-	private static TimeUnit TIMEOUT_UNIT = TimeUnit.MILLISECONDS;
-	private static long TIMEOUT_LENGTH = 300;
-
-	private LSContentAssistProcessor lsContentAssistProcessor;
-	private String javaCompletionSpecificErrorMessage;
-
-	public LSJavaCompletionProposalComputer() {
-		lsContentAssistProcessor = new LSContentAssistProcessor(false);
-	}
-
-	@Override
-	public void sessionStarted() {
-	}
-
-	@Override
-	public List<ICompletionProposal> computeCompletionProposals(ContentAssistInvocationContext context,
-			IProgressMonitor monitor) {
-		CompletableFuture<ICompletionProposal[]> future = CompletableFuture.supplyAsync(() -> {
-			return lsContentAssistProcessor.computeCompletionProposals(context.getViewer(), context.getInvocationOffset());
-		});
-		
-		try {
-			return Arrays.asList(asJavaProposals(future));
-		} catch (TimeoutException e) {
-			LanguageServerPlugin.logError(e);
-			javaCompletionSpecificErrorMessage = createErrorMessage(e);
-			return Collections.emptyList();
-		} catch (ExecutionException e) {
-			LanguageServerPlugin.logError(e);
-			javaCompletionSpecificErrorMessage = createErrorMessage(e);
-			return Collections.emptyList();
-		} catch (InterruptedException e) {
-			LanguageServerPlugin.logError(e);
-			javaCompletionSpecificErrorMessage = createErrorMessage(e);
-			Thread.currentThread().interrupt();
-			return Collections.emptyList();
-		}
-	}
-
-	private String createErrorMessage(Exception ex) {
-		return Messages.javaSpecificCompletionError + " : " + (ex.getMessage() != null ? ex.getMessage() : ex.toString()); //$NON-NLS-1$
-	}
-
-	/**
-	 * In order for the LS proposals to appear in the right order by JDT, we need to return IJavaCompletionProposal.
-	 * The LSPCompletionProposal that LSP4E computes is NOT IJavaCompletionProposal, and as a consequence JDT
-	 * will by default sort any non Java proposals by display value, which is why we would get a strange sorting order,
-	 * even if our the LS and LSP4E both return a proposal list in the right order.
-	 * 
-	 * This method wraps around the LSCompletionProposal with a IJavaCompletionProposal, and it sets the relevance
-	 * number that JDT uses to sort proposals in a desired order.
-	 */
-	private ICompletionProposal[] asJavaProposals(CompletableFuture<ICompletionProposal[]> future)
-			throws InterruptedException, ExecutionException, TimeoutException {
-		ICompletionProposal[] originalProposals = future.get(TIMEOUT_LENGTH, TIMEOUT_UNIT);
-		
-		// We assume that the original proposals are in the correct order, so we set relevance
-		// based on this existing order. Note that based on IJavaCompletionProposal javadoc,
-		// relevance values are [0,1000] so we start at 1000
-		int relevance = 1000;
-		ICompletionProposal[] javaProposals = new ICompletionProposal[originalProposals.length];
-		
-		for (int i = 0; i < originalProposals.length; i++) {
-			javaProposals[i] = new LSJavaProposal(originalProposals[i], relevance--);
-		}
-		 
-		return javaProposals;
-	}
-
-	@Override
-	public List<IContextInformation> computeContextInformation(ContentAssistInvocationContext context,
-			IProgressMonitor monitor) {
-		IContextInformation[] contextInformation = lsContentAssistProcessor.computeContextInformation(context.getViewer(), context.getInvocationOffset());
-		return Arrays.asList(contextInformation);
-	}
-	
-	@Override
-	public String getErrorMessage() {
-		return javaCompletionSpecificErrorMessage != null ? javaCompletionSpecificErrorMessage : lsContentAssistProcessor.getErrorMessage();
-	}
-
-	@Override
-	public void sessionEnded() {
-	}
-	
-	class LSJavaProposal implements IJavaCompletionProposal {
-		
-		private ICompletionProposal delegate;
-		private int relevance;
-
-		public LSJavaProposal(ICompletionProposal delegate,  int relevance) {
-			this.delegate = delegate;
-			this.relevance = relevance;
-		}
-
-		@Override
-		public void apply(IDocument document) {
-			delegate.apply(document);	
-		}
-
-		@Override
-		public String getAdditionalProposalInfo() {
-			return delegate.getAdditionalProposalInfo();
-		}
-
-		@Override
-		public IContextInformation getContextInformation() {
-			return delegate.getContextInformation();
-		}
-
-		@Override
-		public String getDisplayString() {
-			return delegate.getDisplayString();
-		}
-
-		@Override
-		public Image getImage() {
-			return delegate.getImage();
-		}
-
-		@Override
-		public Point getSelection(IDocument document) {
-			return delegate.getSelection(document);
-		}
-
-		@Override
-		public int getRelevance() {
-			return relevance;
-		}
-		
-	}
-
-}
diff --git a/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/LSJavaHoverProvider.java b/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/LSJavaHoverProvider.java
deleted file mode 100644
index 50d2785..0000000
--- a/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/LSJavaHoverProvider.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2020 Pivotal Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  - Martin Lippert (Pivotal Inc.) - Initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.jdt;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.internal.ui.text.java.hover.JavadocBrowserInformationControlInput;
-import org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover;
-import org.eclipse.jdt.ui.PreferenceConstants;
-import org.eclipse.jface.internal.text.html.HTMLPrinter;
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.operations.hover.LSPTextHover;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.RGB;
-
-@SuppressWarnings("restriction")
-public class LSJavaHoverProvider extends JavadocHover {
-	
-	private static String fgStyleSheet;
-	private static String BODY_OPEN = "<body";
-	private static String BODY_CLOSE = "</body>";
-	private static String SEPARATOR = "<hr/>";
-	
-	private LSPTextHover lsBasedHover;
-
-	public LSJavaHoverProvider() {
-		super();
-		lsBasedHover = new LSPTextHover();
-	}
-
-	@Override
-	public Object getHoverInfo2(ITextViewer textViewer, IRegion hoverRegion) {
-		if (textViewer == null || hoverRegion == null) {
-			return super.getHoverInfo2(textViewer, hoverRegion);
-		}
-		CompletableFuture<String> lsHoverFuture = this.lsBasedHover.getHoverInfoFuture(textViewer, hoverRegion);
-		AtomicReference<String> lsHtmlHoverContent = new AtomicReference<>();
-		AtomicReference<JavadocBrowserInformationControlInput> jdtHoverControlInput = new AtomicReference<>();
-			
-		JavadocBrowserInformationControlInput input;
-		IJavaElement javaElement = null;
-		JavadocBrowserInformationControlInput previous = null;
-		int leadingImageWidth = 0;
-		String jdtHtmlHoverContent = "";
-
-		try {
-			CompletableFuture.allOf(
-					CompletableFuture
-					.runAsync(
-							() -> jdtHoverControlInput.set((JavadocBrowserInformationControlInput) super.getHoverInfo2(textViewer, hoverRegion))),
-					lsHoverFuture.thenAccept(lsHtmlHoverContent::set)
-			).get(1000, TimeUnit.MILLISECONDS);
-
-			if (lsHtmlHoverContent.get() == null) {
-				// No hover content from Language Servers. Return null to let JDT compute the hover using its own Hover Providers
-				return null;
-			}
-			input = jdtHoverControlInput.get();
-			if (input != null) {
-				previous = (JavadocBrowserInformationControlInput) input.getPrevious();
-				javaElement = input.getElement();
-				leadingImageWidth = input.getLeadingImageWidth();
-				jdtHtmlHoverContent = input.getHtml();
-			}
-
-		} catch (InterruptedException | ExecutionException e) {
-			LanguageServerPlugin.logWarning("Javadoc unavailable. Failed to obtain it.", e);
-			// Return null to let JDT compute the hover using its own Hover Providers
-			return null;
-		} catch (TimeoutException e) {
-			LanguageServerPlugin.logWarning("Timeout waiting for data to generate LS hover", e);
-			// Return null to let JDT compute the hover using its own Hover Providers
-			return null;
-		}
-		
-		/*
-		 *  LS HTML and JDT HTML are two HTML docs that need to be combined. JDT HTML comes with embedded CSS.
-		 *  Therefore it is best to insert LS HTML body inside the body of JDT HTML to take advantage of the JDT CSS.
-		 */
-		String content = formatContent(lsHtmlHoverContent.get(), jdtHtmlHoverContent);
-		return new JavadocBrowserInformationControlInput(previous, javaElement, content, leadingImageWidth);
-	}
-
-	private String formatContent(String lsContent, String jdtContent) {
-		if (lsContent != null && lsContent.trim().length() > 0 && jdtContent != null
-				&& jdtContent.trim().length() > 0) {
-			return concatenateHtml(lsContent, jdtContent);
-		} else if (lsContent != null && (jdtContent == null || jdtContent.trim().isEmpty())) {
-			return wrapHtml(lsContent).toString();
-		} else {
-			return (lsContent == null ? "" : lsContent) + (jdtContent == null ? "" : jdtContent);
-		}
-	}
-	
-	private static StringBuilder wrapHtml(String html) {
-		/*
-		 * No JDT content. Means no JDT CSS part either. Therefore add JDT CSS chunk to it.
-		 */
-		ColorRegistry registry = JFaceResources.getColorRegistry();
-		RGB fgRGB = registry.getRGB("org.eclipse.jdt.ui.Javadoc.foregroundColor"); //$NON-NLS-1$ 
-		RGB bgRGB= registry.getRGB("org.eclipse.jdt.ui.Javadoc.backgroundColor"); //$NON-NLS-1$ 
-
-		StringBuilder buffer = new StringBuilder(html);
-		HTMLPrinter.insertPageProlog(buffer, 0, fgRGB, bgRGB, getStyleSheet());
-		HTMLPrinter.addPageEpilog(buffer);
-		return buffer;
-	}
-
-	private static String concatenateHtml(String lsHtml, String jdtHtml) {
-		int insertPosition = jdtHtml.indexOf(BODY_OPEN);
-		if (insertPosition >= 0) {
-			insertPosition = jdtHtml.indexOf('>', insertPosition);
-			if (insertPosition >= 0 && insertPosition < jdtHtml.length()) {
-				// skip <body> tag close
-				insertPosition++;
-				int bodyStartIdx = lsHtml.indexOf(BODY_OPEN);
-				int bodyEndIdx = -1;
-				if (bodyStartIdx >= 0) {
-					bodyStartIdx = lsHtml.indexOf('>', bodyStartIdx);
-					if (bodyStartIdx >= 0 && bodyStartIdx < lsHtml.length()) {
-						// skip <body> tag close
-						bodyStartIdx++;
-						bodyEndIdx = lsHtml.indexOf(BODY_CLOSE, bodyStartIdx);
-						if (bodyEndIdx >= bodyStartIdx && bodyEndIdx <= lsHtml.length()) {
-							return jdtHtml.substring(0, insertPosition) + lsHtml.substring(bodyStartIdx, bodyEndIdx) + SEPARATOR + jdtHtml.substring(insertPosition);
-						} else {
-							LanguageServerPlugin.logWarning("LS Hover Html and JDT hover html were naively concatenated as LS hover HTML BODY tag closing bracket is at invalid position", null);
-						}
-					} else {
-						LanguageServerPlugin.logWarning("LS Hover Html and JDT hover html were naively concatenated as LS hover HTML BODY tag closing bracket wasn't found", null);
-					}
-				} else {
-					LanguageServerPlugin.logWarning("LS Hover Html and JDT hover html were naively concatenated as LS hover HTML BODY tag wasn't found", null);
-				}
-			} else {
-				LanguageServerPlugin.logWarning("LS Hover Html and JDT hover html were naively concatenated as JDT hover HTML BODY tag closing bracket wasn't found", null);
-			}
-		} else {
-			LanguageServerPlugin.logWarning("LS Hover Html and JDT hover html were naively concatenated as JDT hover HTML BODY tag wasn't found", null);
-		}
-		return lsHtml + SEPARATOR + jdtHtml;
-	}
-
-	@Override
-	public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
-		return this.lsBasedHover.getHoverRegion(textViewer, offset);
-	}
-
-	/**
-	 * Taken from {@link JavadocHover}. It's <code>private</code>. See {@link JavadocHover#getStyleSheet()}.
-	 * @return CSS as string
-	 */
-	private static String getStyleSheet() {
-		if (fgStyleSheet == null) {
-			fgStyleSheet= JavadocHover.loadStyleSheet("/JavadocHoverStyleSheet.css"); //$NON-NLS-1$
-		}
-		String css= fgStyleSheet;
-		if (css != null) {
-			FontData fontData= JFaceResources.getFontRegistry().getFontData(PreferenceConstants.APPEARANCE_JAVADOC_FONT)[0];
-			css= HTMLPrinter.convertTopLevelFont(css, fontData);
-		}
-		return css;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/Messages.java b/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/Messages.java
deleted file mode 100644
index 2b5905f..0000000
--- a/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/Messages.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2020 Pivotal Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Martin Lippert (Pivotal Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.jdt;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
-
-	public static String javaSpecificCompletionError;
-
-	static {
-		NLS.initializeMessages("org.eclipse.lsp4e.jdt.messages", Messages.class); //$NON-NLS-1$
-	}
-}
diff --git a/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/messages.properties b/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/messages.properties
deleted file mode 100644
index 0ff8bdb..0000000
--- a/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/messages.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-# *******************************************************************************
-# Copyright (c) 2020 Pivotal Inc. and others.
-# This program and the accompanying materials are made
-# available under the terms of the Eclipse Public License 2.0
-# which is available at https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-#   Martin Lippert (Pivotal Inc.) - initial implementation
-# *******************************************************************************/
-javaSpecificCompletionError=Error while computing language-server-based completion contribution
diff --git a/org.eclipse.lsp4e.test/.classpath b/org.eclipse.lsp4e.test/.classpath
deleted file mode 100644
index e801ebf..0000000
--- a/org.eclipse.lsp4e.test/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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-11"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.lsp4e.test/.gitignore b/org.eclipse.lsp4e.test/.gitignore
deleted file mode 100644
index 0f63015..0000000
--- a/org.eclipse.lsp4e.test/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/target/
-/bin/
diff --git a/org.eclipse.lsp4e.test/.project b/org.eclipse.lsp4e.test/.project
deleted file mode 100644
index a462f68..0000000
--- a/org.eclipse.lsp4e.test/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.lsp4e.test</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.lsp4e.test/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.lsp4e.test/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2dfd1cd..0000000
--- a/org.eclipse.lsp4e.test/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,360 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
-org.eclipse.jdt.core.compiler.compliance=11
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
-org.eclipse.jdt.core.compiler.release=enabled
-org.eclipse.jdt.core.compiler.source=11
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-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_expressions_in_for_loop_header=0
-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_module_statements=16
-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_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
-org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=false
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-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_bitwise_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not 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
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-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_lambda_arrow=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
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-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_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
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-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_lambda_arrow=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
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-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
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-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_additive_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_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_relational_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_shift_operator=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.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/org.eclipse.lsp4e.test/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.lsp4e.test/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 0d68fb5..0000000
--- a/org.eclipse.lsp4e.test/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,63 +0,0 @@
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_Eclipse [built-in] - better
-formatter_settings_version=16
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=false
-sp_cleanup.format_source_code_changes_only=true
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=false
-sp_cleanup.remove_redundant_type_arguments=false
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/org.eclipse.lsp4e.test/EPL-2.0.html b/org.eclipse.lsp4e.test/EPL-2.0.html
deleted file mode 100644
index 4b95323..0000000
--- a/org.eclipse.lsp4e.test/EPL-2.0.html
+++ /dev/null
@@ -1,299 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>“Contribution” means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        “originates” from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor's behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>“Contributor” means any person or entity that Distributes the Program.</p>
-    <p>“Licensed Patents” mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>“Program” means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>“Recipient” means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>“Derivative Works” shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>“Modified Works” shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>“Distribute” means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>“Source Code” means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>“Secondary License” means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient's
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient's receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients' rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (‘notices’) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (“Commercial Contributor”)
-      hereby agrees to defend and indemnify every other Contributor
-      (“Indemnified Contributor”) against any losses, damages and costs
-      (collectively “Losses”) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor's responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient's patent(s), then such Recipient's rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient's rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient's rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient's obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
-    <p>“This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.”
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.lsp4e.test/META-INF/MANIFEST.MF b/org.eclipse.lsp4e.test/META-INF/MANIFEST.MF
deleted file mode 100644
index 0aa8ffd..0000000
--- a/org.eclipse.lsp4e.test/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,24 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Tests for language server bundle (Incubation)
-Bundle-SymbolicName: org.eclipse.lsp4e.test;singleton:=true
-Bundle-Version: 0.13.8.qualifier
-Fragment-Host: org.eclipse.lsp4e
-Bundle-Vendor: Eclipse.org
-Bundle-RequiredExecutionEnvironment: JavaSE-11
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.junit,
- org.eclipse.ui,
- org.eclipse.ui.workbench,
- org.eclipse.ui.ide,
- org.eclipse.ui.workbench.texteditor,
- org.eclipse.ui.genericeditor;bundle-version="1.1.0",
- org.eclipse.jface.text,
- org.eclipse.search,
- org.eclipse.core.expressions,
- org.eclipse.osgi.services,
- org.eclipse.lsp4e.tests.mock;bundle-version="0.6.0",
- org.eclipse.jface.text.tests,
- org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)"
-Automatic-Module-Name: org.eclipse.lsp4e.test
diff --git a/org.eclipse.lsp4e.test/build.properties b/org.eclipse.lsp4e.test/build.properties
deleted file mode 100644
index 849b2a2..0000000
--- a/org.eclipse.lsp4e.test/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               EPL-2.0.html,\
-               .,\
-               fragment.xml
diff --git a/org.eclipse.lsp4e.test/fragment.xml b/org.eclipse.lsp4e.test/fragment.xml
deleted file mode 100644
index dc26039..0000000
--- a/org.eclipse.lsp4e.test/fragment.xml
+++ /dev/null
@@ -1,234 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<fragment>
-   <extension
-         point="org.eclipse.lsp4e.languageServer">
-      <server
-            class="org.eclipse.lsp4e.test.MockConnectionProvider"
-            id="org.eclipse.lsp4e.test.server"
-            label="Test LS">
-      </server>
-      <server
-            class="org.eclipse.lsp4e.test.MockConnectionProvider"
-            id="org.eclipse.lsp4e.test.server2"
-            label="Test LS 2">
-      </server>
-       <server
-            class="org.eclipse.lsp4e.test.MockConnectionProviderWithException"
-            id="org.eclipse.lsp4e.test.server-with-exception"
-            label="Test LS With Exception">
-      </server>
-       <server
-            class="org.eclipse.lsp4e.test.MockConnectionProviderMultiRootFolders"
-            id="org.eclipse.lsp4e.test.server-with-multi-root-support"
-            label="Test LS With Multi-Root Support">
-      </server>
-      <server
-            class="org.eclipse.lsp4e.test.MockConnectionProvider"
-            id="org.eclipse.lsp4e.test.server.disable"
-            label="Test LS Enablement">
-      </server>
-      <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.content-type"
-            id="org.eclipse.lsp4e.test.server">
-      </contentTypeMapping>
-      <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.content-type-multi-ls"
-            id="org.eclipse.lsp4e.test.server">
-      </contentTypeMapping>
-      <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.content-type-multi-ls"
-            id="org.eclipse.lsp4e.test.server2">
-      </contentTypeMapping>
-      <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.childContentType"
-            id="org.eclipse.lsp4e.test.server">
-      </contentTypeMapping>
-      <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.childContentType"
-            id="org.eclipse.lsp4e.test.server2">
-      </contentTypeMapping>
-      <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.content-type-different"
-            id="org.eclipse.lsp4e.test.server2"
-            languageId="differentLanguageId">
-      </contentTypeMapping>
-         <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.content-type-server-with-exception"
-            id="org.eclipse.lsp4e.test.server-with-exception">
-      </contentTypeMapping>
-      <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.content-type-server-with-multi-root"
-            id="org.eclipse.lsp4e.test.server-with-multi-root-support">
-      </contentTypeMapping>
-      <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.content-type-enabled"
-            id="org.eclipse.lsp4e.test.server.disable">
-      </contentTypeMapping>
-      <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.content-type-disabled"
-            id="org.eclipse.lsp4e.test.server.disable">
-      </contentTypeMapping>
-      <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.content-type-with-tester"
-            id="org.eclipse.lsp4e.test.server.disable">
-            <enabledWhen
-                  description="enablement description">
-                  <test
-                        property="org.eclipse.lsp4e.test.enablementPropertyTester">
-                  </test>
-            </enabledWhen>
-      </contentTypeMapping>
-      <server
-            class="org.eclipse.lsp4e.test.MockConnectionProvider"
-            id="org.eclipse.lsp4e.test.singletonLS"
-            label="Singleton LS"
-            singleton="true">
-      </server>
-      <contentTypeMapping
-            contentType="org.eclipse.lsp4e.test.singleton-ls-content-type"
-            id="org.eclipse.lsp4e.test.singletonLS">
-      </contentTypeMapping>
-   </extension>
-   <extension
-         point="org.eclipse.core.contenttype.contentTypes">
-      <content-type
-            base-type="org.eclipse.core.runtime.text"
-            file-extensions="lspt"
-            id="org.eclipse.lsp4e.test.content-type"
-            name="Test Content Type"
-            priority="normal">
-      </content-type>
-      <content-type
-            base-type="org.eclipse.core.runtime.text"
-            file-extensions="lsptmultils"
-            id="org.eclipse.lsp4e.test.content-type-multi-ls"
-            name="Test Content Type"
-            priority="normal">
-      </content-type>
-      <content-type
-            base-type="org.eclipse.core.runtime.text"
-            file-extensions="lspt2"
-            id="org.eclipse.lsp4e.test.content-type2"
-            name="Test Content Type 2"
-            priority="normal">
-      </content-type>
-      <content-type
-            base-type="org.eclipse.core.runtime.text"
-            file-extensions="lsptWithException"
-            id="org.eclipse.lsp4e.test.content-type-server-with-exception"
-            name="Test Content Type Server with Exception"
-            priority="normal">
-      </content-type>
-      <content-type
-            base-type="org.eclipse.core.runtime.text"
-            file-extensions="lsptWithMultiRoot"
-            id="org.eclipse.lsp4e.test.content-type-server-with-multi-root"
-            name="Test Content Type Server with Multi-Root Support"
-            priority="normal">
-      </content-type>
-      <content-type
-            base-type="org.eclipse.core.runtime.text"
-            file-extensions="lspt-different"
-            id="org.eclipse.lsp4e.test.content-type-different"
-            name="Test Content Type for different Language ID"
-            priority="normal">
-      </content-type>
-      <content-type
-            base-type="org.eclipse.lsp4e.test.content-type"
-            childContentTypename="child"
-            file-extensions="lsptchild"
-            id="org.eclipse.lsp4e.test.childContentType"
-            name="lsptchild"
-            priority="normal">
-      </content-type>
-      <content-type
-            base-type="org.eclipse.lsp4e.test.content-type"
-            childContentTypename="child"
-            file-extensions="lsptchildNoLS"
-            id="org.eclipse.lsp4e.test.childContentTypeNpLS"
-            name="lsptchild-no-ls"
-            priority="normal">
-      </content-type>
-      <content-type
-            base-type="org.eclipse.core.runtime.text"
-            file-extensions="lspt-disabled"
-            id="org.eclipse.lsp4e.test.content-type-disabled"
-            name="Test Content Type for disabled Language ID"
-            priority="normal">
-      </content-type>
-      <content-type
-            base-type="org.eclipse.core.runtime.text"
-            file-extensions="lspt-enabled"
-            id="org.eclipse.lsp4e.test.content-type-enabled"
-            name="Test Content Type for enabled Language ID"
-            priority="normal">
-      </content-type>
-      <content-type
-            base-type="org.eclipse.core.runtime.text"
-            file-extensions="lspt-tester"
-            id="org.eclipse.lsp4e.test.content-type-with-tester"
-            name="Test Content Type for disabled Language ID with enablement tester"
-            priority="normal">
-      </content-type>
-      <content-type
-            file-extensions="lsp-singletonLS"
-            id="org.eclipse.lsp4e.test.singleton-ls-content-type"
-            name="Test Content-Type associated with Singleton LS"
-            priority="normal">
-      </content-type>
-   </extension>
-   <extension
-         point="org.eclipse.ui.startup">
-      <startup
-            class="org.eclipse.lsp4e.test.CreateAndRegisterContentTypeLSPLaunchConfigMapping">
-      </startup>
-   </extension>
-
-  <extension
-         point="org.eclipse.core.expressions.propertyTesters">
-      <propertyTester
-            class="org.eclipse.lsp4e.test.MappingEnablementTester"
-            id="org.eclipse.lsp4e.test.MappingEnablementTester"
-            namespace="org.eclipse.lsp4e.test"
-            properties="enablementPropertyTester"
-            type="java.lang.Object">
-      </propertyTester>
-      </extension>
-  <extension
-         point="org.eclipse.core.filesystem.filesystems">
-	<filesystem scheme="other">
-	   <run class="org.eclipse.lsp4e.test.OtherFileSystem" />
-	</filesystem>
-  </extension>"
-  <extension
-         point="org.eclipse.core.runtime.adapters">
-      <factory
-            adaptableType="java.lang.String"
-            class="org.eclipse.lsp4e.test.UriToResourceAdapterFactory">
-         <adapter
-               type="org.eclipse.core.resources.IResource">
-         </adapter>
-      </factory>
-  </extension>
-  <extension
-         point="org.eclipse.core.runtime.adapters">
-      <factory
-            adaptableType="java.lang.String"
-            class="org.eclipse.lsp4e.test.UriToResourceAdapterFactory">
-         <adapter
-               type="org.eclipse.core.resources.IFile">
-         </adapter>
-      </factory>
-  </extension>
-  <extension
-         point="org.eclipse.core.runtime.adapters">
-      <factory
-            adaptableType="org.eclipse.core.resources.IFile"
-            class="org.eclipse.lsp4e.test.UriToResourceAdapterFactory">
-         <adapter
-               type="java.net.URI">
-         </adapter>
-      </factory>
-  </extension>
-</fragment>
diff --git a/org.eclipse.lsp4e.test/pom.xml b/org.eclipse.lsp4e.test/pom.xml
deleted file mode 100644
index 8b98fd6..0000000
--- a/org.eclipse.lsp4e.test/pom.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.eclipse.lsp4e</groupId>
-		<artifactId>parent</artifactId>
-		<version>0.13.1-SNAPSHOT</version>
-	</parent>
-	<artifactId>org.eclipse.lsp4e.test</artifactId>
-	<packaging>eclipse-test-plugin</packaging>
-	<version>0.13.8-SNAPSHOT</version>
-
-	<properties>
-		<os-jvm-flags /> <!-- for the default case -->
-	</properties>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>target-platform-configuration</artifactId>
-				<version>${tycho-version}</version>
-				<configuration>
-					<dependency-resolution>
-						<extraRequirements>
-							<requirement>
-								<type>eclipse-feature</type>
-								<id>org.eclipse.rcp</id>
-								<versionRange>0.0.0</versionRange>
-							</requirement>
-						</extraRequirements>
-					</dependency-resolution>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>tycho-surefire-plugin</artifactId>
-				<version>${tycho-version}</version>
-				<configuration>
-					<testClass>org.eclipse.lsp4e.test.AllTests</testClass>
-					<useUIHarness>true</useUIHarness>
-					<useUIThread>true</useUIThread>
-					<forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
-					<argLine>${tycho.testArgLine} ${ui.test.vmargs} ${os-jvm-flags}</argLine>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
-
-	<profiles>
-		<profile>
-			<id>macosx-jvm-flags</id>
-		<activation>
-			<os>
-				<family>mac</family>
-			</os>
-		</activation>
-		<properties>
-			<os-jvm-flags>-XstartOnFirstThread</os-jvm-flags>
-		</properties>
-		</profile>
-	</profiles>
-</project>
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/AllCleanRule.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/AllCleanRule.java
deleted file mode 100644
index 3be1411..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/AllCleanRule.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.intro.IIntroPart;
-import org.junit.rules.TestWatcher;
-import org.junit.runner.Description;
-
-public class AllCleanRule extends TestWatcher {
-
-	@Override
-	protected void starting(Description description) {
-		super.starting(description);
-		IIntroPart intro = PlatformUI.getWorkbench().getIntroManager().getIntro();
-		if (intro != null) {
-			PlatformUI.getWorkbench().getIntroManager().closeIntro(intro);
-		}
-		clear();
-	}
-	
-	@Override
-	protected void finished(Description description) {
-		clear();
-		super.finished(description);
-	}
-
-	private void clear() {
-		PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false);
-		for (IProject project : ResourcesPlugin.getWorkspace().getRoot().getProjects()) {
-			try {
-				project.delete(true, null);
-			} catch (CoreException e) {
-				e.printStackTrace();
-			}
-		}
-		LanguageServiceAccessor.clearStartedServers();
-		MockLanguageServer.reset();
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/AllTests.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/AllTests.java
deleted file mode 100644
index 5649353..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/AllTests.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2021 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Mickael Istria (Red Hat Inc.) - Added some suites
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import org.eclipse.lsp4e.test.codeactions.CodeActionTests;
-import org.eclipse.lsp4e.test.color.ColorTest;
-import org.eclipse.lsp4e.test.commands.DynamicRegistrationTest;
-import org.eclipse.lsp4e.test.completion.CompleteCompletionTest;
-import org.eclipse.lsp4e.test.completion.CompletionOrderingTests;
-import org.eclipse.lsp4e.test.completion.ContextInformationTest;
-import org.eclipse.lsp4e.test.completion.IncompleteCompletionTest;
-import org.eclipse.lsp4e.test.definition.DefinitionTest;
-import org.eclipse.lsp4e.test.diagnostics.DiagnosticsTest;
-import org.eclipse.lsp4e.test.documentLink.DocumentLinkTest;
-import org.eclipse.lsp4e.test.edit.DocumentDidChangeTest;
-import org.eclipse.lsp4e.test.edit.DocumentDidCloseTest;
-import org.eclipse.lsp4e.test.edit.DocumentDidOpenTest;
-import org.eclipse.lsp4e.test.edit.DocumentDidSaveTest;
-import org.eclipse.lsp4e.test.edit.DocumentRevertAndCloseTest;
-import org.eclipse.lsp4e.test.edit.LSPEclipseUtilsTest;
-import org.eclipse.lsp4e.test.format.FormatTest;
-import org.eclipse.lsp4e.test.highlight.HighlightTest;
-import org.eclipse.lsp4e.test.hover.HoverTest;
-import org.eclipse.lsp4e.test.linkedediting.LinkedEditingTest;
-import org.eclipse.lsp4e.test.message.ShowMessageTest;
-import org.eclipse.lsp4e.test.operations.codelens.LSPCodeMiningTest;
-import org.eclipse.lsp4e.test.outline.EditorToOutlineAdapterFactoryTest;
-import org.eclipse.lsp4e.test.outline.OutlineContentTest;
-import org.eclipse.lsp4e.test.outline.SymbolsLabelProviderTest;
-import org.eclipse.lsp4e.test.references.FindReferencesTest;
-import org.eclipse.lsp4e.test.rename.LSPTextChangeTest;
-import org.eclipse.lsp4e.test.rename.RenameTest;
-import org.eclipse.lsp4e.test.symbols.SymbolsModelTest;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-@RunWith(Suite.class)
-@SuiteClasses({
-	LanguageServiceAccessorTest.class,
-	ContentTypeToLanguageServerDefinitionTest.class,
-	CompleteCompletionTest.class,
-	IncompleteCompletionTest.class,
-	CompletionOrderingTests.class,
-	ContextInformationTest.class,
-	DocumentDidOpenTest.class,
-	DocumentDidChangeTest.class,
-	DocumentDidSaveTest.class,
-	DocumentDidCloseTest.class,
-	DocumentRevertAndCloseTest.class,
-	SymbolsModelTest.class,
-	LSPEclipseUtilsTest.class,
-	HoverTest.class,
-	DefinitionTest.class,
-	DiagnosticsTest.class,
-	FindReferencesTest.class,
-	FormatTest.class,
-	CodeActionTests.class,
-	DocumentLinkTest.class,
-	RunningLanguageServerTest.class,
-	HighlightTest.class,
-	LinkedEditingTest.class,
-	DynamicRegistrationTest.class,
-	LSPTextChangeTest.class,
-	RenameTest.class,
-	SymbolsLabelProviderTest.class,
-	EditorToOutlineAdapterFactoryTest.class,
-	OutlineContentTest.class,
-	LanguageServerWrapperTest.class,
-	ColorTest.class,
-	LSPCodeMiningTest.class,
-	ShowMessageTest.class
-})
-public class AllTests {
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/ContentTypeToLanguageServerDefinitionTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/ContentTypeToLanguageServerDefinitionTest.java
deleted file mode 100644
index 1bce4a2..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/ContentTypeToLanguageServerDefinitionTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Rastislav Wagner (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-import org.eclipse.lsp4e.ContentTypeToLanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServersRegistry;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-public class ContentTypeToLanguageServerDefinitionTest {
-
-	public static final String SERVER_TO_DISABLE = "org.eclipse.lsp4e.test.server.disable";
-	public static final String DISABLED_CONTENT_TYPE = "org.eclipse.lsp4e.test.content-type-disabled";
-	public static final String DISABLED_SERVER_PREF = SERVER_TO_DISABLE + "/" + DISABLED_CONTENT_TYPE;
-
-	@BeforeClass
-	public static void setup() {
-		LanguageServerPlugin.getDefault().getPreferenceStore()
-				.setValue(DISABLED_SERVER_PREF, "false");
-	}
-
-	@AfterClass
-	public static void cleanup() {
-		TestUtils.getDisabledLS().setUserEnabled(false);
-	}
-
-	@Test
-	public void testDisabledLanguageServerMappingsPreference() {
-		List<ContentTypeToLanguageServerDefinition> disabledDefinitions = LanguageServersRegistry.getInstance()
-				.getContentTypeToLSPExtensions().stream().filter(lsDefinition -> !lsDefinition.isEnabled())
-				.collect(Collectors.toList());
-		assertEquals(1, disabledDefinitions.size());
-		assertEquals(SERVER_TO_DISABLE, disabledDefinitions.get(0).getValue().id);
-		assertEquals(DISABLED_CONTENT_TYPE, disabledDefinitions.get(0).getKey().toString());
-
-	}
-
-	@Test
-	public void testDisableLanguageServerMapping() {
-		ContentTypeToLanguageServerDefinition lsDefinition = TestUtils.getDisabledLS();
-		lsDefinition.setUserEnabled(false);
-		assertFalse(lsDefinition.isEnabled());
-		assertTrue(LanguageServerPlugin.getDefault().getPreferenceStore().contains(DISABLED_SERVER_PREF));
-		assertFalse(LanguageServerPlugin.getDefault().getPreferenceStore().getBoolean(DISABLED_SERVER_PREF));
-		lsDefinition.setUserEnabled(true);
-		assertTrue(lsDefinition.isEnabled());
-		assertTrue(LanguageServerPlugin.getDefault().getPreferenceStore().contains(DISABLED_SERVER_PREF));
-		assertTrue(LanguageServerPlugin.getDefault().getPreferenceStore().getBoolean(DISABLED_SERVER_PREF));
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/CreateAndRegisterContentTypeLSPLaunchConfigMapping.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/CreateAndRegisterContentTypeLSPLaunchConfigMapping.java
deleted file mode 100644
index fb12039..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/CreateAndRegisterContentTypeLSPLaunchConfigMapping.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - Initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URLClassLoader;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.eclipse.core.externaltools.internal.IExternalToolConstants;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServersRegistry;
-import org.eclipse.lsp4e.LaunchConfigurationStreamProvider;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.ui.IStartup;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.wiring.BundleWire;
-import org.osgi.framework.wiring.BundleWiring;
-
-public class CreateAndRegisterContentTypeLSPLaunchConfigMapping implements IStartup {
-
-	@Override
-	public void earlyStartup() {
-		IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
-		ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
-		ILaunchConfigurationType externalType = launchManager.getLaunchConfigurationType(IExternalToolConstants.ID_PROGRAM_LAUNCH_CONFIGURATION_TYPE);
-		LanguageServersRegistry registry = LanguageServersRegistry.getInstance();
-		try {
-			String externalProcessLaunchName = "Mock external LS";
-			ILaunchConfiguration mockServerLauch = null;
-			for (ILaunchConfiguration launch : launchManager.getLaunchConfigurations(externalType)) {
-				if (launch.getName().equals(externalProcessLaunchName)) {
-					mockServerLauch = launch;
-				}
-			}
-			if (mockServerLauch == null) {
-				ILaunchConfigurationWorkingCopy workingCopy = externalType.newInstance(null, externalProcessLaunchName);
-				// some common config
-				workingCopy.setAttribute(IExternalToolConstants.ATTR_LAUNCH_IN_BACKGROUND, true);
-				workingCopy.setAttribute(IExternalToolConstants.ATTR_BUILDER_ENABLED, false);
-				workingCopy.setAttribute(IExternalToolConstants.ATTR_SHOW_CONSOLE, false);
-				workingCopy.setAttribute(IExternalToolConstants.ATTR_BUILD_SCOPE, "${none}");
-				workingCopy.setAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, true);
-				String exe = "";
-				if (Platform.OS_WIN32.equals(Platform.getOS())) {
-					exe = ".exe";
-				}
-				workingCopy.setAttribute(IExternalToolConstants.ATTR_LOCATION, new File(System.getProperty("java.home"),"bin/java" + exe).getAbsolutePath());
-				workingCopy.setAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, "-cp " +
-						getClassPath(MockLanguageServer.class) + " " +
-						MockLanguageServer.class.getName());
-				mockServerLauch = workingCopy.doSave();
-				registry.registerAssociation(contentTypeManager.getContentType("org.eclipse.lsp4e.test.content-type2"),
-						LaunchConfigurationStreamProvider.findLaunchConfiguration(IExternalToolConstants.ID_PROGRAM_LAUNCH_CONFIGURATION_TYPE, mockServerLauch.getName()),
-						Collections.singleton(ILaunchManager.RUN_MODE));
-			}
-		} catch (CoreException e) {
-			LanguageServerPlugin.logError(e);
-		}
-
-	}
-
-	private String getClassPath(Class<?> clazz) {
-		ClassLoader loader = clazz.getClassLoader();
-		if (loader instanceof URLClassLoader) {
-			return Arrays.asList(((URLClassLoader)loader).getURLs()).stream().map(url -> url.getFile()).collect(Collectors.joining(System.getProperty("path.separator")));
-		} else {
-			LinkedList<Bundle> toProcess = new LinkedList<>();
-			Set<Bundle> processed = new HashSet<>();
-			Bundle current = FrameworkUtil.getBundle(clazz);
-			if (current != null) {
-				toProcess.add(current);
-			}
-			while (!toProcess.isEmpty()) {
-				current = toProcess.pop();
-				if (processed.contains(current)) {
-					continue;
-				}
-				for (BundleWire dep : current.adapt(BundleWiring.class).getRequiredWires(null)) {
-					toProcess.add(dep.getProvider().getBundle());
-				}
-				processed.add(current);
-			}
-			return processed.stream()
-					.filter(bundle -> bundle.getBundleId() != 0)
-					.map(bundle -> {
-						try {
-							return FileLocator.getBundleFile(bundle);
-						} catch (IOException e) {
-							return null;
-						}
-					}).flatMap(location -> {
-						if (location.isFile()) {
-							return Arrays.stream(new String[] { location.getAbsolutePath() });
-						} else {
-							return Arrays.stream(new String[] { location.getAbsolutePath(), new File(location, "bin").getAbsolutePath()} );
-						}
-					}).collect(Collectors.joining(System.getProperty("path.separator")));
-		}
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/LSDisplayHelper.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/LSDisplayHelper.java
deleted file mode 100644
index c9dd1dd..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/LSDisplayHelper.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Pivotal Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Martin Lippert (Pivotal Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import java.util.function.Supplier;
-
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-
-/**
- * display helper with supplier function, for easy use with lambda expression
- */
-public class LSDisplayHelper extends DisplayHelper {
-
-	private Supplier<Boolean> tester;
-
-	public LSDisplayHelper(Supplier<Boolean> tester) {
-		this.tester = tester;
-	}
-
-	@Override
-	protected boolean condition() {
-		return this.tester.get();
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/LanguageServerWrapperTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/LanguageServerWrapperTest.java
deleted file mode 100644
index a292ea5..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/LanguageServerWrapperTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 SAP SE and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Markus Ofterdinger (SAP SE) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Collection;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.lsp4e.LanguageServerWrapper;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.ui.IEditorPart;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class LanguageServerWrapperTest {
-
-	private IProject project1;
-	private IProject project2;
-
-	@Rule
-	public AllCleanRule clear = new AllCleanRule();
-
-	@Before
-	public void setUp() throws CoreException {
-		project1 = TestUtils.createProject("LanguageServerWrapperTestProject1" + System.currentTimeMillis());
-		project2 = TestUtils.createProject("LanguageServerWrapperTestProject2" + System.currentTimeMillis());
-	}
-
-	@Test
-	public void testConnect() throws Exception {
-		IFile testFile1 = TestUtils.createFile(project1, "shouldUseExtension.lsptWithMultiRoot", "");
-		IFile testFile2 = TestUtils.createFile(project2, "shouldUseExtension.lsptWithMultiRoot", "");
-
-		IEditorPart editor1 = TestUtils.openEditor(testFile1);
-		IEditorPart editor2 = TestUtils.openEditor(testFile2);
-
-		@NonNull Collection<LanguageServerWrapper> wrappers = LanguageServiceAccessor.getLSWrappers(testFile1, request -> true);
-
-		assertEquals(1, wrappers.size());
-
-		LanguageServerWrapper wrapper = wrappers.iterator().next();
-		for(int i = 0; i < 10 && !wrapper.isActive(); i++) {
-			Thread.sleep(100);
-		}
-		
-		assertTrue(wrapper.isConnectedTo(testFile1.getLocationURI()));
-		assertTrue(wrapper.isConnectedTo(testFile2.getLocationURI()));
-
-		TestUtils.closeEditor(editor1, false);
-		TestUtils.closeEditor(editor2, false);
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/LanguageServiceAccessorTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/LanguageServiceAccessorTest.java
deleted file mode 100644
index 2e779aa..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/LanguageServiceAccessorTest.java
+++ /dev/null
@@ -1,433 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2018 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Mickael Istria (Red Hat Inc.) - added test for Run config
- *  Martin Lippert (Pivotal Inc.) - added tests for multi-root folders, wrapper re-use, and more
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.lang.reflect.InvocationTargetException;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.internal.core.IInternalDebugCoreConstants;
-import org.eclipse.debug.internal.core.Preferences;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServerWrapper;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServerMultiRootFolders;
-import org.eclipse.lsp4j.HoverOptions;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class LanguageServiceAccessorTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject("LanguageServiceAccessorTest" + System.currentTimeMillis());
-	}
-
-	@Test
-	public void testGetLSPDocumentInfoForInvalidDocument() {
-		Collection<LSPDocumentInfo> infos = LanguageServiceAccessor.getLSPDocumentInfosFor(new Document(), null);
-		assertTrue(infos.isEmpty());
-	}
-
-	@Test
-	public void testGetLSPDocumentInfoForInvalidTextEditor() throws CoreException, InvocationTargetException {
-		IFile testFile = TestUtils.createFile(project, "not_associated_with_ls.abc", "");
-		ITextViewer textViewer = TestUtils.openTextViewer(testFile);
-		Collection<LSPDocumentInfo> infos = LanguageServiceAccessor.getLSPDocumentInfosFor(textViewer.getDocument(), capabilities -> Boolean.TRUE);
-		assertTrue(infos.isEmpty());
-	}
-	
-	@Test
-	public void testGetLanguageServerInvalidFile() throws Exception {
-		IFile testFile = TestUtils.createFile(project, "not_associated_with_ls.abc", "");
-		Collection<LanguageServer> servers = new ArrayList<>();
-		for (CompletableFuture<LanguageServer> future :LanguageServiceAccessor.getInitializedLanguageServers(testFile, capabilites -> Boolean.TRUE)){
-			servers.add(future.get(1, TimeUnit.SECONDS));
-		}
-		assertTrue(servers.isEmpty());
-	}
-
-	@Test
-	public void testLSAsExtension() throws Exception {
-		IFile testFile = TestUtils.createFile(project, "shouldUseExtension.lspt", "");
-		LanguageServer info = LanguageServiceAccessor
-				.getInitializedLanguageServers(testFile, capabilites -> Boolean.TRUE).iterator().next()
-				.get(1, TimeUnit.SECONDS);
-		assertNotNull(info);
-	}
-
-	@Test
-	public void testLSAsRunConfiguration() throws Exception {
-		IFile testFile = TestUtils.createFile(project, "shouldUseRunConfiguration.lspt2", "");
-		LanguageServer info = LanguageServiceAccessor
-				.getInitializedLanguageServers(testFile, capabilites -> Boolean.TRUE).iterator().next()
-				.get(1, TimeUnit.SECONDS);
-		assertNotNull(info);
-	}
-	
-	@Test
-	public void testLSAsExtensionForDifferentLanguageId() throws Exception {
-		IFile testFile = TestUtils.createFile(project, "shouldUseExtension.lspt-different", "");		@NonNull
-		Collection<LanguageServerWrapper> lsWrappers = LanguageServiceAccessor.getLSWrappers(testFile,
-				capabilites -> Boolean.TRUE);
-		
-		assertEquals(1, lsWrappers.size());
-		LanguageServerWrapper wrapper = lsWrappers.iterator().next();
-		assertNotNull(wrapper);
-		
-		IContentType contentType = Platform.getContentTypeManager().getContentType("org.eclipse.lsp4e.test.content-type-different");
-		assertEquals("differentLanguageId", wrapper.getLanguageId(new IContentType[] {contentType}));
-	}
-
-	@Test
-	public void testGetLSWrappersInitializationFailed() throws Exception {
-		IFile testFile = TestUtils.createFile(project, "fileWithFailedServer.lsptWithException", "");
-		Collection<LanguageServerWrapper> wrappers = LanguageServiceAccessor.getLSWrappers(testFile,
-				capabilites -> Boolean.TRUE);
-		assertEquals(1, wrappers.size());
-	}
-
-	@Test
-	public void testReuseSameLSforMultiContentType() throws Exception {
-		IFile testFile1 = TestUtils.createUniqueTestFile(project, "");
-		IFile testFile2 = TestUtils.createUniqueTestFileMultiLS(project, "");
-		// wrap in HashSet as a workaround of https://github.com/eclipse/lsp4j/issues/106
-		Collection<LanguageServer> file1LanguageServers = new ArrayList<>();
-		for (CompletableFuture<LanguageServer> future : LanguageServiceAccessor.getInitializedLanguageServers(testFile1,
-				capabilites -> Boolean.TRUE)) {
-			file1LanguageServers.add(future.get(1, TimeUnit.SECONDS));
-		}
-		assertEquals(1, file1LanguageServers.size());
-		LanguageServer file1LS = file1LanguageServers.iterator().next();
-		Collection<LanguageServer> file2LanguageServers = new ArrayList<>();
-		for (CompletableFuture<LanguageServer> future : LanguageServiceAccessor.getInitializedLanguageServers(testFile2,
-				capabilites -> Boolean.TRUE)) {
-			file2LanguageServers.add(future.get(1, TimeUnit.SECONDS));
-		}
-		assertEquals(2, file2LanguageServers.size());
-		assertTrue(file2LanguageServers.contains(file1LS)); // LS from file1 is reused
-		assertEquals("Not right amount of language servers bound to project", 2, LanguageServiceAccessor.getLanguageServers(project, c -> Boolean.TRUE).size());
-	}
-
-	@Test
-	public void testGetOnlyRunningLanguageServers() throws Exception {
-		Display display = Display.getCurrent();
-
-		IFile testFile1 = TestUtils.createUniqueTestFile(project, "");
-		IFile testFile2 = TestUtils.createUniqueTestFile(project, "lspt-different", "");
-
-		IEditorPart editor1 = TestUtils.openEditor(testFile1);
-		IEditorPart editor2 = TestUtils.openEditor(testFile2);
-
-		LanguageServiceAccessor.getInitializedLanguageServers(testFile1, capabilities -> Boolean.TRUE).iterator()
-				.next();
-		LanguageServiceAccessor.getInitializedLanguageServers(testFile2, capabilities -> Boolean.TRUE).iterator()
-				.next();
-
-		List<LanguageServer> runningServers = LanguageServiceAccessor.getActiveLanguageServers(capabilities -> Boolean.TRUE);
-		assertEquals(2, runningServers.size());
-
-		((AbstractTextEditor) editor1).close(false);
-		((AbstractTextEditor) editor2).close(false);
-		
-		new LSDisplayHelper(() -> LanguageServiceAccessor.getActiveLanguageServers(capabilities -> Boolean.TRUE).size() == 0)
-				.waitForCondition(display, 5000);
-		assertEquals(0, LanguageServiceAccessor.getActiveLanguageServers(capabilities -> Boolean.TRUE).size());
-
-		editor1 = TestUtils.openEditor(testFile1);
-		LanguageServiceAccessor.getInitializedLanguageServers(testFile1, capabilities -> Boolean.TRUE).iterator()
-				.next();
-
-		new LSDisplayHelper(() -> LanguageServiceAccessor.getActiveLanguageServers(capabilities -> Boolean.TRUE).size() == 1)
-				.waitForCondition(display, 5000);
-		assertEquals(1, LanguageServiceAccessor.getActiveLanguageServers(capabilities -> Boolean.TRUE).size());
-	}
-
-	@Test
-	public void testCreateNewLSAfterInitialProjectGotDeleted() throws Exception {
-		IFile testFile1 = TestUtils.createUniqueTestFile(project, "");
-
-		TestUtils.openEditor(testFile1);
-		LanguageServiceAccessor.getInitializedLanguageServers(testFile1, capabilities -> Boolean.TRUE).iterator()
-				.next();
-		new LSDisplayHelper(() -> MockLanguageServer.INSTANCE.isRunning()).waitForCondition(Display.getCurrent(), 5000,
-				300);
-
-		Collection<LanguageServerWrapper> wrappers = LanguageServiceAccessor.getLSWrappers(testFile1,
-				c -> Boolean.TRUE);
-		LanguageServerWrapper wrapper1 = wrappers.iterator().next();
-		assertTrue(wrapper1.isActive());
-
-		PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false);
-		new LSDisplayHelper(() -> !MockLanguageServer.INSTANCE.isRunning()).waitForCondition(Display.getCurrent(), 5000,
-				300);
-
-		project.delete(true, true, new NullProgressMonitor());
-
-		project = TestUtils.createProject("LanguageServiceAccessorTest2" + System.currentTimeMillis());
-		IFile testFile2 = TestUtils.createUniqueTestFile(project, "");
-
-		TestUtils.openEditor(testFile2);
-		LanguageServiceAccessor.getInitializedLanguageServers(testFile2, capabilities -> Boolean.TRUE).iterator()
-				.next();
-		new LSDisplayHelper(() -> MockLanguageServer.INSTANCE.isRunning()).waitForCondition(Display.getCurrent(), 5000,
-				300);
-
-		wrappers = LanguageServiceAccessor.getLSWrappers(testFile2, c -> Boolean.TRUE);
-		LanguageServerWrapper wrapper2 = wrappers.iterator().next();
-		assertTrue(wrapper2.isActive());
-
-		assertTrue(wrapper1 != wrapper2);
-	}
-
-	@Test
-	public void testReuseMultirootFolderLSAfterInitialProjectGotDeleted() throws Exception {
-		IFile testFile1 = TestUtils.createUniqueTestFile(project, "lsptWithMultiRoot", "");
-
-		TestUtils.openEditor(testFile1);
-		LanguageServiceAccessor.getInitializedLanguageServers(testFile1, capabilities -> Boolean.TRUE).iterator()
-				.next();
-		new LSDisplayHelper(() -> MockLanguageServerMultiRootFolders.INSTANCE.isRunning())
-				.waitForCondition(Display.getCurrent(), 5000, 300);
-
-		Collection<LanguageServerWrapper> wrappers = LanguageServiceAccessor.getLSWrappers(testFile1,
-				c -> Boolean.TRUE);
-		LanguageServerWrapper wrapper1 = wrappers.iterator().next();
-		assertTrue(wrapper1.isActive());
-
-		PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false);
-		new LSDisplayHelper(() -> !MockLanguageServerMultiRootFolders.INSTANCE.isRunning())
-				.waitForCondition(Display.getCurrent(), 5000, 300);
-
-		project.delete(true, true, new NullProgressMonitor());
-
-		project = TestUtils.createProject("LanguageServiceAccessorTest2" + System.currentTimeMillis());
-		IFile testFile2 = TestUtils.createUniqueTestFile(project, "lsptWithMultiRoot", "");
-
-		TestUtils.openEditor(testFile2);
-		LanguageServiceAccessor.getInitializedLanguageServers(testFile2, capabilities -> Boolean.TRUE).iterator()
-				.next();
-		new LSDisplayHelper(() -> MockLanguageServerMultiRootFolders.INSTANCE.isRunning())
-				.waitForCondition(Display.getCurrent(), 5000, 300);
-
-		wrappers = LanguageServiceAccessor.getLSWrappers(testFile2, c -> Boolean.TRUE);
-		LanguageServerWrapper wrapper2 = wrappers.iterator().next();
-		assertTrue(wrapper2.isActive());
-
-		assertTrue(wrapper1 == wrapper2);
-	}
-
-	@Test
-	public void testDontRestartUnrelatedLSForFileFromSameProject() throws Exception {
-		IFile testFile1 = TestUtils.createUniqueTestFile(project, "");
-		IFile testFile2 = TestUtils.createUniqueTestFile(project, "lspt-different", "");
-
-		Collection<LanguageServerWrapper> wrappers1 = LanguageServiceAccessor.getLSWrappers(testFile1,
-				c -> Boolean.TRUE);
-		assertEquals(1, wrappers1.size());
-		LanguageServerWrapper wrapper1 = wrappers1.iterator().next();
-		assertTrue(wrapper1.isActive());
-		
-		wrapper1.disconnect(testFile1.getLocationURI());
-		assertFalse(wrapper1.isActive());
-		
-		Collection<LanguageServerWrapper> wrappers2 = LanguageServiceAccessor.getLSWrappers(testFile2,
-				c -> Boolean.TRUE);
-		assertEquals(1, wrappers2.size());
-		LanguageServerWrapper wrapper2 = wrappers2.iterator().next();
-		assertTrue(wrapper2.isActive());
-		
-		// make sure the language server for testFile1 (which is unrelated to testFile2 is not started again)
-		assertFalse(wrapper1.isActive());
-
-		wrapper2.disconnect(testFile2.getLocationURI());
-	}
-
-	@Test
-	public void testLanguageServerHierarchy_moreSpecializedFirst() throws Exception {
-		// file with a content-type and a parent, each associated to one LS
-		IFile testFile = TestUtils.createUniqueTestFile(project, "lsptchild", "");
-		@NonNull Collection<LanguageServerWrapper> servers = LanguageServiceAccessor.getLSWrappers(testFile,
-				c -> Boolean.TRUE);
-		Iterator<LanguageServerWrapper> iterator = servers.iterator();
-		assertEquals("org.eclipse.lsp4e.test.server2", iterator.next().serverDefinition.id);
-		assertEquals("org.eclipse.lsp4e.test.server", iterator.next().serverDefinition.id);
-	}
-		
-	@Test
-	public void testLanguageServerHierarchy_parentContentTypeUsed() throws Exception {
-		// file with a content-type whose parent (only) is associated to one LS
-		IFile testFile = TestUtils.createUniqueTestFile(project, "lsptchildNoLS", "");
-		@NonNull Collection<LanguageServerWrapper> servers = LanguageServiceAccessor.getLSWrappers(testFile,
-				c -> Boolean.TRUE);
-		Iterator<LanguageServerWrapper> iterator = servers.iterator();
-		assertEquals("org.eclipse.lsp4e.test.server", iterator.next().serverDefinition.id);
-		assertFalse("Should only be a single LS", iterator.hasNext());
-	}
-
-	@Test
-	public void testLanguageServerEnablement() throws Exception {
-		LanguageServerPlugin.getDefault().getPreferenceStore().setValue(
-				"org.eclipse.lsp4e.test.server.disable" + "/" + "org.eclipse.lsp4e.test.content-type-disabled",
-				"false");
-		IFile disabledFile = TestUtils.createUniqueTestFile(project, "lspt-disabled", "");
-		IFile enabledFile = TestUtils.createUniqueTestFile(project, "lspt-enabled", "");
-
-		LanguageServiceAccessor.getLSWrappers(disabledFile, capabilities -> true).stream().forEach(
-				wrapper -> assertFalse(wrapper.serverDefinition.id.equals("org.eclipse.lsp4e.test.server.disable")));
-		assertTrue(LanguageServiceAccessor.getLSWrappers(enabledFile, capabilities -> true).stream()
-				.filter(wrapper -> wrapper.serverDefinition.id.equals("org.eclipse.lsp4e.test.server.disable"))
-				.findFirst().isPresent());
-
-		LanguageServerPlugin.getDefault().getPreferenceStore().setValue(
-				"org.eclipse.lsp4e.test.server.disable" + "/" + "org.eclipse.lsp4e.test.content-type-disabled",
-				"true");
-		assertTrue(LanguageServiceAccessor.getLSWrappers(disabledFile, capabilities -> true).stream()
-				.filter(wrapper -> wrapper.serverDefinition.id.equals("org.eclipse.lsp4e.test.server.disable"))
-				.findFirst().isPresent());
-		assertTrue(LanguageServiceAccessor.getLSWrappers(enabledFile, capabilities -> true).stream()
-				.filter(wrapper -> wrapper.serverDefinition.id.equals("org.eclipse.lsp4e.test.server.disable"))
-				.findFirst().isPresent());
-	}
-
-	@Test
-	public void testLanguageServerEnablementTester() throws Exception {
-		IFile file = TestUtils.createUniqueTestFile(project, "lspt-tester", "");
-		assertTrue(LanguageServiceAccessor.getLSWrappers(file, capabilities -> true).isEmpty());
-		MappingEnablementTester.enabled = true;
-		
-		Collection<LanguageServerWrapper> wrappers = LanguageServiceAccessor.getLSWrappers(file, capabilities -> true);
-		assertEquals(1, wrappers.size());
-		assertEquals("org.eclipse.lsp4e.test.server.disable", wrappers.iterator().next().serverDefinition.id);
-	}
-
-	@Test
-	public void testStatusHandlerLSAsRunConfiguration() throws Exception {
-		// test which checks that status handler preferences is kept after the launch is
-		// done.
-		IFile testFile = TestUtils.createFile(project, "shouldUseRunConfiguration.lspt2", "");
-
-		// Test with default status handler (see DebugPlugin#getStatusHandler)
-		boolean oldStatusHandler = getStatusHandler();
-		LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(testFile), null).get(1, TimeUnit.SECONDS);
-		assertEquals(getStatusHandler(), oldStatusHandler);
-
-		// Test with status handler set to false
-		setStatusHandler(false);
-		oldStatusHandler = getStatusHandler();
-		LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(testFile), null).get(1, TimeUnit.SECONDS);
-		assertEquals(getStatusHandler(), false);
-
-		// Test with status handler set to true
-		setStatusHandler(true);
-		oldStatusHandler = getStatusHandler();
-		LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(testFile), null).get(1, TimeUnit.SECONDS);
-		assertEquals(getStatusHandler(), true);
-	}
-
-	@Test
-	public void testLSforExternalThenLocalFile() throws Exception {
-		File local = File.createTempFile("testLSforExternalThenLocalFile", ".lspt");
-		try {
-			ITextEditor editor = (ITextEditor) IDE.openEditorOnFileStore(
-					PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(local.toURI()));
-			Assert.assertEquals(1, LanguageServiceAccessor.getLanguageServers(
-					TestUtils.getTextViewer(editor).getDocument(), this::hasHoverCapabilities).get().size());
-			PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false);
-			// opening another file should either reuse the LS or spawn another one, but not
-			// both
-			Assert.assertEquals(1,
-					LanguageServiceAccessor.getLanguageServers(
-							TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, "")).getDocument(),
-							this::hasHoverCapabilities).get().size());
-		} finally {
-			Files.deleteIfExists(local.toPath());
-		}
-	}
-
-	private boolean hasHoverCapabilities(ServerCapabilities capabilities) {
-		Either<Boolean, HoverOptions> hoverProvider = capabilities.getHoverProvider();
-		if(hoverProvider.isLeft()) {
-			return hoverProvider.getLeft();
-		} else {
-			return hoverProvider.getRight() != null;
-		}
-	}
-
-	@Test
-	public void testSingletonLS() throws Exception {
-		IFile testFile1 = TestUtils.createFile(project, "shouldUseSingletonLS.lsp-singletonLS", "");
-		IProject project2 = TestUtils.createProject("project2");
-		IFile testFile2 = TestUtils.createFile(project2, "shouldUseSingletonLS2.lsp-singletonLS", "");
-		@NonNull CompletableFuture<List<@NonNull LanguageServer>> languageServers = LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(testFile1), cap -> true);
-		@NonNull CompletableFuture<List<@NonNull LanguageServer>> languageServers2 = LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(testFile2), cap -> true);
-		Assert.assertEquals(1, languageServers.get().size());
-		Assert.assertEquals(languageServers.get(), languageServers2.get());
-	}
-
-	private static boolean getStatusHandler() {
-		return Platform.getPreferencesService().getBoolean(DebugPlugin.getUniqueIdentifier(),
-				IInternalDebugCoreConstants.PREF_ENABLE_STATUS_HANDLERS, true, null);
-	}
-
-	/**
-	 * Update the the status handler preferences
-	 *
-	 * @param enabled
-	 *            the status handler preferences
-	 */
-	private static void setStatusHandler(boolean enabled) {
-		Preferences.setBoolean(DebugPlugin.getUniqueIdentifier(),
-				IInternalDebugCoreConstants.PREF_ENABLE_STATUS_HANDLERS, enabled, null);
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MappingEnablementTester.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MappingEnablementTester.java
deleted file mode 100644
index d934cb3..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MappingEnablementTester.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Rastislav Wagner (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import org.eclipse.core.expressions.PropertyTester;
-
-public class MappingEnablementTester extends PropertyTester {
-
-	public static boolean enabled = false;
-
-	@Override
-	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
-		return enabled;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MockConnectionProvider.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MockConnectionProvider.java
deleted file mode 100644
index 41005f3..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MockConnectionProvider.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import java.io.ByteArrayInputStream;
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.channels.Channels;
-import java.nio.channels.Pipe;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.Future;
-
-import org.eclipse.lsp4e.server.StreamConnectionProvider;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.jsonrpc.Launcher;
-import org.eclipse.lsp4j.launch.LSPLauncher;
-import org.eclipse.lsp4j.services.LanguageClient;
-
-public class MockConnectionProvider implements StreamConnectionProvider {
-
-	private InputStream clientInputStream  ;
-	private OutputStream clientOutputStream;
-	private InputStream errorStream;
-	private Future<Void> listener;
-	private Collection<Closeable> streams = new ArrayList<>(4);
-	
-	@Override
-	public void start() throws IOException {
-		Pipe serverOutputToClientInput = Pipe.open();
-		Pipe clientOutputToServerInput = Pipe.open();
-		errorStream = new ByteArrayInputStream("Error output on console".getBytes(StandardCharsets.UTF_8));
-		
-		InputStream serverInputStream = Channels.newInputStream(clientOutputToServerInput.source());
-		OutputStream serverOutputStream = Channels.newOutputStream(serverOutputToClientInput.sink());
-		Launcher<LanguageClient> launcher = LSPLauncher.createServerLauncher(MockLanguageServer.INSTANCE, serverInputStream,
-				serverOutputStream);
-		clientInputStream = Channels.newInputStream(serverOutputToClientInput.source());
-		clientOutputStream = Channels.newOutputStream(clientOutputToServerInput.sink());
-		listener = launcher.startListening();
-		MockLanguageServer.INSTANCE.addRemoteProxy(launcher.getRemoteProxy());
-		streams.add(clientInputStream);
-		streams.add(clientOutputStream);
-		streams.add(serverInputStream);
-		streams.add(serverOutputStream);
-		streams.add(errorStream);
-	}
-
-	@Override
-	public InputStream getInputStream() {
-		return clientInputStream;
-	}
-
-	@Override
-	public OutputStream getOutputStream() {
-		return clientOutputStream;
-	}
-
-	@Override
-	public InputStream getErrorStream() {
-		return errorStream;
-	}
-
-	@Override
-	public void stop() {
-		streams.forEach(t -> {
-			try {
-				t.close();
-			} catch (IOException e) {
-				e.printStackTrace();
-			}
-		});
-		streams.clear();
-		listener.cancel(true);
-		listener = null;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MockConnectionProviderMultiRootFolders.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MockConnectionProviderMultiRootFolders.java
deleted file mode 100644
index e875695..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MockConnectionProviderMultiRootFolders.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2018 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Martin Lippert (Pivotal Inc.) - Bug 531030 - fixed crash when initial project gets deleted in multi-root workspaces
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import java.io.ByteArrayInputStream;
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.channels.Channels;
-import java.nio.channels.Pipe;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.Future;
-
-import org.eclipse.lsp4e.server.StreamConnectionProvider;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServerMultiRootFolders;
-import org.eclipse.lsp4j.jsonrpc.Launcher;
-import org.eclipse.lsp4j.launch.LSPLauncher;
-import org.eclipse.lsp4j.services.LanguageClient;
-
-public class MockConnectionProviderMultiRootFolders implements StreamConnectionProvider {
-
-	private InputStream clientInputStream  ;
-	private OutputStream clientOutputStream;
-	private InputStream errorStream;
-	private Future<Void> listener;
-	private Collection<Closeable> streams = new ArrayList<>(4);
-	
-	@Override
-	public void start() throws IOException {
-		Pipe serverOutputToClientInput = Pipe.open();
-		Pipe clientOutputToServerInput = Pipe.open();
-		errorStream = new ByteArrayInputStream("Error output on console".getBytes(StandardCharsets.UTF_8));
-		
-		InputStream serverInputStream = Channels.newInputStream(clientOutputToServerInput.source());
-		OutputStream serverOutputStream = Channels.newOutputStream(serverOutputToClientInput.sink());
-		Launcher<LanguageClient> launcher = LSPLauncher.createServerLauncher(MockLanguageServerMultiRootFolders.INSTANCE, serverInputStream,
-				serverOutputStream);
-		clientInputStream = Channels.newInputStream(serverOutputToClientInput.source());
-		clientOutputStream = Channels.newOutputStream(clientOutputToServerInput.sink());
-		listener = launcher.startListening();
-		MockLanguageServer.INSTANCE.addRemoteProxy(launcher.getRemoteProxy());
-		streams.add(clientInputStream);
-		streams.add(clientOutputStream);
-		streams.add(serverInputStream);
-		streams.add(serverOutputStream);
-		streams.add(errorStream);
-	}
-
-	@Override
-	public InputStream getInputStream() {
-		return clientInputStream;
-	}
-
-	@Override
-	public OutputStream getOutputStream() {
-		return clientOutputStream;
-	}
-
-	@Override
-	public InputStream getErrorStream() {
-		return errorStream;
-	}
-
-	@Override
-	public void stop() {
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MockConnectionProviderWithException.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MockConnectionProviderWithException.java
deleted file mode 100644
index a0f9c49..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/MockConnectionProviderWithException.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Lucia Jelinkova (Red Hat Inc.)  - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-public class MockConnectionProviderWithException extends MockConnectionProvider {
-
-	public MockConnectionProviderWithException() {
-		throw new IllegalStateException("Testing error from constructor");
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/NoErrorLoggedRule.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/NoErrorLoggedRule.java
deleted file mode 100644
index 19a3d42..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/NoErrorLoggedRule.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.core.runtime.ILog;
-import org.eclipse.core.runtime.ILogListener;
-import org.eclipse.core.runtime.IStatus;
-import org.junit.Assert;
-import org.junit.rules.TestWatcher;
-import org.junit.runner.Description;
-
-public class NoErrorLoggedRule extends TestWatcher {
-
-	private ILog log;
-	private ILogListener listener;
-	private List<IStatus> loggedErrors;
-
-	public NoErrorLoggedRule(ILog log) {
-		this.log = log;
-		listener = (status, message) -> {
-			if (status.getSeverity() == IStatus.ERROR) {
-				loggedErrors.add(status);
-			}
-		};
-	}
-	
-	@Override
-	protected void starting(Description description) {
-		super.starting(description);
-		this.loggedErrors = new ArrayList<>();
-		log.addLogListener(listener);
-	}
-
-	@Override
-	protected void finished(Description description) {
-		log.removeLogListener(listener);
-		Assert.assertEquals("Some errors were logged", Collections.emptyList(), loggedErrors);
-		super.finished(description);
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/OtherFileStore.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/OtherFileStore.java
deleted file mode 100644
index 5ebfb8a..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/OtherFileStore.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2021 Avaloq.

- * This program and the accompanying materials are made

- * available under the terms of the Eclipse Public License 2.0

- * which is available at https://www.eclipse.org/legal/epl-2.0/

- *

- * SPDX-License-Identifier: EPL-2.0

- *

- * Contributors:

- *  Rubén Porras Campo (Avaloq) - Bug 576425 - Support Remote Files

- *******************************************************************************/

-package org.eclipse.lsp4e.test;

-

-import java.io.InputStream;

-import java.net.URI;

-

-import org.eclipse.core.filesystem.EFS;

-import org.eclipse.core.filesystem.IFileInfo;

-import org.eclipse.core.filesystem.IFileStore;

-import org.eclipse.core.filesystem.provider.FileInfo;

-import org.eclipse.core.filesystem.provider.FileStore;

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.Path;

-

-/**

- * A file store to be used together with the {@link OtherFileSystem}

- *

- */

-public class OtherFileStore  extends FileStore {

-

-	private final URI location;

-

-	public OtherFileStore(URI location) {

-		this.location = location;

-	}

-	

-	@Override

-	public String[] childNames(int options, IProgressMonitor monitor) throws CoreException {

-		return FileStore.EMPTY_STRING_ARRAY;

-	}

-

-	@Override

-	public IFileInfo fetchInfo(int options, IProgressMonitor monitor) throws CoreException {

-		FileInfo result = new FileInfo();

-		result.setDirectory(false);

-		result.setExists(true);

-		result.setLastModified(1);//last modified of zero indicates non-existence

-		return result;

-	}

-

-	@Override

-	public IFileStore getChild(String name) {

-		return EFS.getNullFileSystem().getStore(new Path(name).makeAbsolute());

-	}

-

-	@Override

-	public void delete(int options, IProgressMonitor monitor) {

-		//nothing to do - virtual resources don't exist in any physical file system

-	}

-

-	@Override

-	public String getName() {

-		return "other";

-	}

-

-	@Override

-	public IFileStore getParent() {

-		return null;

-	}

-

-	@Override

-	public InputStream openInputStream(int options, IProgressMonitor monitor) throws CoreException {

-		return null;

-	}

-

-	@Override

-	public URI toURI() {

-		return location;

-	}

-

-}

diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/OtherFileSystem.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/OtherFileSystem.java
deleted file mode 100644
index 5a44754..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/OtherFileSystem.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2021 Avaloq.

- * This program and the accompanying materials are made

- * available under the terms of the Eclipse Public License 2.0

- * which is available at https://www.eclipse.org/legal/epl-2.0/

- *

- * SPDX-License-Identifier: EPL-2.0

- *

- * Contributors:

- *  Rubén Porras Campo (Avaloq) - Bug 576425 - Support Remote Files

- *******************************************************************************/

-package org.eclipse.lsp4e.test;

-

-import java.net.URI;

-

-import org.eclipse.core.filesystem.IFileStore;

-import org.eclipse.core.filesystem.provider.FileSystem;

-

-/**

- * A file system to test custom filesystems

- *

- */

-public class OtherFileSystem extends FileSystem {

-

-	@Override

-	public IFileStore getStore(URI uri) {

-		return new OtherFileStore(uri);

-	}

-

-}

diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/RunningLanguageServerTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/RunningLanguageServerTest.java
deleted file mode 100644
index efe8965..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/RunningLanguageServerTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2018 Pivotal Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Martin Lippert (Pivotal Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.lsp4e.ContentTypeToLanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-
-public class RunningLanguageServerTest {
-
-	private IProject project;
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-
-	@Before
-	public void setUp() throws CoreException {
-		project =  TestUtils.createProject("StartStopServerTest"+System.currentTimeMillis());
-	}
-
-	/**
-	 * checks if language servers get started and shutdown correctly if opening and
-	 * closing the same file/editor multiple times
-	 */
-	@Test
-	public void testOpenCloseLanguageServer() throws Exception {
-		IFile testFile = TestUtils.createUniqueTestFile(project, "");
-		Display display = Display.getCurrent();
-
-		// open and close the editor several times
-		for(int i = 0; i < 10; i++) {
-			IEditorPart editor = TestUtils.openEditor(testFile);
-			LanguageServiceAccessor.getInitializedLanguageServers(testFile, capabilities -> Boolean.TRUE).iterator()
-					.next();
-			assertTrue("language server is started for iteration #" + i,
-					new LSDisplayHelper(() -> MockLanguageServer.INSTANCE.isRunning()).waitForCondition(display, 5000));
-
-			((AbstractTextEditor)editor).close(false);
-			assertTrue("language server is closed for iteration #" + i,
-					new LSDisplayHelper(() -> !MockLanguageServer.INSTANCE.isRunning()).waitForCondition(display, 5000));
-		}
-	}
-
-	@Test
-	public void testDisabledLanguageServer() throws Exception {
-		IFile testFile = TestUtils.createUniqueTestFile(project, "lspt-disabled", "");
-		Display display = Display.getCurrent();
-
-		ContentTypeToLanguageServerDefinition lsDefinition = TestUtils.getDisabledLS();
-		lsDefinition.setUserEnabled(false);
-		LanguageServiceAccessor.disableLanguageServerContentType(lsDefinition);
-
-		TestUtils.openEditor(testFile);
-		List<CompletableFuture<LanguageServer>> initializedLanguageServers = LanguageServiceAccessor
-				.getInitializedLanguageServers(testFile, capabilities -> Boolean.TRUE);
-		assertNotNull(initializedLanguageServers);
-		assertEquals("language server should not be started because it is disabled", 0,
-				initializedLanguageServers.size());
-
-		lsDefinition.setUserEnabled(true);
-		LanguageServiceAccessor.enableLanguageServerContentType(lsDefinition, TestUtils.getEditors());
-
-		assertTrue("language server should be started",
-				new LSDisplayHelper(() -> MockLanguageServer.INSTANCE.isRunning()).waitForCondition(display, 5000));
-	}
-
-	@Test
-	public void testBug535887DisabledWithMultipleOpenFiles() throws CoreException, InvocationTargetException {
-		ContentTypeToLanguageServerDefinition lsDefinition = TestUtils.getDisabledLS();
-		lsDefinition.setUserEnabled(true);
-		LanguageServiceAccessor.enableLanguageServerContentType(lsDefinition, TestUtils.getEditors());
-
-		IFile testFile1 = TestUtils.createUniqueTestFile(project, "lspt-disabled", "");
-		IFile testFile2 = TestUtils.createUniqueTestFile(project, "lspt-disabled", "");
-		TestUtils.openEditor(testFile1);
-		TestUtils.openEditor(testFile2);
-		lsDefinition.setUserEnabled(false);
-		LanguageServiceAccessor.disableLanguageServerContentType(lsDefinition);
-	}
-
-	@Test
-	public void testDelayedStopDoesntCauseFreeze() throws Exception {
-		IFile testFile = TestUtils.createUniqueTestFile(project, "");
-		IEditorPart editor = TestUtils.openEditor(testFile);
-		IWorkbenchPage page = editor.getSite().getPage();
-		MockLanguageServer.INSTANCE.setTimeToProceedQueries(10000);
-		long before = System.currentTimeMillis();
-		page.closeEditor(editor, false);
-		assertTrue(System.currentTimeMillis() - before < 1000);
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/TestUtils.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/TestUtils.java
deleted file mode 100644
index 64f37da..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/TestUtils.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.Set;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.ContentTypeToLanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServersRegistry;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.FileEditorInput;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-import com.google.common.io.MoreFiles;
-import com.google.common.io.RecursiveDeleteOption;
-
-public class TestUtils {
-
-	private TestUtils() {
-		// this class shouldn't be instantiated
-	}
-
-	public static ITextViewer openTextViewer(IFile file) throws InvocationTargetException, PartInitException {
-		IEditorPart editor = openEditor(file);
-		return getTextViewer(editor);
-	}
-
-	public static ITextViewer getTextViewer(IEditorPart part) throws InvocationTargetException {
-		try {			
-			if (part instanceof ITextEditor) {
-				ITextEditor textEditor = (ITextEditor) part;
-
-				Method getSourceViewerMethod = AbstractTextEditor.class.getDeclaredMethod("getSourceViewer"); //$NON-NLS-1$
-				getSourceViewerMethod.setAccessible(true);
-				return (ITextViewer) getSourceViewerMethod.invoke(textEditor);
-			} else {
-				fail("Unable to open editor");
-				return null;
-			}
-		} catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException
-				| InvocationTargetException e) {
-			throw new InvocationTargetException(e);
-		}
-	}
-	
-	public static IEditorPart openEditor(IFile file) throws PartInitException {
-		IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-		IWorkbenchPage page = workbenchWindow.getActivePage();
-		IEditorInput input = new FileEditorInput(file);
-
-		IEditorPart part = page.openEditor(input, "org.eclipse.ui.genericeditor.GenericEditor", false);
-		part.setFocus();
-		return part;
-	}
-
-	public static boolean closeEditor(IEditorPart editor, boolean save) {
-		IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-		IWorkbenchPage page = workbenchWindow.getActivePage();
-		return page.closeEditor(editor, save);
-	}
-
-	public static IProject createProject(String projectName) throws CoreException {
-		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
-		if (project.exists()) {
-			return project;
-		}
-		project.create(null);
-		project.open(null);
-		// configure nature
-		return project;
-	}
-
-	public static IFile createUniqueTestFile(IProject p, String content) throws CoreException {
-		return createUniqueTestFile(p, "lspt", content);
-	}
-
-	public static IFile createUniqueTestFileMultiLS(IProject p, String content) throws CoreException {
-		return createUniqueTestFile(p, "lsptmultils", content);
-	}
-
-	public static IFile createUniqueTestFileOfUnknownType(IProject p, String content) throws CoreException {
-		return createUniqueTestFile(p, "lsptunknown", content);
-	}
-
-	public static synchronized IFile createUniqueTestFile(IProject p, String extension, String content)
-			throws CoreException {
-		long fileNameSalt = System.currentTimeMillis();
-		while (p.getFile("test" + fileNameSalt + '.' + extension).exists()) {
-			fileNameSalt++;
-		}
-		return createFile(p, "test" + fileNameSalt + '.' + extension, content);
-	}
-
-	public static IFile createFile(IProject p, String name, String content) throws CoreException {
-		IFile testFile = p.getFile(name);
-		testFile.create(new ByteArrayInputStream(content.getBytes()), true, null);
-		return testFile;
-	}
-
-	public static void delete(IProject project) throws CoreException {
-		if (project != null) {
-			project.delete(true, new NullProgressMonitor());
-		}
-	}
-
-	public static void delete(IProject... projects) throws CoreException {
-		if (projects != null && projects.length > 0) {
-			for(IProject project : projects) {
-				delete(project);
-			}
-		}
-	}
-
-	public static void delete(Path path) throws IOException {
-		if (path != null && Files.exists(path)) {
-			MoreFiles.deleteRecursively(path, RecursiveDeleteOption.ALLOW_INSECURE);
-		}
-	}
-
-	public static void delete(Path... paths) throws IOException {
-		if (paths != null && paths.length > 0) {
-			for(Path path : paths) {
-				delete(path);
-			}
-		}
-	}
-
-	public static ContentTypeToLanguageServerDefinition getDisabledLS() {
-		return LanguageServersRegistry.getInstance().getContentTypeToLSPExtensions().stream()
-				.filter(definition -> "org.eclipse.lsp4e.test.server.disable".equals(definition.getValue().id)
-						&& "org.eclipse.lsp4e.test.content-type-disabled".equals(definition.getKey().toString()))
-				.findFirst().get();
-	}
-	
-	public static Shell findNewShell(Set<Shell> beforeShells, Display display) {
-		Shell[] afterShells = Arrays.stream(display.getShells())
-				.filter(Shell::isVisible)
-				.filter(shell -> !beforeShells.contains(shell))
-				.toArray(Shell[]::new);
-		assertEquals("No new shell found", 1, afterShells.length);
-		return afterShells[0];
-	}
-	
-	public static Table findCompletionSelectionControl(Widget control) {
-		if (control instanceof Table) {
-			return (Table)control;
-		} else if (control instanceof Composite) {
-			for (Widget child : ((Composite)control).getChildren()) {
-				Table res = findCompletionSelectionControl(child);
-				if (res != null) {
-					return res;
-				}
-			}
-		}
-		return null;
-	}
-
-	public static IEditorReference[] getEditors() {
-		IWorkbenchWindow wWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-		if (wWindow != null) {
-			IWorkbenchPage wPage = wWindow.getActivePage();
-			if (wPage != null) {
-				return wPage.getEditorReferences();
-			}
-		}
-		return null;
-	}
-
-	public void waitForLanguageServerNotRunning(MockLanguageServer server) {
-		assertTrue(new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return !server.isRunning();
-			}
-		}.waitForCondition(PlatformUI.getWorkbench().getDisplay(), 1000));
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/UriToResourceAdapterFactory.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/UriToResourceAdapterFactory.java
deleted file mode 100644
index dee2c55..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/UriToResourceAdapterFactory.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2021 Avaloq.

- * This program and the accompanying materials are made

- * available under the terms of the Eclipse Public License 2.0

- * which is available at https://www.eclipse.org/legal/epl-2.0/

- *

- * SPDX-License-Identifier: EPL-2.0

- *

- * Contributors:

- *  Rubén Porras Campo (Avaloq) - Bug 576425 - Support Remote Files

- *******************************************************************************/

-package org.eclipse.lsp4e.test;

-

-import java.net.URI;

-

-import org.eclipse.core.resources.IFile;

-import org.eclipse.core.resources.IProject;

-import org.eclipse.core.resources.IResource;

-import org.eclipse.core.resources.ResourcesPlugin;

-import org.eclipse.core.runtime.IAdapterFactory;

-import org.eclipse.lsp4e.test.edit.LSPEclipseUtilsTest;

-

-/**

- * A custom URI to Resource Mapper to test mapping of remote URIs by stripping the segment "/a/",

- * it is tightly coupled with {@link LSPEclipseUtilsTest#testCustomURIToResourceMapping()}

- * and {@link LSPEclipseUtilsTest#testCustomResourceToURIMapping()}

- */

-public class UriToResourceAdapterFactory implements IAdapterFactory{

-

-

-	private static final String A_SEGMENT = "/a/";

-

-	@SuppressWarnings("unchecked")

-	  @Override

-	  public <T> T getAdapter(final Object adaptableObject, final Class<T> adapterType) {

-	    if (adaptableObject instanceof String) {

-	        URI uri = URI.create(((String) adaptableObject).replace(A_SEGMENT, ""));

-	        String path = uri.getPath();

-	        IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(LSPEclipseUtilsTest.class.getSimpleName() + uri.getScheme());

-	        if (path != null) {

-	          if (adapterType == IResource.class) {

-	            return (T) project.findMember(path);

-	          } else if (adapterType == IFile.class) {

-	            return (T) project.getFile(path);

-	          }

-	        }

-	    } else if (adaptableObject instanceof IFile) {

-	    	URI uri = ((IResource)adaptableObject).getLocationURI();

-	        IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(LSPEclipseUtilsTest.class.getSimpleName() + uri.getScheme());

-	        if (project != null && uri.getScheme().equals("other")) {

-	        	return (T) URI.create(uri.toString().replaceAll("//", "/" + A_SEGMENT));

-	        }

-	    }

-	    return null;

-	  }

-

-	  @Override

-	  public Class<?>[] getAdapterList() {

-	    return new Class<?>[] {IResource.class, IFile.class, URI.class};

-	  }

-}

diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/codeactions/CodeActionTests.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/codeactions/CodeActionTests.java
deleted file mode 100644
index 35db127..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/codeactions/CodeActionTests.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.codeactions;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.operations.diagnostics.LSPDiagnosticsToMarkers;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.NoErrorLoggedRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.CodeAction;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.Diagnostic;
-import org.eclipse.lsp4j.DiagnosticSeverity;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.WorkspaceEdit;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-import org.eclipse.ui.texteditor.ITextEditorActionConstants;
-import org.eclipse.ui.texteditor.TextOperationAction;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class CodeActionTests {
-
-	@Rule public NoErrorLoggedRule rule = new NoErrorLoggedRule(LanguageServerPlugin.getDefault().getLog());
-	@Rule public AllCleanRule clear = new AllCleanRule();
-
-	@Test
-	public void testCodeActionsClientCommandForTextEdit() throws CoreException {
-		IProject p = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-		IFile f = TestUtils.createUniqueTestFile(p, "error");
-		MockLanguageServer.INSTANCE.setCodeActions(Collections.singletonList(Either.forLeft(new Command(
-				"fixme",
-				"edit",
-				Collections.singletonList(
-					new TextEdit(
-							new Range(new Position(0, 0), new Position(0, 5)),
-							"fixed"))
-				)
-			)
-		));
-		MockLanguageServer.INSTANCE.setDiagnostics(Collections.singletonList(
-				new Diagnostic(new Range(new Position(0, 0), new Position(0, 5)), "error", DiagnosticSeverity.Error, null)));
-		AbstractTextEditor editor = (AbstractTextEditor)TestUtils.openEditor(f);
-		try {
-			IMarker m = assertDiagnostics(f, "error", "fixme");
-			assertResolution(editor, m, "fixed");
-		} finally {
-			editor.close(false);
-			p.delete(true, new NullProgressMonitor());
-		}
-	}
-
-	@Test
-	public void testCodeActionsClientCommandForWorkspaceEdit() throws CoreException {
-		IProject p = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-		IFile f = TestUtils.createUniqueTestFile(p, "error");
-
-		TextEdit tEdit = new TextEdit(new Range(new Position(0, 0), new Position(0, 5)), "fixed");
-		WorkspaceEdit wEdit = new WorkspaceEdit(Collections.singletonMap(f.getLocationURI().toString(), Collections.singletonList(tEdit)));
-		MockLanguageServer.INSTANCE.setCodeActions(Collections
-				.singletonList(Either.forLeft(new Command(
-				"fixme",
-				"edit",
-				Collections.singletonList(wEdit))
-			)
-		));
-		MockLanguageServer.INSTANCE.setDiagnostics(Collections.singletonList(
-				new Diagnostic(new Range(new Position(0, 0), new Position(0, 5)), "error", DiagnosticSeverity.Error, null)));
-		AbstractTextEditor editor = (AbstractTextEditor)TestUtils.openEditor(f);
-
-		try {
-			IMarker m = assertDiagnostics(f, "error", "fixme");
-			assertResolution(editor, m, "fixed");
-		} finally {
-			editor.close(false);
-			p.delete(true, new NullProgressMonitor());
-		}
-	}
-
-	private void checkCompletionContent(final Table completionProposalList) {
-		// should be instantaneous, but happens to go asynchronous on CI so let's allow a wait
-		  assertTrue("No item found", new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return completionProposalList.getItemCount() == 1;
-			}
-		}.waitForCondition(completionProposalList.getDisplay(), 100));
-
-		assertEquals(1, completionProposalList.getItemCount());
-		final TableItem quickAssistItem = completionProposalList.getItem(0);
-		assertTrue("Missing quick assist proposal", quickAssistItem.getText().contains("fixme")); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	@Test
-	public void testCodeActionsQuickAssist() throws CoreException {
-		MockLanguageServer.reset();
-		IProject p = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-		IFile f = TestUtils.createUniqueTestFile(p, "error");
-
-		TextEdit tEdit = new TextEdit(new Range(new Position(0, 0), new Position(0, 5)), "fixed");
-		WorkspaceEdit wEdit = new WorkspaceEdit(Collections.singletonMap(f.getLocationURI().toString(), Collections.singletonList(tEdit)));
-		MockLanguageServer.INSTANCE.setCodeActions(Collections
-				.singletonList(Either.forLeft(new Command(
-				"fixme",
-				"edit",
-				Collections.singletonList(wEdit))
-			)
-		));
-		AbstractTextEditor editor = (AbstractTextEditor)TestUtils.openEditor(f);
-		final Set<Shell> beforeShells = Arrays.stream(editor.getSite().getShell().getDisplay().getShells()).filter(Shell::isVisible).collect(Collectors.toSet());
-		editor.selectAndReveal(3, 0);
-		TextOperationAction action = (TextOperationAction) editor.getAction(ITextEditorActionConstants.QUICK_ASSIST);
-		action.update();
-		action.run();
-		Shell completionShell= TestUtils.findNewShell(beforeShells, editor.getSite().getShell().getDisplay());
-		final Table completionProposalList = TestUtils.findCompletionSelectionControl(completionShell);
-		checkCompletionContent(completionProposalList);
-	}
-
-	@Test
-	public void testCodeActionLiteralWorkspaceEdit() throws CoreException {
-		IProject p = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-		IFile f = TestUtils.createUniqueTestFile(p, "error");
-
-		TextEdit tEdit = new TextEdit(new Range(new Position(0, 0), new Position(0, 5)), "fixed");
-		WorkspaceEdit wEdit = new WorkspaceEdit(Collections.singletonMap(f.getLocationURI().toString(), Collections.singletonList(tEdit)));
-		CodeAction codeAction = new CodeAction("fixme");
-		codeAction.setEdit(wEdit);
-		MockLanguageServer.INSTANCE.setCodeActions(Collections.singletonList(Either.forRight(codeAction)));
-		MockLanguageServer.INSTANCE.setDiagnostics(Collections.singletonList(
-				new Diagnostic(new Range(new Position(0, 0), new Position(0, 5)), "error", DiagnosticSeverity.Error, null)));
-		AbstractTextEditor editor = (AbstractTextEditor)TestUtils.openEditor(f);
-		try {
-			IMarker m = assertDiagnostics(f, "error", "fixme");
-			assertResolution(editor, m, "fixed");
-		} finally {
-			editor.close(false);
-			p.delete(true, new NullProgressMonitor());
-		}
-	}
-
-	@Test
-	public void testCodeActionLiteralWithClientCommand() throws CoreException {
-		IProject p = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-		IFile f = TestUtils.createUniqueTestFile(p, "error");
-
-		TextEdit tEdit = new TextEdit(new Range(new Position(0, 0), new Position(0, 5)), "fixed");
-		WorkspaceEdit wEdit = new WorkspaceEdit(Collections.singletonMap(f.getLocationURI().toString(), Collections.singletonList(tEdit)));
-		CodeAction codeAction = new CodeAction("fixme");
-		codeAction.setCommand(new Command("editCommand", "mockEditCommand", Collections.singletonList(wEdit)));
-		MockLanguageServer.INSTANCE.setCodeActions(Collections.singletonList(Either.forRight(codeAction)));
-		MockLanguageServer.INSTANCE.setDiagnostics(Collections.singletonList(
-				new Diagnostic(new Range(new Position(0, 0), new Position(0, 5)), "error", DiagnosticSeverity.Error, null)));
-		AbstractTextEditor editor = (AbstractTextEditor)TestUtils.openEditor(f);
-		try {
-			IMarker m = assertDiagnostics(f, "error", "fixme");
-			assertResolution(editor, m, "fixed");
-		} finally {
-			editor.close(false);
-			p.delete(true, new NullProgressMonitor());
-		}
-	}
-
-	public static IMarker assertDiagnostics(IFile f, String markerMessage, String resolutionLabel) throws CoreException {
-		new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				try {
-					IMarker [] markers = f.findMarkers(LSPDiagnosticsToMarkers.LS_DIAGNOSTIC_MARKER_TYPE, true, IResource.DEPTH_ZERO);
-					// seems we need the second condition as the attributes aren't loaded immediately
-					return markers.length > 0 && markers[0].getAttribute(IMarker.MESSAGE) != null;
-				} catch (CoreException e) {
-					return false;
-				}
-			}
-		}.waitForCondition(Display.getCurrent(), 2000);
-		final IMarker m = f.findMarkers(LSPDiagnosticsToMarkers.LS_DIAGNOSTIC_MARKER_TYPE, true, IResource.DEPTH_ZERO)[0];
-		Assert.assertEquals(markerMessage, m.getAttribute(IMarker.MESSAGE));
-		new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return
-					IDE.getMarkerHelpRegistry().hasResolutions(m) &&
-					// need this 2nd condition because async introduces a dummy resolution that's not the one we want
-					IDE.getMarkerHelpRegistry().getResolutions(m)[0].getLabel().equals(resolutionLabel);
-			}
-		}.waitForCondition(Display.getCurrent(), 2000);
-		return m;
-	}
-
-	public static void assertResolution(AbstractTextEditor editor, IMarker m, String newText) {
-		IDE.getMarkerHelpRegistry().getResolutions(m)[0].run(m);
-		new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return newText.equals(editor.getDocumentProvider().getDocument(editor.getEditorInput()).get());
-			}
-		}.waitForCondition(Display.getCurrent(), 1000);
-		Assert.assertEquals(newText, editor.getDocumentProvider().getDocument(editor.getEditorInput()).get());
-		new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return newText.equals(((StyledText) editor.getAdapter(Control.class)).getText());
-			}
-		}.waitForCondition(Display.getCurrent(), 1000);
-		Assert.assertEquals(newText, ((StyledText) editor.getAdapter(Control.class)).getText());
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/color/ColorTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/color/ColorTest.java
deleted file mode 100644
index 440dc3b..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/color/ColorTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.color;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.nio.file.Files;
-import java.util.Collections;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.Color;
-import org.eclipse.lsp4j.ColorInformation;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class ColorTest {
-
-	@Rule public AllCleanRule cleanRule = new AllCleanRule();
-	private RGB color;
-
-	@Before
-	public void setUp() {
-		color = new RGB(56, 78, 90); // a color that's not likely used anywhere else
-		MockLanguageServer.INSTANCE.getTextDocumentService().setDocumentColors(Collections.singletonList(new ColorInformation(new Range(new Position(0, 0), new Position(0, 1)), new Color(color.red / 255., color.green / 255., color.blue / 255., 0))));
-	}
-	
-	@Test
-	public void testColorProvider() throws Exception {
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(TestUtils.createProject("testColorProvider"), "a"));
-		StyledText widget = viewer.getTextWidget();
-		Assert.assertTrue(new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return containsColor(widget, color);
-			}
-		}.waitForCondition(widget.getDisplay(), 3000));
-	}
-
-	@Test
-	public void testColorProviderExternalFile() throws Exception {
-		File file = File.createTempFile("testColorProviderExternalFile", ".lspt");
-		try {
-			try (
-				FileOutputStream out = new FileOutputStream(file);
-			) {
-				out.write('a');
-			}
-			ITextViewer viewer = TestUtils.getTextViewer(IDE.openEditorOnFileStore(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI())));
-			StyledText widget = viewer.getTextWidget();
-			Assert.assertTrue(new DisplayHelper() {
-				@Override
-				protected boolean condition() {
-					return containsColor(widget, color);
-				}
-			}.waitForCondition(widget.getDisplay(), 3000));
-		} finally {
-			Files.deleteIfExists(file.toPath());
-		}
-	}
-
-	/**
-	 * TODO consider reusing directly code from Test_org_eclipse_swt_custom_StyledText
-	 * @param widget
-	 * @param expectedRGB
-	 * @return
-	 */
-	public static boolean containsColor(Control widget, RGB expectedRGB) {
-		if (widget.getSize().x == 0) {
-			return false;
-		}
-		GC gc = new GC(widget);
-		Image image = new Image(widget.getDisplay(), widget.getSize().x, widget.getSize().y);
-		gc.copyArea(image, 0, 0);
-		gc.dispose();
-		ImageData imageData = image.getImageData();
-		for (int x = 0; x < image.getBounds().width; x++) {
-			for (int y = 0; y < image.getBounds().height; y++) {
-				RGB pixelRGB = imageData.palette.getRGB(imageData.getPixel(x, y));
-				if (expectedRGB.equals(pixelRGB)) {
-					image.dispose();
-					return true;
-				}
-			}
-		}
-		image.dispose();
-		return false;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/commands/DynamicRegistrationTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/commands/DynamicRegistrationTest.java
deleted file mode 100644
index 8ea112c..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/commands/DynamicRegistrationTest.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Pivotal Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Kris De Volder - Initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.commands;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Predicate;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.ExecuteCommandOptions;
-import org.eclipse.lsp4j.Registration;
-import org.eclipse.lsp4j.RegistrationParams;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.Unregistration;
-import org.eclipse.lsp4j.UnregistrationParams;
-import org.eclipse.lsp4j.WorkspaceFoldersOptions;
-import org.eclipse.lsp4j.WorkspaceServerCapabilities;
-import org.eclipse.lsp4j.services.LanguageClient;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import com.google.gson.Gson;
-
-public class DynamicRegistrationTest {
-
-	private static final String WORKSPACE_EXECUTE_COMMAND = "workspace/executeCommand";
-	private static final String WORKSPACE_DID_CHANGE_FOLDERS = "workspace/didChangeWorkspaceFolders";
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-
-	private IProject project;
-
-	@Before
-	public void setUp() throws Exception {
-		project = TestUtils.createProject("CommandRegistrationTest" + System.currentTimeMillis());
-		IFile testFile = TestUtils.createFile(project, "shouldUseExtension.lspt", "");
-
-		// Make sure mock language server is created...
-		LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(testFile), null).get(1,
-				TimeUnit.SECONDS);
-		getMockClient();
-	}
-
-	@Test
-	public void testCommandRegistration() throws Exception {
-		@NonNull List<@NonNull LanguageServer> servers = LanguageServiceAccessor.getActiveLanguageServers(c -> true);
-		assertEquals(1, servers.size());
-
-		assertTrue(LanguageServiceAccessor.getActiveLanguageServers(handlesCommand("test.command")).isEmpty());
-		
-		UUID registration = registerCommands("test.command", "test.command.2");
-		try {
-			assertEquals(1, LanguageServiceAccessor.getActiveLanguageServers(handlesCommand("test.command")).size());
-			assertEquals(1, LanguageServiceAccessor.getActiveLanguageServers(handlesCommand("test.command.2")).size());
-		} finally {
-			unregister(registration);
-		}
-		assertTrue(LanguageServiceAccessor.getActiveLanguageServers(handlesCommand("test.command")).isEmpty());
-		assertTrue(LanguageServiceAccessor.getActiveLanguageServers(handlesCommand("test.command.2")).isEmpty());
-	}
-
-	@Test
-	public void testWorkspaceFoldersRegistration() throws Exception {
-		@NonNull List<@NonNull LanguageServer> servers = LanguageServiceAccessor.getActiveLanguageServers(c -> true);
-		assertEquals(1, servers.size());
-
-		assertTrue(LanguageServiceAccessor.getActiveLanguageServers(c -> hasWorkspaceFolderSupport(c)).isEmpty());
-
-		UUID registration = registerWorkspaceFolders();
-		try {
-			assertEquals(1, LanguageServiceAccessor.getActiveLanguageServers(c -> hasWorkspaceFolderSupport(c)).size());
-		} finally {
-			unregister(registration);
-		}
-		assertTrue(LanguageServiceAccessor.getActiveLanguageServers(c -> hasWorkspaceFolderSupport(c)).isEmpty());
-		assertEquals(1, LanguageServiceAccessor.getActiveLanguageServers(c -> !hasWorkspaceFolderSupport(c)).size());
-	}
-
-	//////////////////////////////////////////////////////////////////////////////////
-
-	private void unregister(UUID registration) throws Exception {
-		LanguageClient client = getMockClient();
-		Unregistration unregistration = new Unregistration(registration.toString(), WORKSPACE_EXECUTE_COMMAND);
-		client.unregisterCapability(new UnregistrationParams(Arrays.asList(unregistration)))
-		.get(1, TimeUnit.SECONDS);
-	}
-
-	private UUID registerWorkspaceFolders() throws Exception {
-		UUID id = UUID.randomUUID();
-		LanguageClient client = getMockClient();
-		Registration registration = new Registration();
-		registration.setId(id.toString());
-		registration.setMethod(WORKSPACE_DID_CHANGE_FOLDERS);
-		client.registerCapability(new RegistrationParams(Arrays.asList(registration)))
-		.get(1, TimeUnit.SECONDS);
-		return id;
-	}
-
-	private UUID registerCommands(String... command) throws Exception {
-		UUID id = UUID.randomUUID();
-		LanguageClient client = getMockClient();
-		Registration registration = new Registration();
-		registration.setId(id.toString());
-		registration.setMethod(WORKSPACE_EXECUTE_COMMAND);
-		registration.setRegisterOptions(new Gson().toJsonTree(new ExecuteCommandOptions(Arrays.asList(command))));
-		client.registerCapability(new RegistrationParams(Arrays.asList(registration))).get(1, TimeUnit.SECONDS);
-		return id;
-	}
-
-	private LanguageClient getMockClient() {
-		List<LanguageClient> proxies = MockLanguageServer.INSTANCE.getRemoteProxies();
-		assertEquals(1, proxies.size());
-		return proxies.get(0);
-	}
-
-	private Predicate<ServerCapabilities> handlesCommand(String command) {
-		return (cap) -> {
-			ExecuteCommandOptions commandProvider = cap.getExecuteCommandProvider();
-			return commandProvider != null && commandProvider.getCommands().contains(command);
-		};
-	}
-
-	private boolean hasWorkspaceFolderSupport(ServerCapabilities cap) {
-		if (cap != null) {
-			WorkspaceServerCapabilities ws = cap.getWorkspace();
-			if (ws != null) {
-				WorkspaceFoldersOptions f = ws.getWorkspaceFolders();
-				if (f != null) {
-					return f.getSupported();
-				}
-			}
-		}
-		return false;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/AbstractCompletionTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/AbstractCompletionTest.java
deleted file mode 100644
index f46ef2b..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/AbstractCompletionTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018, 2020 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Lucas Bullen (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.completion;
-
-import static org.junit.Assert.assertEquals;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.lsp4e.operations.completion.LSContentAssistProcessor;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.CompletionItem;
-import org.eclipse.lsp4j.CompletionItemKind;
-import org.eclipse.lsp4j.CompletionList;
-import org.eclipse.lsp4j.InsertReplaceEdit;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.ui.PartInitException;
-import org.junit.Before;
-import org.junit.Rule;
-
-public abstract class AbstractCompletionTest {
-	
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	protected IProject project;
-	protected LSContentAssistProcessor contentAssistProcessor;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject("CompletionTest" + System.currentTimeMillis());
-		contentAssistProcessor = new LSContentAssistProcessor();
-	}
-
-	protected CompletionItem createCompletionItem(String label, CompletionItemKind kind) {
-		return createCompletionItem(label, kind, new Range(new Position(0, 0), new Position(0, label.length())));
-	}
-
-	protected CompletionItem createCompletionItem(String label, CompletionItemKind kind, Range range) {
-		CompletionItem item = new CompletionItem();
-		item.setLabel(label);
-		item.setKind(kind);
-		item.setTextEdit(Either.forLeft(new TextEdit(range, label)));
-		return item;
-	}
-	
-	protected CompletionItem createCompletionItemWithInsertReplace(String label, CompletionItemKind kind, Range insertRange, Range replaceRange) {
-		CompletionItem item = new CompletionItem();
-		item.setLabel(label);
-		item.setKind(kind);
-		InsertReplaceEdit insertReplaceEdit = new InsertReplaceEdit();
-		insertReplaceEdit.setNewText(label);
-		insertReplaceEdit.setInsert(insertRange);
-		insertReplaceEdit.setReplace(replaceRange);
-		item.setTextEdit(Either.forRight(insertReplaceEdit));
-		return item;
-	}
-
-	protected void confirmCompletionResults(String[] completions, String content, Integer cursorIndexInContent,
-			String[] expectedOrder) throws PartInitException, InvocationTargetException, CoreException {
-		Range range = new Range(new Position(0, 0), new Position(0, cursorIndexInContent));
-		List<CompletionItem> items = new ArrayList<>();
-		for (String string : completions) {
-			items.add(createCompletionItem(string, CompletionItemKind.Class, range));
-		}
-		confirmCompletionResults(items, content, cursorIndexInContent, expectedOrder);
-	}
-
-	protected void confirmCompletionResults(List<CompletionItem> completions, String content,
-			Integer cursorIndexInContent, String[] expectedOrder)
-			throws PartInitException, InvocationTargetException, CoreException {
-
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, completions));
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer,
-				cursorIndexInContent);
-		assertEquals(expectedOrder.length, proposals.length);
-		for (int i = 0; i < proposals.length; i++) {
-			assertEquals(expectedOrder[i], proposals[i].getDisplayString());
-		}
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/CompleteCompletionTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/CompleteCompletionTest.java
deleted file mode 100644
index dbf8dc1..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/CompleteCompletionTest.java
+++ /dev/null
@@ -1,517 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Max Bureck (Fraunhofer FOKUS) - added test for executing commands on completions
- *******************************************************************************/
-package org.eclipse.lsp4e.test.completion;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.LanguageServerWrapper;
-import org.eclipse.lsp4e.LanguageServersRegistry;
-import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.lsp4e.operations.completion.LSCompletionProposal;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.CompletionItem;
-import org.eclipse.lsp4j.CompletionItemKind;
-import org.eclipse.lsp4j.CompletionList;
-import org.eclipse.lsp4j.ExecuteCommandParams;
-import org.eclipse.lsp4j.InsertTextFormat;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ST;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.junit.Assert;
-import org.junit.Test;
-
-import com.google.gson.JsonPrimitive;
-
-public class CompleteCompletionTest extends AbstractCompletionTest {
-	/*
-	 * This tests the not-so-official way to associate a LS to a file programmatically, and then to retrieve the LS
-	 * for the file independently of the content-types. Although doing it programatically isn't recommended, consuming
-	 * file-specific LS already associated is something we want to support.
-	 */
-	@Test
-	public void testAssistForUnknownButConnectedType() throws CoreException, InvocationTargetException, IOException, InterruptedException {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClass", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-
-		IFile testFile = TestUtils.createUniqueTestFileOfUnknownType(project, "");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		LanguageServerDefinition serverDefinition = LanguageServersRegistry.getInstance().getDefinition("org.eclipse.lsp4e.test.server");
-		assertNotNull(serverDefinition);
-		LanguageServerWrapper lsWrapperForConnection = LanguageServiceAccessor
-				.getLSWrapperForConnection(testFile.getProject(), serverDefinition);
-		URI fileLocation = testFile.getLocationURI();
-		// force connection (that's what LSP4E should be designed to prevent 3rd party from having to use it).
-		lsWrapperForConnection.connect(testFile, null);
-
-		new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return lsWrapperForConnection.isConnectedTo(fileLocation);
-			}
-		}.waitForCondition(Display.getCurrent(), 3000);
-		Assert.assertTrue(lsWrapperForConnection.isConnectedTo(fileLocation));
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 0);
-		assertEquals(items.size(), proposals.length);
-		// TODO compare both structures
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal)proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, 0);
-		assertEquals(new Point("FirstClass".length(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testNoPrefix() throws CoreException, InvocationTargetException {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClass", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-
-		IFile testFile = TestUtils.createUniqueTestFile(project, "");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 0);
-		assertEquals(items.size(), proposals.length);
-		// TODO compare both structures
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal)proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, 0);
-		assertEquals(new Point("FirstClass".length(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testPrefix() throws CoreException, InvocationTargetException {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClass", CompletionItemKind.Class));
-		items.add(createCompletionItem("SecondClass", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-
-		String content = "First";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, content.length());
-		assertEquals(1, proposals.length);
-		// TODO compare items
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal)proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, 0);
-		assertEquals(new Point("FirstClass".length(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	/*
-	 * This test checks if a Command associated with a completion that is applied will be executed.
-	 * The test will use a Command that shall be handled by the langauge server.
-	 */
-	@Test
-	public void testCommandExecution() throws CoreException, InvocationTargetException, InterruptedException, ExecutionException, TimeoutException {
-		CompletionItem completionItem = createCompletionItem("Bla", CompletionItemKind.Class);
-		String expectedParameter = "command execution parameter";
-		List<Object> commandArguments = Arrays.asList(expectedParameter);
-		completionItem.setCommand(new Command("TestCommand", MockLanguageServer.SUPPORTED_COMMAND_ID, commandArguments));
-
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, Arrays.asList(completionItem)));
-		
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, ""));
-		
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 0);
-		assertEquals(1, proposals.length);
-
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal)proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, 0);
-
-		// Assert command was invoked on langauge server
-		ExecuteCommandParams executedCommand = MockLanguageServer.INSTANCE.getWorkspaceService().getExecutedCommand().get(2, TimeUnit.SECONDS);
-
-		assertEquals(MockLanguageServer.SUPPORTED_COMMAND_ID, executedCommand.getCommand());
-		List<JsonPrimitive> expectedParameterList = Arrays.asList(new JsonPrimitive(expectedParameter));
-		assertEquals(expectedParameterList, executedCommand.getArguments());
-	}
-
-	@Test
-	public void testPrefixCaseSensitivity() throws CoreException, InvocationTargetException {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClass", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-
-		String content = "FIRST";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, content.length());
-		assertEquals(1, proposals.length);
-		// TODO compare items
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal)proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, 0);
-		assertEquals(new Point("FirstClass".length(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testCompleteOnFileEnd() throws CoreException, InvocationTargetException { // bug 508842
-		CompletionItem item = new CompletionItem();
-		item.setLabel("1024M");
-		item.setKind(CompletionItemKind.Value);
-		item.setTextEdit(Either.forLeft(new TextEdit(new Range(new Position(2, 10), new Position(2, 10)), "1024M")));
-		CompletionList completionList = new CompletionList(false, Collections.singletonList(item));
-		MockLanguageServer.INSTANCE.setCompletionList(completionList);
-
-		String content = "applications:\n" + "- name: hello\n" + "  memory: ";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, content.length());
-		assertEquals(1, proposals.length);
-
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal)proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, content.length());
-		assertEquals(content + "1024M", viewer.getDocument().get());
-		assertEquals(new Point(viewer.getDocument().getLength(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testTriggerCharsWithoutPreliminaryCompletion() throws CoreException, InvocationTargetException { // bug 508463
-		Set<String> triggers = new HashSet<>();
-		triggers.add("a");
-		triggers.add("b");
-		MockLanguageServer.INSTANCE.setCompletionTriggerChars(triggers);
-
-		String content = "First";
-		TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		assertTrue(new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return Arrays.equals(new char[]{ 'a', 'b'}, contentAssistProcessor.getCompletionProposalAutoActivationCharacters());
-			}
-		}.waitForCondition(Display.getDefault(), 3000));
-	}
-
-	@Test
-	public void testTriggerCharsNullList() throws CoreException, InvocationTargetException {
-		MockLanguageServer.INSTANCE.setCompletionTriggerChars(null);
-
-		TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, "First"));
-
-		assertArrayEquals(new char[0], contentAssistProcessor.getCompletionProposalAutoActivationCharacters());
-	}
-
-	@Test
-	public void testApplyCompletionWithPrefix() throws CoreException, InvocationTargetException {
-		Range range = new Range(new Position(0, 0), new Position(0, 5));
-		List<CompletionItem> items = Collections
-				.singletonList(createCompletionItem("FirstClass", CompletionItemKind.Class, range));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-
-		String content = "First";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, content.length());
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal)proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, content.length());
-		assertEquals(true, viewer.getDocument().get().equals("FirstClass"));
-		assertEquals(new Point(viewer.getDocument().getLength(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testApplyCompletionReplace() throws CoreException, InvocationTargetException {
-		Range range = new Range(new Position(0, 0), new Position(0, 20));
-		List<CompletionItem> items = Collections
-				.singletonList(createCompletionItem("FirstClass", CompletionItemKind.Class, range));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-
-		String content = "FirstNotMatchedLabel";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 5);
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal)proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, 5);
-		assertEquals("FirstClass", viewer.getDocument().get());
-		assertEquals(new Point("FirstClass".length(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testApplyCompletionReplaceAndTypingWithTextEdit() throws CoreException, InvocationTargetException, BadLocationException {
-		Range range = new Range(new Position(0, 0), new Position(0, 20));
-		List<CompletionItem> items = Collections
-				.singletonList(createCompletionItem("FirstClass", CompletionItemKind.Class, range));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-
-		String content = "FirstNotMatchedLabel";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project,content));
-
-		int invokeOffset = 5;
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal)proposals[0];
-
-		// simulate additional typing (to filter) after invoking completion
-		viewer.getDocument().replace(5, 0, "No");
-
-		lsCompletionProposal.apply(viewer, '\n', 0, invokeOffset + "No".length());
-		assertEquals("FirstClass", viewer.getDocument().get());
-		assertEquals(new Point("FirstClass".length(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testApplyCompletionReplaceAndTyping()
-			throws CoreException, InvocationTargetException, BadLocationException {
-		CompletionItem item = new CompletionItem("strncasecmp");
-		item.setKind(CompletionItemKind.Function);
-		item.setInsertText("strncasecmp()");
-
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false,  Collections.singletonList(item)));
-
-		String content = "str";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		int invokeOffset = content.length();
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		assertEquals(1, proposals.length);
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal) proposals[0];
-
-		// simulate additional typing (to filter) after invoking completion
-		viewer.getDocument().replace(content.length(), 0, "nc");
-
-		lsCompletionProposal.apply(viewer, '\0', 0, invokeOffset + "nc".length());
-		assertEquals(item.getInsertText(), viewer.getDocument().get());
-		assertEquals(new Point(item.getInsertText().length(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testCompletionReplace() throws CoreException, InvocationTargetException {
-		IFile file = TestUtils.createUniqueTestFile(project, "line1\nlineInsertHere");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, Collections.singletonList(
-			createCompletionItem("Inserted", CompletionItemKind.Text, new Range(new Position(1, 4), new Position(1, 4 + "InsertHere".length())))
-		)));
-
-		int invokeOffset = viewer.getDocument().getLength() - "InsertHere".length();
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal)proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, invokeOffset);
-		assertEquals("line1\nlineInserted", viewer.getDocument().get());
-		assertEquals(new Point(viewer.getDocument().getLength(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testItemOrdering() throws Exception {
-		Range range = new Range(new Position(0, 0), new Position(0, 1));
-		List<CompletionItem> items = Arrays.asList(new CompletionItem[] {
-			createCompletionItem("AA", CompletionItemKind.Class, range),
-			createCompletionItem("AB", CompletionItemKind.Class, range),
-			createCompletionItem("BA", CompletionItemKind.Class, range),
-			createCompletionItem("BB", CompletionItemKind.Class, range),
-			createCompletionItem("CB", CompletionItemKind.Class, range),
-			createCompletionItem("CC", CompletionItemKind.Class, range),
-		});
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-
-		String content = "B";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project,content));
-
-		int invokeOffset = 1;
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		assertEquals(4, proposals.length); // only those containing a "B"
-		assertEquals("BA", proposals[0].getDisplayString());
-		assertEquals("BB", proposals[1].getDisplayString());
-		assertEquals("AB", proposals[2].getDisplayString());
-		assertEquals("CB", proposals[3].getDisplayString());
-
-		((LSCompletionProposal) proposals[0]).apply(viewer, '\n', 0, invokeOffset);
-		assertEquals("BA", viewer.getDocument().get());
-	}
-
-	@Test
-	public void testBasicSnippet() throws PartInitException, InvocationTargetException, CoreException {
-		CompletionItem completionItem = createCompletionItem("$1 and ${2:foo}", CompletionItemKind.Class, new Range(new Position(0, 0), new Position(0, 1)));
-		completionItem.setInsertTextFormat(InsertTextFormat.Snippet);
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, Collections.singletonList(completionItem)));
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project,""));
-		int invokeOffset = 0;
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		assertEquals(1, proposals.length);
-		((LSCompletionProposal) proposals[0]).apply(viewer, '\n', 0, invokeOffset);
-		assertEquals(" and foo", viewer.getDocument().get());
-		// TODO check link edit groups
-	}
-
-	@Test
-	public void testChoiceSnippet() throws PartInitException, InvocationTargetException, CoreException {
-		CompletionItem completionItem = createCompletionItem("1${1|a,b|}2", CompletionItemKind.Class);
-		completionItem.setInsertTextFormat(InsertTextFormat.Snippet);
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, Collections.singletonList(completionItem)));
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project,""));
-		int invokeOffset = 0;
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		assertEquals(1, proposals.length);
-		Set<Shell> beforeShells = new HashSet<>(Arrays.asList(viewer.getTextWidget().getDisplay().getShells()));
-		((LSCompletionProposal) proposals[0]).apply(viewer, '\n', 0, invokeOffset);
-		assertEquals("1a2", viewer.getDocument().get());
-		Set<Shell> newShells = new HashSet<>(Arrays.asList(viewer.getTextWidget().getDisplay().getShells()));
-		newShells.removeAll(beforeShells);
-		assertNotEquals(Collections.emptySet(), newShells);
-		Table proposalList = (Table)newShells.iterator().next().getChildren()[0];
-		String[] itemLabels = Arrays.stream(proposalList.getItems()).map(TableItem::getText).toArray(String[]::new);
-		assertArrayEquals(new String[] {"a", "b"}, itemLabels);
-	}
-
-	@Test
-	public void testDuplicateVariable() throws PartInitException, InvocationTargetException, CoreException {
-		CompletionItem completionItem = createCompletionItem("${1:foo} and ${1:foo}", CompletionItemKind.Class, new Range(new Position(0, 0), new Position(0, 1)));
-		completionItem.setInsertTextFormat(InsertTextFormat.Snippet);
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, Collections.singletonList(completionItem)));
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project,""));
-		int invokeOffset = 0;
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		assertEquals(1, proposals.length);
-		((LSCompletionProposal) proposals[0]).apply(viewer, '\n', 0, invokeOffset);
-		assertEquals("foo and foo", viewer.getDocument().get());
-		// TODO check link edit groups
-	}
-
-	@Test
-	public void testSnippetTabStops() throws PartInitException, InvocationTargetException, CoreException {
-		CompletionItem completionItem = createCompletionItem("sum(${1:x}, ${2:y})", CompletionItemKind.Method,
-				new Range(new Position(0, 0), new Position(0, 1)));
-		completionItem.setInsertTextFormat(InsertTextFormat.Snippet);
-		MockLanguageServer.INSTANCE
-				.setCompletionList(new CompletionList(false, Collections.singletonList(completionItem)));
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, ""));
-		int invokeOffset = 0;
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		assertEquals(1, proposals.length);
-		((LSCompletionProposal) proposals[0]).apply(viewer, '\n', 0, invokeOffset);
-		assertEquals("sum(x, y)", viewer.getDocument().get());
-		// after the proposal is applied, the x parameter should be selected
-		Point range = proposals[0].getSelection(viewer.getDocument());
-		assertEquals(4, range.x);
-		assertEquals(1, range.y);
-
-		// fake a VerifyKey tabbing event to jump to the y parameter
-		Event event = new Event();
-		event.character = SWT.TAB;
-		viewer.getTextWidget().notifyListeners(ST.VerifyKey, event);
-		range = viewer.getSelectedRange();
-		assertEquals(7, range.x);
-		assertEquals(1, range.y);
-	}
-
-	@Test
-	public void testMultipleLS() throws Exception {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClass", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-
-		IFile testFile = TestUtils.createUniqueTestFileMultiLS(project, "");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 0);
-		assertEquals(2 * (long)(items.size()), proposals.length);
-	}
-
-	@Test
-	public void testReopeningFileAndReusingContentAssist() throws CoreException, InvocationTargetException {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClass", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-
-		IFile testFile = TestUtils.createUniqueTestFile(project, "");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 0);
-		assertEquals(items.size(), proposals.length); // TODO compare both structures
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal) proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, 0);
-		assertEquals(new Point("FirstClass".length(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-
-		PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false);
-		MockLanguageServer.reset();
-
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-		viewer = TestUtils.openTextViewer(testFile);
-
-		proposals = contentAssistProcessor.computeCompletionProposals(viewer, 0);
-		assertEquals(items.size(), proposals.length); // TODO compare both structures
-		lsCompletionProposal = (LSCompletionProposal) proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, 0);
-		assertEquals(new Point("FirstClass".length(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testFilterNonmatchingCompletions() throws Exception {
-		List<CompletionItem> items = new ArrayList<>();
-		CompletionItem item = new CompletionItem("server.web");
-		item.setFilterText("server.web");
-		item.setTextEdit(Either.forLeft(new TextEdit(new Range(new Position(0, 0), new Position(0, 10)), item.getFilterText())));
-		items.add(item);
-		// 'soup' replacing the 'ver' in 'server' does not make sense when knowing that
-		// ver should have been a filter
-		item = new CompletionItem("soup");
-		item.setFilterText("soup");
-		item.setTextEdit(Either.forLeft(new TextEdit(new Range(new Position(0, 3), new Position(0, 7)), item.getFilterText())));
-		items.add(item);
-		items.add(new CompletionItem(": 1.0.1"));
-		items.add(new CompletionItem("s.Status"));
-
-		confirmCompletionResults(items, "server", 6, new String[] { "server.web", ": 1.0.1", "s.Status" });
-	}
-
-	@Test
-	public void testFilterNonmatchingCompletionsMovieOffset() throws Exception {
-		IDocument document = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, "servers")).getDocument();
-		LSPDocumentInfo info = LanguageServiceAccessor
-				.getLSPDocumentInfosFor(document, capabilities -> capabilities.getCompletionProvider() != null
-						|| capabilities.getSignatureHelpProvider() != null)
-				.get(0);
-		// The completion ': 1.0.1' was given, then the user types a 's', which is used
-		// as a filter and removes the completion
-		LSCompletionProposal completionProposal = new LSCompletionProposal(document, 0, new CompletionItem(": 1.0.1"),
-				info.getLanguageClient());
-		assertTrue(completionProposal.isValidFor(document, 6));
-		assertFalse(completionProposal.isValidFor(document, 7));
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/CompletionOrderingTests.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/CompletionOrderingTests.java
deleted file mode 100644
index 800489e..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/CompletionOrderingTests.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018, 2020 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Lucas Bullen (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.completion;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.lsp4e.operations.completion.LSIncompleteCompletionProposal;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.CompletionItem;
-import org.eclipse.lsp4j.CompletionItemKind;
-import org.eclipse.lsp4j.CompletionList;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.junit.Test;
-
-public class CompletionOrderingTests extends AbstractCompletionTest {
-
-	@Test
-	public void testItemOrdering() throws Exception {
-		confirmCompletionResults(new String[] { "AA", "AB", "BA", "BB", "CB", "CC" }, "B", 1,
-				new String[] { "BA", "BB", "AB", "CB" });
-	}
-
-	@Test
-	public void testOrderByCategory() throws Exception {
-		// Category 1 before Category 2 (testa)
-		String[] completions = new String[] { "testa", "test.a", "a.test.a", "a.testa", "test" };
-		String[] orderedResults = new String[] { "test", "testa", "a.testa", "test.a", "a.test.a" };
-		confirmCompletionResults(completions, "test", 4, orderedResults);
-
-		// Category 2 before Category 3 (atest)
-		completions = new String[] { "testa", "atest", "a.testa" };
-		orderedResults = new String[] { "testa", "a.testa", "atest" };
-		confirmCompletionResults(completions, "test", 4, orderedResults);
-
-		// Category 3 before Category 4 (tZesZt)
-		completions = new String[] { "atesta", "tZesZt", "atest" };
-		orderedResults = new String[] { "atest", "atesta", "tZesZt" };
-		confirmCompletionResults(completions, "test", 4, orderedResults);
-
-		// Category 4 before Category 5 (qwerty)
-		completions = new String[] { "qwerty", "tZesZt", "t.e.s.t" };
-		orderedResults = new String[] { "tZesZt", "t.e.s.t", "qwerty" };
-		confirmCompletionResults(completions, "test", 4, orderedResults);
-	}
-
-	@Test
-	public void testOrderByRank() throws Exception {
-		// Category 1
-		String[] completions = new String[] { "prefix.test", "alongprefix.test", "test", "test.test", "pretest.test" };
-		String[] orderedResults = new String[] { "test", "test.test", "pretest.test", "prefix.test",
-				"alongprefix.test" };
-		confirmCompletionResults(completions, "test", 4, orderedResults);
-
-		// Category 2
-		completions = new String[] { "testa", "alongprefix.testa", "testatest", "prefix.testa" };
-		orderedResults = new String[] { "testa", "prefix.testa", "alongprefix.testa", "testatest" };
-		confirmCompletionResults(completions, "test", 4, orderedResults);
-
-		// Category 3
-		completions = new String[] { "atesta", "teteteststst", "long.prefixtest.suffix" };
-		orderedResults = new String[] { "atesta", "teteteststst", "long.prefixtest.suffix" };
-		confirmCompletionResults(completions, "test", 4, orderedResults);
-
-		// Category 4
-		completions = new String[] { "tlongbreakbetweenest", "tZesZt", "t.e.s.t", "tes.tst" };
-		orderedResults = new String[] { "tes.tst", "tZesZt", "t.e.s.t", "tlongbreakbetweenest" };
-		confirmCompletionResults(completions, "test", 4, orderedResults);
-	}
-
-	@Test
-	public void testOrderWithCapitalization() throws Exception {
-		// Category 1
-		String[] completions = new String[] { "prefiX.Test", "alongprefix.test", "tEsT", "teSt.teST", "preTEst.test" };
-		String[] orderedResults = new String[] { "tEsT", "teSt.teST", "preTEst.test", "prefiX.Test",
-				"alongprefix.test" };
-		confirmCompletionResults(completions, "test", 4, orderedResults);
-
-		// Category 2
-		completions = new String[] { "teSTa", "alonGPrefix.TESTA", "tEStatest", "prefix.testa" };
-		orderedResults = new String[] { "teSTa", "prefix.testa", "alonGPrefix.TESTA", "tEStatest" };
-		confirmCompletionResults(completions, "tESt", 4, orderedResults);
-
-		// Category 3
-		completions = new String[] { "ATesta", "teTETesTSTst", "long.prefixtest.suffix" };
-		orderedResults = new String[] { "ATesta", "teTETesTSTst", "long.prefixtest.suffix" };
-		confirmCompletionResults(completions, "TEST", 4, orderedResults);
-
-		// Category 4
-		completions = new String[] { "TlongbreakbetweenEST", "TZesZT", "t.e.s.t", "teS.tst" };
-		orderedResults = new String[] { "teS.tst", "TZesZT", "t.e.s.t", "TlongbreakbetweenEST" };
-		confirmCompletionResults(completions, "test", 4, orderedResults);
-	}
-
-	@Test
-	public void testOrderWithLongInsert() throws Exception {
-		List<CompletionItem> items = new ArrayList<>();
-		CompletionItem item = new CompletionItem("server.address");
-		item.setFilterText("server.address");
-		item.setTextEdit(Either.forLeft(new TextEdit(new Range(new Position(1, 12), new Position(5, 7)),
-						"  address: $1\n" +
-						"spring:\n" +
-						"  application:\n" +
-						"    name: f\n")));
-		items.add(item);
-
-		item = new CompletionItem("management.server.address");
-		item.setFilterText("management.server.address");
-		item.setTextEdit(Either.forLeft(new TextEdit(new Range(new Position(5, 0), new Position(5, 7)),
-						"management:\n" +
-						"  server:\n" +
-						"    address: $1\n")));
-		items.add(item);
-
-		item = new CompletionItem("→ spring.jta.atomikos.datasource.xa-data-source-class-name");
-		item.setFilterText("spring.jta.atomikos.datasource.xa-data-source-class-name");
-		item.setTextEdit(Either.forLeft(new TextEdit(new Range(new Position(5, 0), new Position(0, 12)),item.getFilterText())));
-		items.add(item);
-
-		String[] orderedResults = new String[] { "server.address", "management.server.address",
-				"→ spring.jta.atomikos.datasource.xa-data-source-class-name" };
-
-		confirmCompletionResults(items,
-						"server:\n" +
-						"  port: 555\n" +
-						"spring:\n" +
-						"  application:\n" +
-						"    name: f\n" +
-						"address",
-				62, orderedResults);
-	}
-
-	@Test
-	public void testMovingOffset() throws Exception {
-		Range range = new Range(new Position(0, 0), new Position(0, 4));
-		IDocument document = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, "test")).getDocument();
-		LSPDocumentInfo info = LanguageServiceAccessor
-				.getLSPDocumentInfosFor(document,
-						capabilities -> capabilities.getCompletionProvider() != null
-						|| capabilities.getSignatureHelpProvider() != null)
-				.get(0);
-
-		CompletionItem completionItem = createCompletionItem("test", CompletionItemKind.Class, range);
-		LSIncompleteCompletionProposal completionProposal = new LSIncompleteCompletionProposal(document, 0,
-				completionItem, info.getLanguageClient());
-		// Blank input ''
-		assertEquals("", completionProposal.getDocumentFilter());
-		assertEquals(0, completionProposal.getRankScore());
-		assertEquals(5, completionProposal.getRankCategory());
-		// Typed test 'test'
-		assertEquals("test", completionProposal.getDocumentFilter(4));
-		assertEquals(0, completionProposal.getRankScore());
-		assertEquals(1, completionProposal.getRankCategory());
-		// Moved cursor back 't'
-		assertEquals("t", completionProposal.getDocumentFilter(1));
-		assertEquals(0, completionProposal.getRankScore());
-		assertEquals(2, completionProposal.getRankCategory());
-
-		document.set("prefix:pnd");
-		completionItem = createCompletionItem("append", CompletionItemKind.Class);
-		completionProposal = new LSIncompleteCompletionProposal(document, 7, completionItem, info.getLanguageClient());
-		// Blank input 'prefix:'
-		assertEquals("", completionProposal.getDocumentFilter());
-		assertEquals(0, completionProposal.getRankScore());
-		assertEquals(5, completionProposal.getRankCategory());
-		// Typed test 'prefix:pnd'
-		assertEquals("pnd", completionProposal.getDocumentFilter(10));
-		assertEquals(5, completionProposal.getRankScore());
-		assertEquals(4, completionProposal.getRankCategory());
-		// Moved cursor back 'prefix:p'
-		assertEquals("p", completionProposal.getDocumentFilter(8));
-		assertEquals(1, completionProposal.getRankScore());
-		assertEquals(3, completionProposal.getRankCategory());
-	}
-
-	@Test
-	public void testPerformance() throws Exception {
-		final int[] batchSizes = new int[] { 10, 100, 1000, 10000 };
-		int[] resultAverages = new int[batchSizes.length];
-		final int repeat = 5;
-		final ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, "abcdefgh"));
-
-		for (int i = 0; i < batchSizes.length; i++) {
-			long resultSum = 0;
-			for (int j = 0; j < repeat; j++) {
-				resultSum += timeToDisplayCompletionList(viewer, batchSizes[i]);
-			}
-			resultAverages[i] = (int) (resultSum / repeat);
-		}
-		double pearsonCorrelation = isLinearCorelation(batchSizes, resultAverages);
-		assertTrue(pearsonCorrelation > 0.99);
-	}
-
-	private double isLinearCorelation(int[] batchSizes, int[] resultAverages) {
-		int n = batchSizes.length;
-
-		long batchSum = 0;
-		long resulthSum = 0;
-		long batchSumSquared = 0;
-		long resulthSumSquared = 0;
-		long productSum = 0;
-		for (int i = 0; i < n; i++) {
-			batchSum += batchSizes[i];
-			resulthSum += resultAverages[i];
-			batchSumSquared += Math.pow(batchSizes[i], 2);
-			resulthSumSquared += Math.pow(resultAverages[i], 2);
-			productSum += batchSizes[i] * resultAverages[i];
-		}
-		double numerator = productSum - (batchSum * resulthSum / n);
-		double denominator = Math.sqrt(
-				(batchSumSquared - Math.pow(batchSum, 2) / n) * (resulthSumSquared - Math.pow(resulthSum, 2) / n));
-		return denominator == 0 ? 0 : numerator / denominator;
-	}
-
-	private long timeToDisplayCompletionList(ITextViewer viewer, int size) throws Exception {
-		Range range = new Range(new Position(0, 0), new Position(0, 8));
-		List<CompletionItem> items = new ArrayList<>();
-		for (int i = 0; i < size; i++) {
-			items.add(createCompletionItem(randomString(), CompletionItemKind.Class, range));
-		}
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, items));
-
-		long startTimeControl = System.currentTimeMillis();
-		contentAssistProcessor.computeCompletionProposals(viewer, 0);
-		long endTimeControl = System.currentTimeMillis();
-		return endTimeControl - startTimeControl;
-	}
-
-	private static final String CHARACTERS = "abcdefghABCDEFGH.-_";
-
-	private String randomString() {
-		int count = 50;
-		StringBuilder builder = new StringBuilder();
-		while (count-- != 0) {
-			int character = (int) (Math.random() * CHARACTERS.length());
-			builder.append(CHARACTERS.charAt(character));
-		}
-		return builder.toString();
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/ContextInformationTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/ContextInformationTest.java
deleted file mode 100644
index 7735652..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/ContextInformationTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.completion;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.contentassist.IContextInformation;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.operations.completion.LSContentAssistProcessor;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.SignatureHelp;
-import org.eclipse.lsp4j.SignatureInformation;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class ContextInformationTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-	private LSContentAssistProcessor contentAssistProcessor;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject("ContextInformationTest" + System.currentTimeMillis());
-		contentAssistProcessor = new LSContentAssistProcessor();
-	}
-
-	@Test
-	public void testNoContextInformation() throws CoreException, InvocationTargetException {
-		MockLanguageServer.INSTANCE.setSignatureHelp(new SignatureHelp());
-
-		IFile testFile = TestUtils.createUniqueTestFile(project, "");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		IContextInformation[] infos = contentAssistProcessor.computeContextInformation(viewer, 0);
-		assertEquals(0, infos.length);
-	}
-
-	@Test
-	public void testContextInformationNoParameters() throws CoreException, InvocationTargetException {
-		SignatureHelp signatureHelp = new SignatureHelp();
-		SignatureInformation information = new SignatureInformation("label", "documentation", Collections.emptyList());
-		signatureHelp.setSignatures(Collections.singletonList(information));
-		MockLanguageServer.INSTANCE.setSignatureHelp(signatureHelp);
-
-		IFile testFile = TestUtils.createUniqueTestFile(project, "method()");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		IContextInformation[] infos = contentAssistProcessor.computeContextInformation(viewer, 0);
-		assertEquals(1, infos.length);
-
-		String expected = new StringBuilder(information.getLabel()).append('\n')
-				.append(LSPEclipseUtils.getDocString(information.getDocumentation()))
-				.toString();
-		assertEquals(expected, infos[0].getInformationDisplayString());
-	}
-
-	@Test
-	public void testTriggerChars() throws CoreException, InvocationTargetException {
-		Set<String> triggers = new HashSet<>();
-		triggers.add("a");
-		triggers.add("b");
-		MockLanguageServer.INSTANCE.setContextInformationTriggerChars(triggers);
-
-		String content = "First";
-		TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		assertArrayEquals(new char[] { 'a', 'b' },
-				contentAssistProcessor.getContextInformationAutoActivationCharacters());
-	}
-
-	@Test
-	public void testTriggerCharsNullList() throws CoreException, InvocationTargetException {
-		MockLanguageServer.INSTANCE.setContextInformationTriggerChars(null);
-
-		TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, "First"));
-
-		assertArrayEquals(new char[0], contentAssistProcessor.getContextInformationAutoActivationCharacters());
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/IncompleteCompletionTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/IncompleteCompletionTest.java
deleted file mode 100644
index 01c71c5..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/IncompleteCompletionTest.java
+++ /dev/null
@@ -1,508 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2019 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Max Bureck (Fraunhofer FOKUS) - Adjustments to variable replacement test
- *******************************************************************************/
-package org.eclipse.lsp4e.test.completion;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.contentassist.BoldStylerProvider;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.jface.viewers.StyledString;
-import org.eclipse.lsp4e.LanguageServerWrapper;
-import org.eclipse.lsp4e.LanguageServersRegistry;
-import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.lsp4e.operations.completion.LSIncompleteCompletionProposal;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.CompletionItem;
-import org.eclipse.lsp4j.CompletionItemKind;
-import org.eclipse.lsp4j.CompletionList;
-import org.eclipse.lsp4j.InsertTextFormat;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.junit.Test;
-
-public class IncompleteCompletionTest extends AbstractCompletionTest {
-	/*
-	 * This tests the not-so-official way to associate a LS to a file programmatically, and then to retrieve the LS
-	 * for the file independently of the content-types. Although doing it programatically isn't recommended, consuming
-	 * file-specific LS already associated is something we want to support.
-	 */
-	@Test
-	public void testAssistForUnknownButConnectedType() throws CoreException, InvocationTargetException, IOException, InterruptedException {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClass", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-		IFile testFile = TestUtils.createUniqueTestFileOfUnknownType(project, "");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		LanguageServerDefinition serverDefinition = LanguageServersRegistry.getInstance().getDefinition("org.eclipse.lsp4e.test.server");
-		assertNotNull(serverDefinition);
-		LanguageServerWrapper lsWrapperForConnection = LanguageServiceAccessor
-				.getLSWrapperForConnection(testFile.getProject(), serverDefinition);
-		URI fileLocation = testFile.getLocationURI();
-		// force connection (that's what LSP4E should be designed to prevent 3rd party from having to use it).
-		lsWrapperForConnection.connect(testFile, null);
-
-		new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return lsWrapperForConnection.isConnectedTo(fileLocation);
-			}
-		}.waitForCondition(Display.getCurrent(), 3000);
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 0);
-		assertEquals(items.size(), proposals.length);
-		// TODO compare both structures
-		LSIncompleteCompletionProposal LSIncompleteCompletionProposal = (LSIncompleteCompletionProposal) proposals[0];
-		LSIncompleteCompletionProposal.apply(viewer.getDocument());
-		assertEquals(new Point("FirstClass".length(), 0),
-				LSIncompleteCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testNoPrefix() throws CoreException, InvocationTargetException {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClass", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-		IFile testFile = TestUtils.createUniqueTestFile(project, "");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 0);
-		assertEquals(items.size(), proposals.length);
-		// TODO compare both structures
-		LSIncompleteCompletionProposal LSIncompleteCompletionProposal = (LSIncompleteCompletionProposal) proposals[0];
-		LSIncompleteCompletionProposal.apply(viewer.getDocument());
-		assertEquals(new Point("FirstClass".length(), 0),
-				LSIncompleteCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testDeprecatedCompletion() throws Exception {
-		BoldStylerProvider boldStyleProvider = null;
-		try {
-			List<CompletionItem> items = new ArrayList<>();
-			CompletionItem completionItem = createCompletionItem("FirstClassDeprecated", CompletionItemKind.Class);
-			completionItem.setDeprecated(true);
-			items.add(completionItem);
-			MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-			String content = "First";
-			ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-			ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer,
-					content.length());
-			assertEquals(1, proposals.length);
-			LSIncompleteCompletionProposal proposal = (LSIncompleteCompletionProposal) proposals[0];
-
-			StyledString simpleStyledStr = proposal.getStyledDisplayString();
-			assertEquals("FirstClassDeprecated", simpleStyledStr.getString());
-			assertEquals(1, simpleStyledStr.getStyleRanges().length);
-			StyleRange styleRange = simpleStyledStr.getStyleRanges()[0];
-			assertTrue(styleRange.strikeout);
-
-			boldStyleProvider = new BoldStylerProvider(
-					Display.getDefault().getActiveShell().getFont());
-			StyledString styledStr = proposal.getStyledDisplayString(viewer.getDocument(), 4, boldStyleProvider);
-			assertTrue(styledStr.getStyleRanges().length > 1);
-			for (StyleRange sr : styledStr.getStyleRanges()) {
-				assertTrue(sr.strikeout);
-			}
-		} finally {
-			if (boldStyleProvider != null) {
-				boldStyleProvider.dispose();
-			}
-		}
-	}
-
-	@Test
-	public void testPrefix() throws CoreException, InvocationTargetException {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClass", CompletionItemKind.Class));
-		items.add(createCompletionItem("SecondClass", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-		String content = "First";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, content.length());
-		assertEquals(2, proposals.length);
-		// TODO compare items
-		LSIncompleteCompletionProposal LSIncompleteCompletionProposal = (LSIncompleteCompletionProposal) proposals[0];
-		LSIncompleteCompletionProposal.apply(viewer.getDocument());
-		assertEquals(new Point("FirstClass".length(), 0),
-				LSIncompleteCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testPrefixCaseSensitivity() throws CoreException, InvocationTargetException {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClass", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-		String content = "FIRST";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, content.length());
-		assertEquals(1, proposals.length);
-		// TODO compare items
-		LSIncompleteCompletionProposal LSIncompleteCompletionProposal = (LSIncompleteCompletionProposal) proposals[0];
-		LSIncompleteCompletionProposal.apply(viewer.getDocument());
-		assertEquals(new Point("FirstClass".length(), 0),
-				LSIncompleteCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testCompleteOnFileEnd() throws CoreException, InvocationTargetException { // bug 508842
-		CompletionItem item = new CompletionItem();
-		item.setLabel("1024M");
-		item.setKind(CompletionItemKind.Value);
-		item.setTextEdit(Either.forLeft(new TextEdit(new Range(new Position(2, 10), new Position(2, 10)), "1024M")));
-		CompletionList completionList = new CompletionList(true, Collections.singletonList(item));
-		MockLanguageServer.INSTANCE.setCompletionList(completionList);
-
-		String content = "applications:\n" + "- name: hello\n" + "  memory: ";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, content.length());
-		assertEquals(1, proposals.length);
-
-		LSIncompleteCompletionProposal LSIncompleteCompletionProposal = (LSIncompleteCompletionProposal) proposals[0];
-		LSIncompleteCompletionProposal.apply(viewer.getDocument());
-		assertEquals(content + "1024M", viewer.getDocument().get());
-		assertEquals(new Point(viewer.getDocument().getLength(), 0),
-				LSIncompleteCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testCompletionWithAdditionalEdits() throws CoreException, InvocationTargetException {
-		List<CompletionItem> items = new ArrayList<>();
-		CompletionItem item = new CompletionItem("additionaEditsCompletion");
-		item.setKind(CompletionItemKind.Function);
-		item.setInsertText("MainInsertText");
-
-		List<TextEdit> additionalTextEdits = new ArrayList<>();
-
-		TextEdit additionaEdit1 = new TextEdit(new Range(new Position(0, 6), new Position(0, 6)), "addOnText1");
-		TextEdit additionaEdit2 = new TextEdit(new Range(new Position(0, 12), new Position(0, 12)), "addOnText2");
-		additionalTextEdits.add(additionaEdit1);
-		additionalTextEdits.add(additionaEdit2);
-
-		item.setAdditionalTextEdits(additionalTextEdits);
-		items.add(item);
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-		String content = "this <> is <> the main <> content of the file";
-		IFile testFile = TestUtils.createUniqueTestFile(project, content);
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 24);
-		assertEquals(items.size(), proposals.length);
-		// TODO compare both structures
-		LSIncompleteCompletionProposal LSIncompleteCompletionProposal = (LSIncompleteCompletionProposal) proposals[0];
-		LSIncompleteCompletionProposal.apply(viewer.getDocument());
-
-		String newContent = viewer.getDocument().get();
-		assertEquals("this <addOnText1> is <addOnText2> the main <MainInsertText> content of the file", newContent);
-	}
-
-	@Test
-	public void testSnippetCompletionWithAdditionalEdits()
-			throws PartInitException, InvocationTargetException, CoreException {
-		CompletionItem item = new CompletionItem("snippet item");
-		item.setInsertText("$1 and ${2:foo}");
-		item.setKind(CompletionItemKind.Class);
-		item.setInsertTextFormat(InsertTextFormat.Snippet);
-		List<TextEdit> additionalTextEdits = new ArrayList<>();
-
-		TextEdit additionaEdit1 = new TextEdit(new Range(new Position(0, 6), new Position(0, 6)), "addOnText1");
-		TextEdit additionaEdit2 = new TextEdit(new Range(new Position(0, 12), new Position(0, 12)), "addOnText2");
-		additionalTextEdits.add(additionaEdit1);
-		additionalTextEdits.add(additionaEdit2);
-
-		item.setAdditionalTextEdits(additionalTextEdits);
-
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, Collections.singletonList(item)));
-
-		String content = "this <> is <> the main <> content of the file";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 24);
-		assertEquals(1, proposals.length);
-		((LSIncompleteCompletionProposal) proposals[0]).apply(viewer.getDocument());
-
-		String newContent = viewer.getDocument().get();
-		assertEquals("this <addOnText1> is <addOnText2> the main < and foo> content of the file", newContent);
-		// TODO check link edit groups
-	}
-
-	@Test
-	public void testApplyCompletionWithPrefix() throws CoreException, InvocationTargetException {
-		Range range = new Range(new Position(0, 0), new Position(0, 5));
-		List<CompletionItem> items = Collections
-				.singletonList(createCompletionItem("FirstClass", CompletionItemKind.Class, range));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-		String content = "First";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, content.length());
-		LSIncompleteCompletionProposal LSIncompleteCompletionProposal = (LSIncompleteCompletionProposal) proposals[0];
-		LSIncompleteCompletionProposal.apply(viewer.getDocument());
-		assertEquals(true, viewer.getDocument().get().equals("FirstClass"));
-		assertEquals(new Point(viewer.getDocument().getLength(), 0),
-				LSIncompleteCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testApplyCompletionReplace() throws CoreException, InvocationTargetException {
-		Range range = new Range(new Position(0, 0), new Position(0, 20));
-		List<CompletionItem> items = Collections
-				.singletonList(createCompletionItem("FirstClass", CompletionItemKind.Class, range));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-		String content = "FirstNotMatchedLabel";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 5);
-		LSIncompleteCompletionProposal LSIncompleteCompletionProposal = (LSIncompleteCompletionProposal) proposals[0];
-		LSIncompleteCompletionProposal.apply(viewer.getDocument());
-		assertEquals("FirstClass", viewer.getDocument().get());
-		assertEquals(new Point("FirstClass".length(), 0),
-				LSIncompleteCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testApplyCompletionReplaceAndTypingWithTextEdit() throws CoreException, InvocationTargetException, BadLocationException {
-		Range range = new Range(new Position(0, 0), new Position(0, 22));
-		List<CompletionItem> items = Collections
-				.singletonList(createCompletionItem("FirstClass", CompletionItemKind.Class, range));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-		String content = "FirstNotMatchedLabel";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project,content));
-
-		int invokeOffset = 5;
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		LSIncompleteCompletionProposal LSIncompleteCompletionProposal = (LSIncompleteCompletionProposal) proposals[0];
-
-		// simulate additional typing (to filter) after invoking completion
-		viewer.getDocument().replace(5, 0, "No");
-
-		LSIncompleteCompletionProposal.apply(viewer.getDocument());
-		assertEquals("FirstClass", viewer.getDocument().get());
-		assertEquals(new Point("FirstClass".length(), 0),
-				LSIncompleteCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testApplyCompletionReplaceAndTyping()
-			throws CoreException, InvocationTargetException, BadLocationException {
-		CompletionItem item = new CompletionItem("strncasecmp");
-		item.setKind(CompletionItemKind.Function);
-		item.setInsertText("strncasecmp()");
-
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, Collections.singletonList(item)));
-
-		String content = "str";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, content));
-
-		int invokeOffset = content.length();
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		assertEquals(1, proposals.length);
-		LSIncompleteCompletionProposal LSIncompleteCompletionProposal = (LSIncompleteCompletionProposal) proposals[0];
-
-		// simulate additional typing (to filter) after invoking completion
-		viewer.getDocument().replace(content.length(), 0, "nc");
-
-		LSIncompleteCompletionProposal.apply(viewer.getDocument());
-		assertEquals(item.getInsertText(), viewer.getDocument().get());
-		assertEquals(new Point(item.getInsertText().length(), 0),
-				LSIncompleteCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testCompletionReplace() throws CoreException, InvocationTargetException {
-		IFile file = TestUtils.createUniqueTestFile(project, "line1\nlineInsertHere");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, Collections.singletonList(
-			createCompletionItem("Inserted", CompletionItemKind.Text, new Range(new Position(1, 4), new Position(1, 4 + "InsertHere".length())))
-		)));
-
-		int invokeOffset = viewer.getDocument().getLength() - "InsertHere".length();
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		LSIncompleteCompletionProposal LSIncompleteCompletionProposal = (LSIncompleteCompletionProposal) proposals[0];
-		LSIncompleteCompletionProposal.apply(viewer.getDocument());
-		assertEquals("line1\nlineInserted", viewer.getDocument().get());
-		assertEquals(new Point(viewer.getDocument().getLength(), 0),
-				LSIncompleteCompletionProposal.getSelection(viewer.getDocument()));
-	}
-
-	@Test
-	public void testItemOrdering() throws Exception {
-		Range range = new Range(new Position(0, 0), new Position(0, 1));
-		List<CompletionItem> items = Arrays.asList(new CompletionItem[] {
-			createCompletionItem("AA", CompletionItemKind.Class, range),
-			createCompletionItem("AB", CompletionItemKind.Class, range),
-			createCompletionItem("BA", CompletionItemKind.Class, range),
-			createCompletionItem("BB", CompletionItemKind.Class, range),
-			createCompletionItem("CB", CompletionItemKind.Class, range),
-			createCompletionItem("CC", CompletionItemKind.Class, range),
-		});
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-		String content = "B";
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project,content));
-
-		int invokeOffset = 1;
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		assertEquals(6, proposals.length);
-		assertEquals("AA", proposals[0].getDisplayString());
-		assertEquals("AB", proposals[1].getDisplayString());
-		assertEquals("BA", proposals[2].getDisplayString());
-		assertEquals("BB", proposals[3].getDisplayString());
-
-		((LSIncompleteCompletionProposal) proposals[0]).apply(viewer.getDocument());
-		assertEquals("AA", viewer.getDocument().get());
-	}
-
-	@Test
-	public void testBasicSnippet() throws PartInitException, InvocationTargetException, CoreException {
-		CompletionItem completionItem = createCompletionItem("$1 and ${2:foo}", CompletionItemKind.Class, new Range(new Position(0, 0), new Position(0, 1)));
-		completionItem.setInsertTextFormat(InsertTextFormat.Snippet);
-		MockLanguageServer.INSTANCE
-				.setCompletionList(new CompletionList(true, Collections.singletonList(completionItem)));
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project,""));
-		int invokeOffset = 0;
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		assertEquals(1, proposals.length);
-		((LSIncompleteCompletionProposal) proposals[0]).apply(viewer.getDocument());
-		assertEquals(" and foo", viewer.getDocument().get());
-		// TODO check link edit groups
-	}
-
-	@Test
-	public void testDuplicateVariable() throws PartInitException, InvocationTargetException, CoreException {
-		CompletionItem completionItem = createCompletionItem("${1:foo} and ${1:foo}", CompletionItemKind.Class, new Range(new Position(0, 0), new Position(0, 1)));
-		completionItem.setInsertTextFormat(InsertTextFormat.Snippet);
-		MockLanguageServer.INSTANCE
-				.setCompletionList(new CompletionList(true, Collections.singletonList(completionItem)));
-		ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project,""));
-		int invokeOffset = 0;
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		assertEquals(1, proposals.length);
-		((LSIncompleteCompletionProposal) proposals[0]).apply(viewer.getDocument());
-		assertEquals("foo and foo", viewer.getDocument().get());
-		// TODO check link edit groups
-	}
-
-	@Test
-	public void testVariableReplacement() throws PartInitException, InvocationTargetException, CoreException {
-		CompletionItem completionItem = createCompletionItem(
-				"${1:$TM_FILENAME_BASE} ${2:$TM_FILENAME} ${3:$TM_FILEPATH} ${4:$TM_DIRECTORY} ${5:$TM_LINE_INDEX} ${6:$TM_LINE_NUMBER} ${7:$TM_CURRENT_LINE} ${8:$TM_SELECTED_TEXT}",
-				CompletionItemKind.Class, new Range(new Position(0, 0), new Position(0, 1)));
-		completionItem.setInsertTextFormat(InsertTextFormat.Snippet);
-		MockLanguageServer.INSTANCE
-				.setCompletionList(new CompletionList(true, Collections.singletonList(completionItem)));
-		String content = "line1\nline2\nline3";
-		IFile testFile = TestUtils.createUniqueTestFile(project, content);
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-		int invokeOffset = 0;
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		assertEquals(1, proposals.length);
-		((LSIncompleteCompletionProposal) proposals[0]).apply(viewer.getDocument());
-
-		int lineIndex = completionItem.getTextEdit().getLeft().getRange().getStart().getLine();
-		String fileNameBase = testFile.getFullPath().removeFileExtension().lastSegment();
-		String filePath = testFile.getRawLocation().toOSString();
-		String fileDir = project.getLocation().toOSString();
-		assertEquals(String.format("%s %s %s %s %d %d %s %s%s", fileNameBase, testFile.getName(), filePath, fileDir,
-				lineIndex, lineIndex + 1, "line1", "l", content.substring(1)), viewer.getDocument().get());
-		// TODO check link edit groups
-	}
-
-	@Test
-	public void testMultipleLS() throws Exception {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClass", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-		IFile testFile = TestUtils.createUniqueTestFileMultiLS(project, "");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 0);
-		assertEquals(2 * items.size(), proposals.length);
-	}
-
-	@Test
-	public void testCompletionExternalFile() throws Exception {
-		List<CompletionItem> items = new ArrayList<>();
-		items.add(createCompletionItem("FirstClassExternal", CompletionItemKind.Class));
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(true, items));
-
-		File file = File.createTempFile("testCompletionExternalFile", ".lspt");
-		try {
-			ITextEditor editor = (ITextEditor) IDE.openEditorOnFileStore(
-					PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI()));
-			ITextViewer viewer = TestUtils.getTextViewer(editor);
-			ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, 0);
-			assertEquals(1, proposals.length);
-			proposals[0].apply(viewer.getDocument());
-			assertEquals("FirstClassExternal", viewer.getDocument().get());
-		} finally {
-			file.delete();
-		}
-	}
-
-	@Test
-	public void testAdditionalInformation() throws Exception {
-		IDocument document = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, "")).getDocument();
-		LSPDocumentInfo info = LanguageServiceAccessor
-				.getLSPDocumentInfosFor(document, capabilities -> capabilities.getCompletionProvider() != null
-						|| capabilities.getSignatureHelpProvider() != null)
-				.get(0);
-		LSIncompleteCompletionProposal completionProposal = new LSIncompleteCompletionProposal(document, 0,
-				new CompletionItem("blah"), info.getLanguageClient());
-		completionProposal.getAdditionalProposalInfo(new NullProgressMonitor()); // check no expection is sent
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/InsertReplaceCompletionTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/InsertReplaceCompletionTest.java
deleted file mode 100644
index 4472ce9..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/InsertReplaceCompletionTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.eclipse.lsp4e.test.completion;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.Collections;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.lsp4e.operations.completion.LSCompletionProposal;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.CompletionItemKind;
-import org.eclipse.lsp4j.CompletionList;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.swt.graphics.Point;
-import org.junit.Test;
-
-public class InsertReplaceCompletionTest extends AbstractCompletionTest {
-
-	@Test
-	public void testInsert() throws Exception {
-		IFile file = TestUtils.createUniqueTestFile(project, "line1\nlineInsertHere");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-		MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, Collections.singletonList(
-			createCompletionItemWithInsertReplace(
-					"Inserted",
-					CompletionItemKind.Text,
-					new Range(new Position(1, 4), new Position(1, 4 + "InsertHere".length())),
-					new Range(new Position(0,0),new Position(0,0)))
-		)));
-
-		int invokeOffset = viewer.getDocument().getLength() - "InsertHere".length();
-		ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
-		LSCompletionProposal lsCompletionProposal = (LSCompletionProposal)proposals[0];
-		lsCompletionProposal.apply(viewer, '\n', 0, invokeOffset);
-		assertEquals("line1\nlineInserted", viewer.getDocument().get());
-		assertEquals(new Point(viewer.getDocument().getLength(), 0), lsCompletionProposal.getSelection(viewer.getDocument()));
-	}
-	
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/declaration/LSBasedHyperlinkTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/declaration/LSBasedHyperlinkTest.java
deleted file mode 100644
index 76e7592..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/declaration/LSBasedHyperlinkTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2020 Pivotal Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Martin Lippert (Pivotal Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.declaration;
-
-import static org.junit.Assert.assertEquals;
-
-import org.eclipse.lsp4e.operations.declaration.LSBasedHyperlink;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.LocationLink;
-import org.junit.Test;
-
-public class LSBasedHyperlinkTest {
-
-	@Test
-	public void testHyperlinkLabelNoLocation() {
-		Location location = new Location();
-		LSBasedHyperlink hyperlink = new LSBasedHyperlink(location, null);
-		
-		assertEquals("Open Declaration", hyperlink.getHyperlinkText());
-	}
-
-	@Test
-	public void testHyperlinkLabelForFileLocation() {
-		Location location = new Location();
-		location.setUri("file:///Users/someuser/testfile");
-		LSBasedHyperlink hyperlink = new LSBasedHyperlink(location, null);
-		
-		assertEquals("Open Declaration - /Users/someuser/testfile", hyperlink.getHyperlinkText());
-	}
-
-	@Test
-	public void testHyperlinkLabelForFileLocationLink() {
-		LocationLink location = new LocationLink();
-		location.setTargetUri("file:///Users/someuser/testfile");
-		LSBasedHyperlink hyperlink = new LSBasedHyperlink(location, null);
-		
-		assertEquals("Open Declaration - /Users/someuser/testfile", hyperlink.getHyperlinkText());
-	}
-
-	@Test
-	public void testHyperlinkLabelForIntroBasedLocationWithoutLabel() {
-		Location location = new Location();
-		location.setUri("http://org.eclipse.ui.intro/execute?command=mycommand%28bindingKey%3DLorg%2Ftest%2Fmvctest%2FMyComponent%3B%2CprojectName%3Dmvctest%29");
-		LSBasedHyperlink hyperlink = new LSBasedHyperlink(location, null);
-		
-		assertEquals("Open Declaration", hyperlink.getHyperlinkText());
-	}
-
-	@Test
-	public void testHyperlinkLabelForIntroBasedLocationLinkWithLabel() {
-		LocationLink location = new LocationLink();
-		location.setTargetUri("http://org.eclipse.ui.intro/execute?command=org.springframework.tooling.ls.eclipse.commons.commands.OpenJavaElementInEditor%28bindingKey%3DLorg%2Ftest%2Fmvctest%2FMyComponent%3B%2CprojectName%3Dmvctest%29&label=MyComponent+-+org.test.mvctest");
-		LSBasedHyperlink hyperlink = new LSBasedHyperlink(location, null);
-		
-		assertEquals("Open Declaration - MyComponent - org.test.mvctest", hyperlink.getHyperlinkText());
-	}
-
-	@Test
-	public void testHyperlinkLabelForRandomURLLocation() {
-		Location location = new Location();
-		location.setUri("http://eclipse.org");
-		LSBasedHyperlink hyperlink = new LSBasedHyperlink(location, null);
-		
-		assertEquals("Open Declaration - http://eclipse.org", hyperlink.getHyperlinkText());
-	}
-
-	@Test
-	public void testHyperlinkLabelForRandomURLLocationLink() {
-		LocationLink location = new LocationLink();
-		location.setTargetUri("http://eclipse.org");
-		LSBasedHyperlink hyperlink = new LSBasedHyperlink(location, null);
-		
-		assertEquals("Open Declaration - http://eclipse.org", hyperlink.getHyperlinkText());
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/definition/DefinitionTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/definition/DefinitionTest.java
deleted file mode 100644
index ccd3c0a..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/definition/DefinitionTest.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.definition;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.lsp4e.operations.declaration.LSBasedHyperlink;
-import org.eclipse.lsp4e.operations.declaration.OpenDeclarationHyperlinkDetector;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.LocationLink;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class DefinitionTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-	private OpenDeclarationHyperlinkDetector hyperlinkDetector;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject("DefinitionTest" + System.currentTimeMillis());
-		hyperlinkDetector = new OpenDeclarationHyperlinkDetector();
-	}
-
-	@Test
-	public void testDefinitionOneLocation() throws Exception {
-		Location location = new Location("file://test", new Range(new Position(0, 0), new Position(0, 10)));
-		MockLanguageServer.INSTANCE.setDefinition(Collections.singletonList(location));
-
-		IFile file = TestUtils.createUniqueTestFile(project, "Example Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		IHyperlink[] hyperlinks = hyperlinkDetector.detectHyperlinks(viewer, new Region(1, 0), true);
-		assertEquals(1, hyperlinks.length);		
-		// TODO add location check
-	}
-
-	@Test
-	public void testDefinitionAndTypeDefinition() throws Exception {
-		Range definitionRange = new Range(new Position(0, 0), new Position(0, 1));
-		MockLanguageServer.INSTANCE.setDefinition(Collections.singletonList(new Location("file://testDefinition", definitionRange)));
-		Range typeDefinitionRange = new Range(new Position(0, 2), new Position(0, 3));
-		MockLanguageServer.INSTANCE.setTypeDefinitions(Collections.singletonList(new LocationLink("file://testTypeDefinition", typeDefinitionRange, typeDefinitionRange)));
-
-		IFile file = TestUtils.createUniqueTestFile(project, "Example Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		IHyperlink[] hyperlinks = hyperlinkDetector.detectHyperlinks(viewer, new Region(1, 0), true);
-		assertEquals(2, hyperlinks.length);
-		Set<String> uris = Arrays.stream(hyperlinks).map(LSBasedHyperlink.class::cast).map(LSBasedHyperlink::getLocation).map(location -> {
-			if (location.isLeft()) {
-				return location.getLeft().getUri();
-			} else {
-				return location.getRight().getTargetUri();
-			}
-		}).collect(Collectors.toSet());
-		assertTrue(uris.contains("file://testDefinition"));
-		assertTrue(uris.contains("file://testTypeDefinition"));
-	}
-
-	@Test
-	public void testDefinitionOneLocationExternalFile() throws Exception {
-		Location location = new Location("file://test", new Range(new Position(0, 0), new Position(0, 10)));
-		MockLanguageServer.INSTANCE.setDefinition(Collections.singletonList(location));
-
-		File file = File.createTempFile("testDocumentLinkExternalFile", ".lspt");
-		try {
-			ITextEditor editor = (ITextEditor) IDE.openInternalEditorOnFileStore(
-					PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI()));
-			ITextViewer viewer = TestUtils.getTextViewer(editor);
-
-			IHyperlink[] hyperlinks = hyperlinkDetector.detectHyperlinks(viewer, new Region(0, 0), true);
-			assertEquals(1, hyperlinks.length);
-		} finally {
-			Files.deleteIfExists(file.toPath());
-		}
-	}
-	
-	@Test
-	public void testDefinitionManyLocation() throws Exception {
-		List<Location> locations = new ArrayList<>();
-		locations.add(new Location("file://test0", new Range(new Position(0, 0), new Position(0, 10))));
-		locations.add(new Location("file://test1", new Range(new Position(1, 0), new Position(1, 10))));
-		locations.add(new Location("file://test2", new Range(new Position(2, 0), new Position(2, 10))));
-		MockLanguageServer.INSTANCE.setDefinition(locations);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "Example Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		IHyperlink[] hyperlinks = hyperlinkDetector.detectHyperlinks(viewer, new Region(1, 0), true);
-		assertEquals(3, hyperlinks.length);
-		// TODO add location check
-	}
-
-	@Test
-	public void testDefinitionNoLocations() throws Exception {
-		MockLanguageServer.INSTANCE.setDefinition(null);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "Example Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		IHyperlink[] hyperlinks = hyperlinkDetector.detectHyperlinks(viewer, new Region(1, 0), true);
-		assertEquals(true, hyperlinks == null);
-	}
-	
-	@Test
-	public void testDefinitionEmptyLocations() throws Exception {
-		MockLanguageServer.INSTANCE.setDefinition(Collections.emptyList());
-
-		IFile file = TestUtils.createUniqueTestFile(project, "Example Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		IHyperlink[] hyperlinks = hyperlinkDetector.detectHyperlinks(viewer, new Region(1, 0), true);
-		assertEquals(true, hyperlinks == null);
-	}
-
-	@Test
-	public void testReturnsPromptly() throws Exception {
-		Location location = new Location("file://test", new Range(new Position(0, 0), new Position(0, 10)));
-		MockLanguageServer.INSTANCE.setDefinition(Collections.singletonList(location));
-
-		IFile file = TestUtils.createUniqueTestFile(project, "Example Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		long duration = System.currentTimeMillis();
-		hyperlinkDetector.detectHyperlinks(viewer, new Region(1, 0), true);
-		duration = System.currentTimeMillis() - duration;
-		Assert.assertTrue(duration < 500);
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/diagnostics/DiagnosticsTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/diagnostics/DiagnosticsTest.java
deleted file mode 100644
index 0aaec9f..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/diagnostics/DiagnosticsTest.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2018 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Lucas Bullen (Red Hat Inc.) - [Bug 528333] Performance problem with diagnostics
- *******************************************************************************/
-package org.eclipse.lsp4e.test.diagnostics;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.function.IntSupplier;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.operations.diagnostics.LSPDiagnosticsToMarkers;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.test.color.ColorTest;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.Diagnostic;
-import org.eclipse.lsp4j.DiagnosticSeverity;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.PublishDiagnosticsParams;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.texteditor.MarkerUtilities;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class DiagnosticsTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-	private LSPDiagnosticsToMarkers diagnosticsToMarkers;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject("DiagnoticsTest" + System.currentTimeMillis());
-		diagnosticsToMarkers = new LSPDiagnosticsToMarkers("dummy");
-	}
-
-	@Test
-	public void testDiagnostics() throws CoreException {
-		IFile file = TestUtils.createUniqueTestFile(project, "Diagnostic Other Text");
-
-		Range range = new Range(new Position(0, 0), new Position(0, 10));
-		List<Diagnostic> diagnostics = new ArrayList<>();
-		diagnostics.add(createDiagnostic("1", "message1", range, DiagnosticSeverity.Error, "source1"));
-		diagnostics.add(createDiagnostic("2", "message2", range, DiagnosticSeverity.Warning, "source2"));
-		diagnostics.add(createDiagnostic("3", "message3", range, DiagnosticSeverity.Information, "source3"));
-		diagnostics.add(createDiagnostic("4", "message4", range, DiagnosticSeverity.Hint, "source4"));
-
-		diagnosticsToMarkers.accept(new PublishDiagnosticsParams(file.getLocationURI().toString(), diagnostics));
-
-		IMarker[] markers = file.findMarkers(LSPDiagnosticsToMarkers.LS_DIAGNOSTIC_MARKER_TYPE, false,
-				IResource.DEPTH_INFINITE);
-		assertEquals(diagnostics.size(), markers.length);
-
-		for (int i = 0; i < diagnostics.size(); i++) {
-			Diagnostic diagnostic = diagnostics.get(i);
-			IMarker marker = markers[i];
-
-			assertEquals(diagnostic.getMessage(), MarkerUtilities.getMessage(marker));
-			assertEquals(0, MarkerUtilities.getCharStart(marker));
-			assertEquals(10, MarkerUtilities.getCharEnd(marker));
-			assertEquals(1, MarkerUtilities.getLineNumber(marker));
-			assertEquals(marker.getAttribute(LSPDiagnosticsToMarkers.LSP_DIAGNOSTIC), diagnostic);
-		}
-
-		diagnosticsToMarkers.accept(new PublishDiagnosticsParams(file.getLocationURI().toString(), Collections.emptyList()));
-
-		markers = file.findMarkers(LSPDiagnosticsToMarkers.LS_DIAGNOSTIC_MARKER_TYPE, false, IResource.DEPTH_INFINITE);
-		assertEquals(0, markers.length);
-	}
-
-	@Test
-	public void testDiagnosticsRangeAfterDocument() throws CoreException {
-		String content = "Diagnostic Other Text";
-		IFile file = TestUtils.createUniqueTestFile(project, content);
-
-		Range range = new Range(new Position(1, 0), new Position(1, 5));
-		List<Diagnostic> diagnostics = Collections
-				.singletonList(createDiagnostic("1", "message1", range, DiagnosticSeverity.Error, "source1"));
-
-		diagnosticsToMarkers.accept(new PublishDiagnosticsParams(file.getLocationURI().toString(), diagnostics));
-
-		IMarker[] markers = file.findMarkers(LSPDiagnosticsToMarkers.LS_DIAGNOSTIC_MARKER_TYPE, false,
-				IResource.DEPTH_INFINITE);
-		assertEquals(diagnostics.size(), markers.length);
-
-		for (int i = 0; i < diagnostics.size(); i++) {
-			Diagnostic diagnostic = diagnostics.get(i);
-			IMarker marker = markers[i];
-
-			assertEquals(diagnostic.getMessage(), MarkerUtilities.getMessage(marker));
-			assertEquals(content.length(), MarkerUtilities.getCharStart(marker));
-			assertEquals(content.length(), MarkerUtilities.getCharEnd(marker));
-			assertEquals(1, MarkerUtilities.getLineNumber(marker));
-			assertEquals(marker.getAttribute(LSPDiagnosticsToMarkers.LSP_DIAGNOSTIC), diagnostic);
-		}
-	}
-
-	@Test
-	public void testDiagnosticsFromVariousLS() throws Exception {
-		String content = "Diagnostic Other Text";
-		IFile file = TestUtils.createUniqueTestFileMultiLS(project, content);
-		Range range = new Range(new Position(1, 0), new Position(1, 0));
-		MockLanguageServer.INSTANCE.setDiagnostics(Collections.singletonList(
-				createDiagnostic("1", "message1", range, DiagnosticSeverity.Error, "source1")));
-		IMarker[] markers = file.findMarkers(LSPDiagnosticsToMarkers.LS_DIAGNOSTIC_MARKER_TYPE, true, IResource.DEPTH_ZERO);
-		assertEquals("no marker should be shown at file initialization", 0, markers.length);
-		TestUtils.openEditor(file);
-		Thread.sleep(300); //give some time to LSs to process
-		markers = file.findMarkers(LSPDiagnosticsToMarkers.LS_DIAGNOSTIC_MARKER_TYPE, true, IResource.DEPTH_ZERO);
-		assertEquals("there should be 1 marker for each language server", 2, markers.length);
-	}
-
-	@Test
-	public void testDiagnosticRedrawingCalls() throws CoreException {
-		IFile file = TestUtils.createUniqueTestFile(project, "Diagnostic Other Text\nDiagnostic Other Text");
-
-		final Range range1 = new Range(new Position(0, 0), new Position(0, 10));
-		final Range range2 = new Range(new Position(1, 0), new Position(1, 10));
-		final Diagnostic pos1Info1 = createDiagnostic("1", "message1", range1, DiagnosticSeverity.Error, "source1");
-		final Diagnostic pos1Info2 = createDiagnostic("2", "message2", range1, DiagnosticSeverity.Error, "source2");
-		final Diagnostic pos2Info2 = createDiagnostic("2", "message2", range2, DiagnosticSeverity.Error, "source2");
-		// Add first
-		confirmResourceChanges(file, pos1Info1, 1);
-		// Info changed
-		confirmResourceChanges(file, pos1Info2, 1);
-		// Location changed
-		confirmResourceChanges(file, pos2Info2, 1);
-		// Location and Info changed
-		confirmResourceChanges(file, pos1Info1, 1);
-		// Nothing has changed (0 resource changes)
-		confirmResourceChanges(file, pos1Info1, 0);
-	}
-
-	@Test
-	public void testDiagnosticsOnExternalFile() throws Exception {
-		MockLanguageServer.INSTANCE.setDiagnostics(Collections.singletonList(new Diagnostic(new Range(new Position(0, 0), new Position(0, 1)), "This is a warning", DiagnosticSeverity.Warning, null)));
-		File file = File.createTempFile("testDiagnosticsOnExternalFile", ".lspt");
-		Font font = null;
-		try {
-			try (
-				FileOutputStream out = new FileOutputStream(file);
-			) {
-				out.write('a');
-			}
-			ITextViewer viewer = TestUtils.getTextViewer(IDE.openEditorOnFileStore(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI())));
-			StyledText widget = viewer.getTextWidget();
-			FontData biggerFont = new FontData(); // bigger font to keep color intact in some pixe (not altered by anti-aliasing)
-			biggerFont.setHeight(40);
-			biggerFont.setLocale(widget.getFont().getFontData()[0].getLocale());
-			biggerFont.setName(widget.getFont().getFontData()[0].getName());
-			biggerFont.setStyle(widget.getFont().getFontData()[0].getStyle());
-			font = new Font(widget.getDisplay(), biggerFont);
-			widget.setFont(font);
-			RGB warningColor = new RGB(244, 200, 45); // from org.eclipse.ui.editors/plugin.xml/extension[@point='org.eclipse.ui.editors.markerAnnotationSpecification']/specification[@annotationType="org.eclipse.ui.workbench.texteditor.warning"]@colorPreferenceValue
-			Assert.assertTrue(new DisplayHelper() {
-				@Override
-				protected boolean condition() {
-					return ColorTest.containsColor(widget, warningColor);
-				}
-			}.waitForCondition(widget.getDisplay(), 3000));
-		} finally {
-			Files.deleteIfExists(file.toPath());
-			if (font != null) {
-				font.dispose();
-			}
-		}
-	}
-
-	private class MarkerRedrawCountListener implements IResourceChangeListener, IntSupplier {
-		private int resourceChanges = 0;
-
-		@Override
-		public int getAsInt() {
-			return resourceChanges;
-		}
-
-		@Override
-		public void resourceChanged(IResourceChangeEvent event) {
-			// Confirm that it is a marker change
-			IResourceDelta delta = event.getDelta();
-			if (delta == null)
-				return;
-			IResourceDelta[] childDeltas = delta.getAffectedChildren();
-			if (childDeltas.length == 0)
-				return;
-			childDeltas = childDeltas[0].getAffectedChildren();
-			if (childDeltas.length == 0 || childDeltas[0].getMarkerDeltas().length == 0)
-				return;
-			resourceChanges++;
-		}
-
-	}
-
-	private void confirmResourceChanges(IFile file, Diagnostic diagnostic, int expectedChanges) {
-		IWorkspace workspace = ResourcesPlugin.getWorkspace();
-		MarkerRedrawCountListener redrawCountListener = new MarkerRedrawCountListener();
-		workspace.addResourceChangeListener(redrawCountListener);
-		try {
-			diagnosticsToMarkers.accept(new PublishDiagnosticsParams(file.getLocationURI().toString(),
-					Collections.singletonList(diagnostic)));
-			new DisplayHelper() {
-				@Override
-				protected boolean condition() {
-					try {
-						IMarker[] markers = file.findMarkers(LSPDiagnosticsToMarkers.LS_DIAGNOSTIC_MARKER_TYPE, false,
-								IResource.DEPTH_INFINITE);
-						for (IMarker marker : markers) {
-							if (marker.getAttribute(LSPDiagnosticsToMarkers.LSP_DIAGNOSTIC).equals(diagnostic)) {
-								return true;
-							}
-						}
-					} catch (CoreException e) {
-						// Caught with False return
-					}
-					return false;
-				}
-			}.waitForCondition(Display.getCurrent(), 5000);
-			assertEquals(expectedChanges, redrawCountListener.getAsInt());
-		} finally {
-			workspace.removeResourceChangeListener(redrawCountListener);
-		}
-
-	}
-
-	private Diagnostic createDiagnostic(String code, String message, Range range, DiagnosticSeverity severity,
-			String source) {
-		Diagnostic diagnostic = new Diagnostic();
-		diagnostic.setCode(code);
-		diagnostic.setMessage(message);
-		diagnostic.setRange(range);
-		diagnostic.setSeverity(severity);
-		diagnostic.setSource(source);
-		return diagnostic;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/documentLink/DocumentLinkTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/documentLink/DocumentLinkTest.java
deleted file mode 100644
index ba48041..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/documentLink/DocumentLinkTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.documentLink;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-
-import java.io.File;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.lsp4e.operations.documentLink.DocumentLinkDetector;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.DocumentLink;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class DocumentLinkTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-	private DocumentLinkDetector documentLinkDetector;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject("DocumentLinkTest" + System.currentTimeMillis());
-		documentLinkDetector = new DocumentLinkDetector();
-	}
-
-	@Test
-	public void testDocumentLinkNoResults() throws Exception {
-		IFile file = TestUtils.createUniqueTestFile(project, "Example Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		IHyperlink[] hyperlinks = documentLinkDetector.detectHyperlinks(viewer, new Region(0, 0), true);
-		assertArrayEquals(null, hyperlinks);
-	}
-
-	@Test
-	public void testDocumentLink() throws Exception {
-		List<DocumentLink> links = new ArrayList<>();
-		links.add(new DocumentLink(new Range(new Position(0, 9), new Position(0, 15)), "file://test0"));
-		MockLanguageServer.INSTANCE.setDocumentLinks(links);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "not_link <link>");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		IHyperlink[] hyperlinks = documentLinkDetector.detectHyperlinks(viewer, new Region(13, 0), true);
-		assertEquals(1, hyperlinks.length);
-		assertEquals("file://test0", hyperlinks[0].getHyperlinkText());
-	}
-
-	@Test
-	public void testDocumentLinkExternalFile() throws Exception {
-		List<DocumentLink> links = new ArrayList<>();
-		links.add(new DocumentLink(new Range(new Position(0, 9), new Position(0, 15)), "file://test0"));
-		MockLanguageServer.INSTANCE.setDocumentLinks(links);
-
-		File file = File.createTempFile("testDocumentLinkExternalFile", ".lspt");
-		try {
-			ITextEditor editor = (ITextEditor) IDE.openInternalEditorOnFileStore(
-					PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI()));
-			ITextViewer viewer = TestUtils.getTextViewer(editor);
-	
-			IHyperlink[] hyperlinks = documentLinkDetector.detectHyperlinks(viewer, new Region(13, 0), true);
-			assertEquals(1, hyperlinks.length);
-			assertEquals("file://test0", hyperlinks[0].getHyperlinkText());
-		} finally {
-			Files.deleteIfExists(file.toPath());
-		}
-	}
-
-	@Test
-	public void testDocumentLinkWrongRegion() throws Exception {
-		List<DocumentLink> links = new ArrayList<>();
-		links.add(new DocumentLink(new Range(new Position(0, 9), new Position(0, 15)), "file://test0"));
-		MockLanguageServer.INSTANCE.setDocumentLinks(links);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "not_link <link>");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		IHyperlink[] hyperlinks = documentLinkDetector.detectHyperlinks(viewer, new Region(0, 0), true);
-		assertArrayEquals(null, hyperlinks);
-	}
-
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidChangeTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidChangeTest.java
deleted file mode 100644
index 77ea4c8..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidChangeTest.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016-2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Mickael Istria (Red Hat Inc.)
- *******************************************************************************/
-package org.eclipse.lsp4e.test.edit;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.io.File;
-import java.nio.file.Files;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Predicate;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.DidChangeTextDocumentParams;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.TextDocumentContentChangeEvent;
-import org.eclipse.lsp4j.TextDocumentSyncKind;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class DocumentDidChangeTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject("DocumentDidChangeTest"+System.currentTimeMillis());
-	}
-
-	@Test
-	public void testIncrementalSync() throws Exception {
-		MockLanguageServer.INSTANCE.getInitializeResult().getCapabilities()
-				.setTextDocumentSync(TextDocumentSyncKind.Incremental);
-
-		IFile testFile = TestUtils.createUniqueTestFile(project, "");
-		IEditorPart editor = TestUtils.openEditor(testFile);
-		ITextViewer viewer = TestUtils.getTextViewer(editor);
-		LanguageServiceAccessor.getLanguageServers(viewer.getDocument(), new Predicate<ServerCapabilities>() {
-			@Override
-			public boolean test(ServerCapabilities t) {
-				TextDocumentSyncKind syncKind = getDocumentSyncKind(t);
-				assertEquals(TextDocumentSyncKind.Incremental, syncKind);
-				return true;
-			}
-		});
-
-		// Test initial insert
-		CompletableFuture<DidChangeTextDocumentParams> didChangeExpectation = new CompletableFuture<DidChangeTextDocumentParams>();
-		MockLanguageServer.INSTANCE.setDidChangeCallback(didChangeExpectation);
-		viewer.getDocument().replace(0, 0, "Hello");
-		DidChangeTextDocumentParams lastChange = didChangeExpectation.get(1000, TimeUnit.MILLISECONDS);
-		assertNotNull(lastChange.getContentChanges());
-		assertEquals(1, lastChange.getContentChanges().size());
-		TextDocumentContentChangeEvent change0 = lastChange.getContentChanges().get(0);
-		Range range = change0.getRange();
-		assertNotNull(range);
-		assertEquals(0, range.getStart().getLine());
-		assertEquals(0, range.getStart().getCharacter());
-		assertEquals(0, range.getEnd().getLine());
-		assertEquals(0, range.getEnd().getCharacter());
-		assertEquals(Integer.valueOf(0), change0.getRangeLength());
-		assertEquals("Hello", change0.getText());
-
-		// Test additional insert
-		didChangeExpectation = new CompletableFuture<DidChangeTextDocumentParams>();
-		MockLanguageServer.INSTANCE.setDidChangeCallback(didChangeExpectation);
-		viewer.getDocument().replace(5, 0, " ");
-		lastChange = didChangeExpectation.get(1000, TimeUnit.MILLISECONDS);
-		assertNotNull(lastChange.getContentChanges());
-		assertEquals(1, lastChange.getContentChanges().size());
-		change0 = lastChange.getContentChanges().get(0);
-		range = change0.getRange();
-		assertNotNull(range);
-		assertEquals(0, range.getStart().getLine());
-		assertEquals(5, range.getStart().getCharacter());
-		assertEquals(0, range.getEnd().getLine());
-		assertEquals(5, range.getEnd().getCharacter());
-		assertEquals(Integer.valueOf(0), change0.getRangeLength());
-		assertEquals(" ", change0.getText());
-
-		// test replace
-		didChangeExpectation = new CompletableFuture<DidChangeTextDocumentParams>();
-		MockLanguageServer.INSTANCE.setDidChangeCallback(didChangeExpectation);
-		viewer.getDocument().replace(0, 5, "Hallo");
-		lastChange = didChangeExpectation.get(1000, TimeUnit.MILLISECONDS);
-		assertNotNull(lastChange.getContentChanges());
-		assertEquals(1, lastChange.getContentChanges().size());
-		change0 = lastChange.getContentChanges().get(0);
-		range = change0.getRange();
-		assertNotNull(range);
-		assertEquals(0, range.getStart().getLine());
-		assertEquals(0, range.getStart().getCharacter());
-		assertEquals(0, range.getEnd().getLine());
-		assertEquals(5, range.getEnd().getCharacter());
-		assertEquals(Integer.valueOf(5), change0.getRangeLength());
-		assertEquals("Hallo", change0.getText());
-	}
-
-	@Test
-	public void testIncrementalSync_deleteLastLine() throws Exception {
-		MockLanguageServer.INSTANCE.getInitializeResult().getCapabilities()
-				.setTextDocumentSync(TextDocumentSyncKind.Incremental);
-
-		String multiLineText = "line1\nline2\nline3\n";
-		IFile testFile = TestUtils.createUniqueTestFile(project, multiLineText);
-		IEditorPart editor = TestUtils.openEditor(testFile);
-		ITextViewer viewer = TestUtils.getTextViewer(editor);
-		LanguageServiceAccessor.getLanguageServers(viewer.getDocument(), new Predicate<ServerCapabilities>() {
-			@Override
-			public boolean test(ServerCapabilities t) {
-				assertEquals(TextDocumentSyncKind.Incremental, getDocumentSyncKind(t));
-				return true;
-			}
-		});
-
-		// Test initial insert
-		CompletableFuture<DidChangeTextDocumentParams> didChangeExpectation = new CompletableFuture<DidChangeTextDocumentParams>();
-		MockLanguageServer.INSTANCE.setDidChangeCallback(didChangeExpectation);
-		viewer.getDocument().replace("line1\nline2\n".length(), "line3\n".length(), "");
-		DidChangeTextDocumentParams lastChange = didChangeExpectation.get(1000, TimeUnit.MILLISECONDS);
-		assertNotNull(lastChange.getContentChanges());
-		assertEquals(1, lastChange.getContentChanges().size());
-		TextDocumentContentChangeEvent change0 = lastChange.getContentChanges().get(0);
-		Range range = change0.getRange();
-		assertNotNull(range);
-		assertEquals(2, range.getStart().getLine());
-		assertEquals(0, range.getStart().getCharacter());
-		assertEquals(3, range.getEnd().getLine());
-		assertEquals(0, range.getEnd().getCharacter());
-		assertEquals(Integer.valueOf(6), change0.getRangeLength());
-		assertEquals("", change0.getText());
-	}
-
-	@Test
-	public void testFullSync() throws Exception {
-		MockLanguageServer.INSTANCE.getInitializeResult().getCapabilities()
-				.setTextDocumentSync(TextDocumentSyncKind.Full);
-
-		IFile testFile = TestUtils.createUniqueTestFile(project, "");
-		IEditorPart editor = TestUtils.openEditor(testFile);
-		ITextViewer viewer = TestUtils.getTextViewer(editor);
-		LanguageServiceAccessor.getLanguageServers(viewer.getDocument(), new Predicate<ServerCapabilities>() {
-			@Override
-			public boolean test(ServerCapabilities t) {
-				assertEquals(TextDocumentSyncKind.Full, getDocumentSyncKind(t));
-				return true;
-			}
-		});
-		// Test initial insert
-		CompletableFuture<DidChangeTextDocumentParams> didChangeExpectation = new CompletableFuture<DidChangeTextDocumentParams>();
-		MockLanguageServer.INSTANCE.setDidChangeCallback(didChangeExpectation);
-		String text = "Hello";
-		viewer.getDocument().replace(0, 0, text);
-		DidChangeTextDocumentParams lastChange = didChangeExpectation.get(1000, TimeUnit.MILLISECONDS);
-		assertNotNull(lastChange.getContentChanges());
-		assertEquals(1, lastChange.getContentChanges().size());
-		TextDocumentContentChangeEvent change0 = lastChange.getContentChanges().get(0);
-		assertEquals(text, change0.getText());
-
-		// Test additional insert
-		didChangeExpectation = new CompletableFuture<DidChangeTextDocumentParams>();
-		MockLanguageServer.INSTANCE.setDidChangeCallback(didChangeExpectation);
-		viewer.getDocument().replace(5, 0, " World");
-		lastChange = didChangeExpectation.get(1000, TimeUnit.MILLISECONDS);
-		assertNotNull(lastChange.getContentChanges());
-		assertEquals(1, lastChange.getContentChanges().size());
-		change0 = lastChange.getContentChanges().get(0);
-		assertEquals("Hello World", change0.getText());
-	}
-
-	@Test
-	public void testFullSyncExternalFile() throws Exception {
-		MockLanguageServer.INSTANCE.getInitializeResult().getCapabilities()
-				.setTextDocumentSync(TextDocumentSyncKind.Full);
-
-		File file = File.createTempFile("testFullSyncExternalFile", ".lspt");
-		try {
-			IEditorPart editor = IDE.openEditorOnFileStore(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI()));
-			ITextViewer viewer = TestUtils.getTextViewer(editor);
-			LanguageServiceAccessor.getLanguageServers(viewer.getDocument(), new Predicate<ServerCapabilities>() {
-				@Override
-				public boolean test(ServerCapabilities t) {
-					assertEquals(TextDocumentSyncKind.Full, getDocumentSyncKind(t));
-					return true;
-				}
-			});
-			// Test initial insert
-			CompletableFuture<DidChangeTextDocumentParams> didChangeExpectation = new CompletableFuture<DidChangeTextDocumentParams>();
-			MockLanguageServer.INSTANCE.setDidChangeCallback(didChangeExpectation);
-			String text = "Hello";
-			viewer.getDocument().replace(0, 0, text);
-			DidChangeTextDocumentParams lastChange = didChangeExpectation.get(1000, TimeUnit.MILLISECONDS);
-			assertNotNull(lastChange.getContentChanges());
-			assertEquals(1, lastChange.getContentChanges().size());
-			TextDocumentContentChangeEvent change0 = lastChange.getContentChanges().get(0);
-			assertEquals(text, change0.getText());
-	
-			// Test additional insert
-			didChangeExpectation = new CompletableFuture<DidChangeTextDocumentParams>();
-			MockLanguageServer.INSTANCE.setDidChangeCallback(didChangeExpectation);
-			viewer.getDocument().replace(5, 0, " World");
-			lastChange = didChangeExpectation.get(1000, TimeUnit.MILLISECONDS);
-			assertNotNull(lastChange.getContentChanges());
-			assertEquals(1, lastChange.getContentChanges().size());
-			change0 = lastChange.getContentChanges().get(0);
-			assertEquals("Hello World", change0.getText());
-		} finally {
-			Files.deleteIfExists(file.toPath());
-		}
-	}
-
-
-	private TextDocumentSyncKind getDocumentSyncKind(ServerCapabilities t) {
-		TextDocumentSyncKind syncKind = null;
-		if (t.getTextDocumentSync().isLeft()) {
-			syncKind = t.getTextDocumentSync().getLeft();
-		} else if (t.getTextDocumentSync().isRight()) {
-			syncKind = t.getTextDocumentSync().getRight().getChange();
-		}
-		return syncKind;
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidCloseTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidCloseTest.java
deleted file mode 100644
index fd888d4..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidCloseTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.edit;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.io.File;
-import java.nio.file.Files;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.DidCloseTextDocumentParams;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class DocumentDidCloseTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-
-	@Test
-	public void testClose() throws Exception {
-		IProject project = TestUtils.createProject("DocumentDidCloseTest" + System.currentTimeMillis());
-
-		IFile testFile = TestUtils.createUniqueTestFile(project, "");
-		IEditorPart editor = TestUtils.openEditor(testFile);
-
-		// Force LS to initialize and open file
-		LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(testFile), capabilites -> Boolean.TRUE);
-
-		CompletableFuture<DidCloseTextDocumentParams> didCloseExpectation = new CompletableFuture<DidCloseTextDocumentParams>();
-		MockLanguageServer.INSTANCE.setDidCloseCallback(didCloseExpectation);
-
-		TestUtils.closeEditor(editor, false);
-		DidCloseTextDocumentParams lastChange = didCloseExpectation.get(1000, TimeUnit.MILLISECONDS);
-		assertNotNull(lastChange.getTextDocument());
-		assertEquals(LSPEclipseUtils.toUri(testFile).toString(), lastChange.getTextDocument().getUri());
-	}
-
-	@Test
-	public void testCloseExternalFile() throws Exception {
-		File testFile = File.createTempFile("testCloseExternalFile", ".lspt");
-		try {
-			IEditorPart editor = IDE.openEditorOnFileStore(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(testFile.toURI()));
-	
-			// Force LS to initialize and open file
-			LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(editor.getEditorInput()), capabilites -> Boolean.TRUE);
-	
-			CompletableFuture<DidCloseTextDocumentParams> didCloseExpectation = new CompletableFuture<DidCloseTextDocumentParams>();
-			MockLanguageServer.INSTANCE.setDidCloseCallback(didCloseExpectation);
-	
-			TestUtils.closeEditor(editor, false);
-	
-			DidCloseTextDocumentParams lastChange = didCloseExpectation.get(1000, TimeUnit.MILLISECONDS);
-			assertNotNull(lastChange.getTextDocument());
-			assertEquals(LSPEclipseUtils.toUri(testFile).toString(), lastChange.getTextDocument().getUri());
-		} finally {
-			Files.deleteIfExists(testFile.toPath());
-		}
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidOpenTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidOpenTest.java
deleted file mode 100644
index a2a9e29..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidOpenTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Pivotal Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Martin Lippert (Pivotal Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.edit;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.io.File;
-import java.nio.file.Files;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.DidOpenTextDocumentParams;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class DocumentDidOpenTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-
-	@Before
-	public void setUp() throws CoreException {
-		project =  TestUtils.createProject("DocumentDidChangeTest"+System.currentTimeMillis());
-	}
-
-	@Test
-	public void testOpen() throws Exception {
-		IFile testFile = TestUtils.createUniqueTestFile(project, "");
-		
-		CompletableFuture<DidOpenTextDocumentParams> didOpenExpectation = new CompletableFuture<DidOpenTextDocumentParams>();
-		MockLanguageServer.INSTANCE.setDidOpenCallback(didOpenExpectation);
-
-		IEditorPart editor = TestUtils.openEditor(testFile);
-
-		// Force LS to initialize and open file
-		LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(testFile), capabilites -> Boolean.TRUE);
-
-		DidOpenTextDocumentParams lastOpen = didOpenExpectation.get(1000, TimeUnit.MILLISECONDS);
-		assertNotNull(lastOpen.getTextDocument());
-		assertEquals("lspt", lastOpen.getTextDocument().getLanguageId());
-	}
-
-	@Test
-	public void testOpenExternalFile() throws Exception {
-		File file = File.createTempFile("testOpenExternalFile", ".lspt");
-		try {
-			CompletableFuture<DidOpenTextDocumentParams> didOpenExpectation = new CompletableFuture<DidOpenTextDocumentParams>();
-			MockLanguageServer.INSTANCE.setDidOpenCallback(didOpenExpectation);
-			IEditorPart editor = IDE.openEditorOnFileStore(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI()));
-			// Force LS to initialize and open file
-			LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(editor.getEditorInput()), capabilites -> Boolean.TRUE);
-	
-			DidOpenTextDocumentParams lastOpen = didOpenExpectation.get(1000, TimeUnit.MILLISECONDS);
-			assertNotNull(lastOpen.getTextDocument());
-			assertEquals("lspt", lastOpen.getTextDocument().getLanguageId());
-		} finally {
-			Files.deleteIfExists(file.toPath());
-		}
-	}
-
-	@Test
-	public void testOpenWithSpecificLanguageId() throws Exception {
-		IFile testFile = TestUtils.createUniqueTestFile(project, "lspt-different", "");
-		
-		CompletableFuture<DidOpenTextDocumentParams> didOpenExpectation = new CompletableFuture<DidOpenTextDocumentParams>();
-		MockLanguageServer.INSTANCE.setDidOpenCallback(didOpenExpectation);
-
-		IEditorPart editor = TestUtils.openEditor(testFile);
-
-		// Force LS to initialize and open file
-		LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(testFile), capabilites -> Boolean.TRUE);
-
-		DidOpenTextDocumentParams lastOpen = didOpenExpectation.get(1000, TimeUnit.MILLISECONDS);
-		assertNotNull(lastOpen.getTextDocument());
-		assertEquals("differentLanguageId", lastOpen.getTextDocument().getLanguageId());
-
-		((AbstractTextEditor)editor).close(false);
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidSaveTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidSaveTest.java
deleted file mode 100644
index 4a39d3e..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentDidSaveTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2018 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Martin Lippert (Pivotal Inc.) - fixed instability
- *******************************************************************************/
-package org.eclipse.lsp4e.test.edit;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.io.File;
-import java.nio.file.Files;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.LSDisplayHelper;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.DidSaveTextDocumentParams;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class DocumentDidSaveTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-
-	@Before
-	public void setUp() throws CoreException {
-		project =  TestUtils.createProject(getClass().getName() + System.currentTimeMillis());
-	}
-
-	@Test
-	public void testSave() throws Exception {
-		IFile testFile = TestUtils.createUniqueTestFile(project, "");
-		IEditorPart editor = TestUtils.openEditor(testFile);
-		ITextViewer viewer = TestUtils.getTextViewer(editor);
-
-		// make sure that timestamp after save will differ from creation time (no better idea at the moment)
-		testFile.setLocalTimeStamp(0);
-
-		// Force LS to initialize and open file
-		LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(testFile), capabilites -> Boolean.TRUE);
-		CompletableFuture<DidSaveTextDocumentParams> didSaveExpectation = new CompletableFuture<DidSaveTextDocumentParams>();
-		MockLanguageServer.INSTANCE.setDidSaveCallback(didSaveExpectation);
-
-		// simulate change in file
-		viewer.getDocument().replace(0, 0, "Hello");
-		editor.doSave(new NullProgressMonitor());
-
-		new LSDisplayHelper(() -> {
-			try {
-				DidSaveTextDocumentParams lastChange = didSaveExpectation.get(10, TimeUnit.MILLISECONDS);
-				assertNotNull(lastChange.getTextDocument());
-				assertEquals(LSPEclipseUtils.toUri(testFile).toString(), lastChange.getTextDocument().getUri());
-				return true;
-			} catch (TimeoutException | InterruptedException | ExecutionException e) {
-				return false;
-			}
-		}).waitForCondition(Display.getCurrent(), 2000);
-	}
-
-	@Test
-	public void testSaveExternalFile() throws Exception {
-		File file = File.createTempFile("testSaveExternalFile", ".lspt");
-		try {
-			IEditorPart editor = IDE.openEditorOnFileStore(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI()));
-			ITextViewer viewer = TestUtils.getTextViewer(editor);
-	
-			// make sure that timestamp after save will differ from creation time (no better idea at the moment)
-//			testFile.setLocalTimeStamp(0);
-	
-			// Force LS to initialize and open file
-			LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(editor.getEditorInput()), capabilites -> Boolean.TRUE);
-			CompletableFuture<DidSaveTextDocumentParams> didSaveExpectation = new CompletableFuture<DidSaveTextDocumentParams>();
-			MockLanguageServer.INSTANCE.setDidSaveCallback(didSaveExpectation);
-	
-			// simulate change in file
-			viewer.getDocument().replace(0, 0, "Hello");
-			editor.doSave(new NullProgressMonitor());
-	
-			new LSDisplayHelper(() -> {
-				try {
-					DidSaveTextDocumentParams lastChange = didSaveExpectation.get(10, TimeUnit.MILLISECONDS);
-					assertNotNull(lastChange.getTextDocument());
-					assertEquals(LSPEclipseUtils.toUri(file).toString(), lastChange.getTextDocument().getUri());
-					return true;
-				} catch (TimeoutException | InterruptedException | ExecutionException e) {
-					return false;
-				}
-			}).waitForCondition(Display.getCurrent(), 2000);
-		} finally {
-			Files.deleteIfExists(file.toPath());
-		}
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentRevertAndCloseTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentRevertAndCloseTest.java
deleted file mode 100644
index db4faaf..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/DocumentRevertAndCloseTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Pivotal Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Alex Boyko (Pivotal Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.edit;
-
-import static org.junit.Assert.assertTrue;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class DocumentRevertAndCloseTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-
-	@Before
-	public void setUp() throws CoreException {
-		project =  TestUtils.createProject(getClass().getName() + System.currentTimeMillis());
-	}
-
-	@Test
-	public void testShutdownLsp() throws Exception {
-		IFile testFile = TestUtils.createUniqueTestFile(project, "Hello!");
-		IEditorPart editor = TestUtils.openEditor(testFile);
-		ITextViewer viewer = TestUtils.getTextViewer(editor);
-
-		// make sure that timestamp after save will differ from creation time (no better idea at the moment)
-		testFile.setLocalTimeStamp(0);
-
-		// Force LS to initialize and open file
-		LanguageServiceAccessor.getLanguageServers(LSPEclipseUtils.getDocument(testFile), capabilites -> Boolean.TRUE);
-		
-		viewer.getDocument().replace(0, 0, "Bye!");
-		((AbstractTextEditor)editor).doRevertToSaved();
-		((AbstractTextEditor)editor).getSite().getPage().closeEditor(editor, false);
-		
-		Display display = PlatformUI.getWorkbench().getDisplay();
-		assertTrue(new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return !MockLanguageServer.INSTANCE.isRunning();
-			}
-			
-		}.waitForCondition(display, 3000));
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/LSPEclipseUtilsTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/LSPEclipseUtilsTest.java
deleted file mode 100644
index aae65b4..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/LSPEclipseUtilsTest.java
+++ /dev/null
@@ -1,476 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Remy Suen <remy.suen@gmail.com> - Bug 520052 - Rename assumes that workspace edits are in reverse order
- *******************************************************************************/
-package org.eclipse.lsp4e.test.edit;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedList;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.internal.utils.FileUtil;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.NoErrorLoggedRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4j.CreateFile;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.RenameFile;
-import org.eclipse.lsp4j.ResourceOperation;
-import org.eclipse.lsp4j.TextDocumentEdit;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.VersionedTextDocumentIdentifier;
-import org.eclipse.lsp4j.WorkspaceEdit;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-import org.junit.Assert;
-import org.junit.Assume;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class LSPEclipseUtilsTest {
-
-	@Rule public NoErrorLoggedRule rule = new NoErrorLoggedRule(LanguageServerPlugin.getDefault().getLog());
-	@Rule public AllCleanRule clear = new AllCleanRule();
-
-	@Test
-	public void testOpenInEditorExternalFile() throws Exception {
-		IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-		File externalFile = File.createTempFile("externalFile", ".txt");
-		try {
-			Location location = new Location(LSPEclipseUtils.toUri(externalFile).toString(), new Range(new Position(0, 0), new Position(0, 0)));
-			LSPEclipseUtils.openInEditor(location, page);
-		} finally {
-			page.closeEditor(page.getActiveEditor(), false);
-			externalFile.delete();
-		}
-	}
-
-	@Test
-	public void testWorkspaceEdit() throws Exception {
-		IProject p = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-		IFile f = TestUtils.createFile(p, "dummy", "Here");
-		AbstractTextEditor editor = (AbstractTextEditor)TestUtils.openEditor(f);
-		try {
-			WorkspaceEdit workspaceEdit = new WorkspaceEdit(Collections.singletonMap(
-				LSPEclipseUtils.toUri(f).toString(),
-				Collections.singletonList(new TextEdit(new Range(new Position(0, 0), new Position(0, 0)), "insert"))));
-			LSPEclipseUtils.applyWorkspaceEdit(workspaceEdit);
-			Assert.assertEquals("insertHere", ((StyledText)editor.getAdapter(Control.class)).getText());
-			Assert.assertEquals("insertHere", editor.getDocumentProvider().getDocument(editor.getEditorInput()).get());
-		} finally {
-			editor.close(false);
-			p.delete(true, new NullProgressMonitor());
-		}
-	}
-
-	@Test
-	public void testWorkspaceEditMultipleChanges() throws Exception {
-		IProject p = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-		IFile f = TestUtils.createFile(p, "dummy", "Here\nHere2");
-		AbstractTextEditor editor = (AbstractTextEditor)TestUtils.openEditor(f);
-		try {
-			LinkedList<TextEdit> edits = new LinkedList<TextEdit>();
-			// order the TextEdits from the top of the document to the bottom
-			edits.add(new TextEdit(new Range(new Position(0, 0), new Position(0, 0)), "abc"));
-			edits.add(new TextEdit(new Range(new Position(1, 0), new Position(1, 0)), "abc"));
-			WorkspaceEdit workspaceEdit = new WorkspaceEdit(Collections.singletonMap(
-				LSPEclipseUtils.toUri(f).toString(), edits));
-			// they should be applied from bottom to top
-			LSPEclipseUtils.applyWorkspaceEdit(workspaceEdit);
-			Assert.assertEquals("abcHere\nabcHere2", ((StyledText) editor.getAdapter(Control.class)).getText());
-			Assert.assertEquals("abcHere\nabcHere2",
-					editor.getDocumentProvider().getDocument(editor.getEditorInput()).get());
-		} finally {
-			editor.close(false);
-			p.delete(true, new NullProgressMonitor());
-		}
-	}
-
-	@Test
-	public void testWorkspaceEdit_CreateAndPopulateFile() throws Exception {
-		IProject p = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-		IFile file = p.getFile("test-file.test");
-		try {
-			LinkedList<Either<TextDocumentEdit, ResourceOperation>> edits = new LinkedList<>();
-			// order the TextEdits from the top of the document to the bottom
-			String uri = file.getLocation().toFile().toURI().toString();
-			edits.add(Either.forRight(new CreateFile(uri)));
-			edits.add(Either.forLeft(
-					new TextDocumentEdit(new VersionedTextDocumentIdentifier(uri, null), Collections.singletonList(
-							new TextEdit(new Range(new Position(0, 0), new Position(0, 0)), "abcHere\nabcHere2")))));
-			WorkspaceEdit workspaceEdit = new WorkspaceEdit(edits);
-			// they should be applied from bottom to top
-			LSPEclipseUtils.applyWorkspaceEdit(workspaceEdit);
-			assertTrue(file.exists());
-			assertEquals("abcHere\nabcHere2", new String(Files.readAllBytes(file.getLocation().toFile().toPath())));
-		} finally {
-			p.delete(true, new NullProgressMonitor());
-		}
-	}
-
-	@Test
-	public void testURIToResourceMapping() throws CoreException { // bug 508841
-		IProject project1 = null;
-		IProject project2 = null;
-		try {
-			project1 = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-			IFile file = project1.getFile("res");
-			file.create(new ByteArrayInputStream(new byte[0]), true, new NullProgressMonitor());
-			Assert.assertEquals(file, LSPEclipseUtils.findResourceFor(file.getLocationURI().toString()));
-
-			project1.getFile("suffix").create(new ByteArrayInputStream(new byte[0]), true, new NullProgressMonitor());
-			project2 = TestUtils.createProject(project1.getName() + "suffix");
-			Assert.assertEquals(project2, LSPEclipseUtils.findResourceFor(project2.getLocationURI().toString()));
-		} finally {
-			TestUtils.delete(project1, project2);
-		}
-	}
-
-	@Test
-	public void testLinkedResourceURIToResourceMapping() throws CoreException, IOException { // bug 577159
-		IProject project1 = null;
-		Path externalFile = null;
-		Path externalFolder = null;
-		try {
-			externalFile = Files.createTempFile("tmp_file-", null);
-			externalFolder = Files.createTempDirectory("tmp_dir-");
-
-			project1 = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-
-			IFile linkedFile = project1.getFile("linked_file");
-			linkedFile.createLink(externalFile.toUri(), 0, new NullProgressMonitor());
-			Assert.assertTrue(linkedFile.isLinked());
-			Assert.assertEquals(linkedFile, LSPEclipseUtils.findResourceFor(linkedFile.getLocationURI().toString()));
-
-			IFolder linkedFolder = project1.getFolder("linked_folder");
-			linkedFolder.createLink(externalFolder.toUri(), 0, new NullProgressMonitor());
-			Assert.assertTrue(linkedFolder.isLinked());
-			Assert.assertEquals(linkedFolder,
-					LSPEclipseUtils.findResourceFor(linkedFolder.getLocationURI().toString()));
-
-			Files.createFile(externalFolder.resolve("child"));
-			IFile linkedFolderFile = linkedFolder.getFile("child");
-			Assert.assertEquals(linkedFolderFile,
-					LSPEclipseUtils.findResourceFor(linkedFolderFile.getLocationURI().toString()));
-		} finally {
-			TestUtils.delete(project1);
-			TestUtils.delete(externalFile, externalFolder);
-		}
-	}
-
-	@Test
-	public void testVirtualResourceURIToResourceMapping() throws CoreException, IOException { // bug 577159
-		IProject project1 = null;
-		Path externalFile = null;
-		Path externalFolder = null;
-		try {
-			externalFile = Files.createTempFile("tmp_file-", null);
-			externalFolder = Files.createTempDirectory("tmp_dir-");
-
-			project1 = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-
-			IFolder virtualFolder = project1.getFolder("virtual_folder");
-			virtualFolder.create(IResource.VIRTUAL, true, new NullProgressMonitor());
-
-			Assert.assertEquals(virtualFolder.isVirtual(), true);
-			Assert.assertEquals(virtualFolder.getLocationURI().toString(), "virtual:/virtual");
-			Assert.assertEquals(virtualFolder.getRawLocationURI().toString(), "virtual:/virtual");
-			// getLocationURI()/getRawLocationURI() of virtual folders cannot be used to resolve a workspace resource
-			// thus LSPEclipseUtils.findResourceFor() returns null
-			Assert.assertEquals(null, LSPEclipseUtils.findResourceFor(virtualFolder.getLocationURI().toString()));
-
-			IFile linkedFile = virtualFolder.getFile("linked_file");
-			linkedFile.createLink(externalFile.toUri(), 0, new NullProgressMonitor());
-			Assert.assertTrue(linkedFile.isLinked());
-			Assert.assertEquals(linkedFile, LSPEclipseUtils.findResourceFor(linkedFile.getLocationURI().toString()));
-
-			IFolder linkedFolder = virtualFolder.getFolder("linked_folder");
-			linkedFolder.createLink(externalFolder.toUri(), 0, new NullProgressMonitor());
-			Assert.assertTrue(linkedFolder.isLinked());
-			Assert.assertEquals(linkedFolder,
-					LSPEclipseUtils.findResourceFor(linkedFolder.getLocationURI().toString()));
-
-			Files.createFile(externalFolder.resolve("child"));
-			IFile linkedFolderFile = linkedFolder.getFile("child");
-			Assert.assertEquals(linkedFolderFile,
-					LSPEclipseUtils.findResourceFor(linkedFolderFile.getLocationURI().toString()));
-		} finally {
-			TestUtils.delete(project1);
-			TestUtils.delete(externalFile, externalFolder);
-		}
-	}
-
-	@Test
-	public void testCustomURIToResourceMapping() throws CoreException { // bug 576425
-	   IProject project = null;
-	   try {
-		    URI uri = URI.create("other://a/res.txt");
-			project = TestUtils.createProject(getClass().getSimpleName() + uri.getScheme());
-			IFile file = project.getFile("res.txt");
-			file.createLink(uri, IResource.REPLACE | IResource.ALLOW_MISSING_LOCAL, new NullProgressMonitor());
-			Assert.assertEquals(file, LSPEclipseUtils.findResourceFor(file.getLocationURI().toString()));
-			Assert.assertEquals(file, LSPEclipseUtils.getFileHandle(file.getLocationURI().toString()));
-		} finally {
-			if (project != null) { project.delete(true, new NullProgressMonitor()); }
-		}
-	}
-
-	@Test
-	public void testCustomResourceToURIMapping() throws CoreException { // bug 576425
-	   IProject project = null;
-	   try {
-		    URI uri = URI.create("other://res.txt");
-			project = TestUtils.createProject(getClass().getSimpleName() + uri.getScheme());
-			IFile file = project.getFile("res.txt");
-			file.createLink(uri, IResource.REPLACE | IResource.ALLOW_MISSING_LOCAL, new NullProgressMonitor());
-			Assert.assertEquals(LSPEclipseUtils.toUri(file).toString(), "other://a/res.txt");
-		} finally {
-			if (project != null) { project.delete(true, new NullProgressMonitor()); }
-		}
-	}
-
-	@Test
-	public void testApplyTextEditLongerThanOrigin() throws Exception {
-		IProject project = null;
-		IEditorPart editor = null;
-		try {
-			project = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-			IFile file = TestUtils.createUniqueTestFile(project, "line1\nlineInsertHere");
-			editor = TestUtils.openEditor(file);
-			ITextViewer viewer = TestUtils.getTextViewer(editor);
-			TextEdit textEdit = new TextEdit(new Range(new Position(1, 4), new Position(1, 4 + "InsertHere".length())), "Inserted");
-			IDocument document = viewer.getDocument();
-			LSPEclipseUtils.applyEdit(textEdit, document);
-			Assert.assertEquals("line1\nlineInserted", document.get());
-		} finally {
-			TestUtils.closeEditor(editor, false);
-			if (project != null) { project.delete(true, new NullProgressMonitor()); }
-		}
-	}
-
-	@Test
-	public void testApplyTextEditShorterThanOrigin() throws Exception {
-		IProject project = null;
-		IEditorPart editor = null;
-		try {
-			project = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-			IFile file = TestUtils.createUniqueTestFile(project, "line1\nlineHERE");
-			editor = TestUtils.openEditor(file);
-			ITextViewer viewer = TestUtils.getTextViewer(editor);
-			TextEdit textEdit = new TextEdit(new Range(new Position(1, 4), new Position(1, 4 + "HERE".length())), "Inserted");
-			IDocument document = viewer.getDocument();
-			LSPEclipseUtils.applyEdit(textEdit, document);
-			Assert.assertEquals("line1\nlineInserted", document.get());
-		} finally {
-			TestUtils.closeEditor(editor, false);
-			if (project != null) { project.delete(true, new NullProgressMonitor()); }
-		}
-	}
-
-	@Test
-	public void testTextEditInsertSameOffset() throws Exception {
-		IProject project = null;
-		IEditorPart editor = null;
-		try {
-			project = TestUtils.createProject(getClass().getSimpleName() + System.currentTimeMillis());
-			IFile file = TestUtils.createUniqueTestFile(project, "");
-			editor = TestUtils.openEditor(file);
-			ITextViewer viewer = TestUtils.getTextViewer(editor);
-			TextEdit[] edits = new TextEdit[] {
-					new TextEdit(new Range(new Position(0, 0), new Position(0, 0)), " throws "),
-					new TextEdit(new Range(new Position(0, 0), new Position(0, 0)), "Exception") };
-			IDocument document = viewer.getDocument();
-			LSPEclipseUtils.applyEdits(document, Arrays.asList(edits));
-			Assert.assertEquals(" throws Exception", document.get());
-		} finally {
-			TestUtils.closeEditor(editor, false);
-			if (project != null) {
-				project.delete(true, new NullProgressMonitor());
-			}
-		}
-
-	}
-
-	@Test
-	public void testURICreationUnix() {
-		Assume.assumeFalse(Platform.OS_WIN32.equals(Platform.getOS()));
-		Assert.assertEquals("file:///test%20with%20space", LSPEclipseUtils.toUri(new File("/test with space")).toString());
-	}
-
-	@Test
-	public void testResourceOperations() throws Exception {
-		IProject project = TestUtils.createProject("testResourceOperations");
-		IFile targetFile = project.getFile("some/folder/file.txt");
-		LSPEclipseUtils.applyWorkspaceEdit(new WorkspaceEdit(
-				Collections.singletonList(Either.forRight(new CreateFile(targetFile.getLocationURI().toString())))));
-		assertTrue(targetFile.exists());
-		LSPEclipseUtils.applyWorkspaceEdit(new WorkspaceEdit(Collections.singletonList(Either.forLeft(
-				new TextDocumentEdit(new VersionedTextDocumentIdentifier(targetFile.getLocationURI().toString(), 1),
-						Collections.singletonList(
-								new TextEdit(new Range(new Position(0, 0), new Position(0, 0)), "hello")))))));
-		assertEquals("hello", readContent(targetFile));
-		IFile otherFile = project.getFile("another/folder/file.lol");
-		LSPEclipseUtils.applyWorkspaceEdit(new WorkspaceEdit(Collections.singletonList(Either.forRight(
-				new RenameFile(targetFile.getLocationURI().toString(), otherFile.getLocationURI().toString())))));
-		assertFalse(targetFile.exists());
-		assertTrue(otherFile.exists());
-		assertEquals("hello", readContent(otherFile));
-	}
-
-	@Test
-	public void createExternalFile() throws Exception {
-		File file = File.createTempFile(getClass() + "editExternalFile", ".whatever");
-		file.delete();
-		try {
-			assertFalse(file.exists());
-			WorkspaceEdit we = new WorkspaceEdit(
-					Collections.singletonList(Either.forRight(new CreateFile(file.toURI().toString()))));
-			LSPEclipseUtils.applyWorkspaceEdit(we);
-			assertTrue(file.isFile());
-		} finally {
-			if (file.isFile()) {
-				Files.delete(file.toPath());
-			}
-		}
-	}
-
-	@Test
-	public void editExternalFile() throws Exception {
-		File file = File.createTempFile(getClass() + "editExternalFile", ".whatever");
-		try {
-			TextEdit te = new TextEdit();
-			te.setRange(new Range(new Position(0, 0), new Position(0, 0)));
-			te.setNewText("abc\ndef");
-			TextDocumentEdit docEdit = new TextDocumentEdit(
-					new VersionedTextDocumentIdentifier(file.toURI().toString(), null),
-					Collections.singletonList(te));
-			WorkspaceEdit we = new WorkspaceEdit(Collections.singletonList(Either.forLeft(docEdit)));
-			LSPEclipseUtils.applyWorkspaceEdit(we);
-			assertTrue(file.isFile());
-			assertEquals("abc\ndef", new String(Files.readAllBytes(file.toPath())));
-		} finally {
-			Files.deleteIfExists(file.toPath());
-		}
-	}
-
-	@Test
-	public void renameExternalFile() throws Exception {
-		File oldFile = File.createTempFile(getClass() + "editExternalFile", ".whatever");
-		File newFile = new File(oldFile.getAbsolutePath() + "_renamed");
-		try {
-			WorkspaceEdit we = new WorkspaceEdit(Collections.singletonList(
-					Either.forRight(new RenameFile(oldFile.toURI().toString(), newFile.toURI().toString()))));
-			LSPEclipseUtils.applyWorkspaceEdit(we);
-			assertFalse(oldFile.isFile());
-			assertTrue(newFile.isFile());
-		} finally {
-			Files.deleteIfExists(oldFile.toPath());
-			Files.deleteIfExists(newFile.toPath());
-		}
-	}
-
-	private String readContent(IFile targetFile) throws IOException, CoreException {
-		try (ByteArrayOutputStream stream = new ByteArrayOutputStream(
-				(int) targetFile.getLocation().toFile().length());
-				InputStream contentStream = targetFile.getContents();) {
-			FileUtil.transferStreams(contentStream, stream, targetFile.getFullPath().toString(),
-					new NullProgressMonitor());
-			// targetFile.getContents().transferTo(stream);
-			return new String(stream.toByteArray());
-		}
-	}
-
-	@Test
-	public void testTextEditDoesntAutomaticallySaveOpenResourceFiles() throws Exception {
-		IProject project = TestUtils.createProject("testTextEditDoesntAutomaticallySaveOpenFiles");
-		IFile targetFile = project.getFile("blah.txt");
-		targetFile.create(new ByteArrayInputStream("".getBytes()), true, null);
-		IEditorPart editor = IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(),
-				targetFile,
-				"org.eclipse.ui.genericeditor.GenericEditor");
-		TextEdit te = new TextEdit();
-		te.setRange(new Range(new Position(0, 0), new Position(0, 0)));
-		te.setNewText("abc\ndef");
-		TextDocumentEdit docEdit = new TextDocumentEdit(
-				new VersionedTextDocumentIdentifier(LSPEclipseUtils.toUri(targetFile).toString(), null),
-				Collections.singletonList(te));
-		WorkspaceEdit we = new WorkspaceEdit(Collections.singletonList(Either.forLeft(docEdit)));
-		LSPEclipseUtils.applyWorkspaceEdit(we);
-		assertEquals("abc\ndef", ((StyledText) ((AbstractTextEditor) editor).getAdapter(Control.class)).getText());
-		assertTrue(editor.isDirty());
-	}
-
-	@Test
-	public void testTextEditDoesntAutomaticallySaveOpenExternalFiles() throws Exception {
-		File file = File.createTempFile("testTextEditDoesntAutomaticallySaveOpenExternalFiles", ".whatever");
-		IEditorPart editor = IDE.openInternalEditorOnFileStore(
-				PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI()));
-		TextEdit te = new TextEdit();
-		te.setRange(new Range(new Position(0, 0), new Position(0, 0)));
-		te.setNewText("abc\ndef");
-		TextDocumentEdit docEdit = new TextDocumentEdit(
-				new VersionedTextDocumentIdentifier(file.toURI().toString(), null),
-				Collections.singletonList(te));
-		WorkspaceEdit we = new WorkspaceEdit(Collections.singletonList(Either.forLeft(docEdit)));
-		LSPEclipseUtils.applyWorkspaceEdit(we);
-		assertEquals("abc\ndef", ((StyledText) ((AbstractTextEditor) editor).getAdapter(Control.class)).getText());
-		assertTrue(editor.isDirty());
-	}
-
-	@Test
-	public void testGetOpenEditorExternalFile() throws Exception {
-		File file = File.createTempFile("testDiagnosticsOnExternalFile", ".lspt");
-		try {
-			try (
-				FileOutputStream out = new FileOutputStream(file);
-			) {
-				out.write('a');
-			}
-			IDE.openEditorOnFileStore(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI()));
-			Assert.assertNotEquals(Collections.emptySet(), LSPEclipseUtils.findOpenEditorsFor(file.toURI()));
-		} finally {
-			Files.deleteIfExists(file.toPath());
-		}
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/format/FormatTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/format/FormatTest.java
deleted file mode 100644
index 4e65ce3..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/format/FormatTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.format;
-
-import static org.junit.Assert.assertEquals;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.lsp4e.operations.format.LSPFormatter;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class FormatTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject(getClass().getName() + System.currentTimeMillis());
-	}
-
-	@Test
-	public void testFormattingInvalidDocument() throws InterruptedException, ExecutionException {
-		LSPFormatter formatter = new LSPFormatter();
-		ITextSelection selection = TextSelection.emptySelection();
-
-		List<? extends TextEdit> edits = formatter.requestFormatting(new Document(), selection).get();
-		assertEquals(0, edits.size());
-	}
-
-	@Test
-	public void testFormattingNoChanges()
-			throws CoreException, InvocationTargetException, InterruptedException, ExecutionException {
-		MockLanguageServer.INSTANCE.setFormattingTextEdits(Collections.emptyList());
-
-		IFile file = TestUtils.createUniqueTestFile(project, "Formatting Other Text");
-		IEditorPart editor = TestUtils.openEditor(file);
-		ITextViewer viewer = TestUtils.getTextViewer(editor);
-
-		LSPFormatter formatter = new LSPFormatter();
-		ISelection selection = viewer.getSelectionProvider().getSelection();
-
-		List<? extends TextEdit> edits = formatter.requestFormatting(viewer.getDocument(), (ITextSelection) selection)
-				.get();
-		editor.getSite().getShell().getDisplay().syncExec(() -> formatter.applyEdits(viewer.getDocument(), edits));
-
-		ITextEditor textEditor = (ITextEditor) editor;
-		textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
-		assertEquals("Formatting Other Text", viewer.getDocument().get());
-
-		TestUtils.closeEditor(editor, false);
-	}
-
-	@Test
-	public void testFormatting()
-			throws CoreException, InvocationTargetException, InterruptedException, ExecutionException {
-		List<TextEdit> formattingTextEdits = new ArrayList<>();
-		formattingTextEdits.add(new TextEdit(new Range(new Position(0, 0), new Position(0, 1)), "MyF"));
-		formattingTextEdits.add(new TextEdit(new Range(new Position(0, 10), new Position(0, 11)), ""));
-		formattingTextEdits.add(new TextEdit(new Range(new Position(0, 21), new Position(0, 21)), " Second"));
-		MockLanguageServer.INSTANCE.setFormattingTextEdits(formattingTextEdits);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "Formatting Other Text");
-		IEditorPart editor = TestUtils.openEditor(file);
-		ITextViewer viewer = TestUtils.getTextViewer(editor);
-
-		LSPFormatter formatter = new LSPFormatter();
-		ISelection selection = viewer.getSelectionProvider().getSelection();
-
-		List<? extends TextEdit> edits = formatter.requestFormatting(viewer.getDocument(), (ITextSelection) selection)
-				.get();
-		editor.getSite().getShell().getDisplay().syncExec(() -> formatter.applyEdits(viewer.getDocument(), edits));
-
-		ITextEditor textEditor = (ITextEditor) editor;
-		textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
-		assertEquals("MyFormattingOther Text Second", viewer.getDocument().get());
-
-		TestUtils.closeEditor(editor, false);
-	}
-
-	@Test
-	public void testNullFormatting()
-			throws CoreException, InvocationTargetException, InterruptedException, ExecutionException {
-		IDocument document = new Document("Formatting Other Text");
-		LSPFormatter formatter = new LSPFormatter();
-
-		// null is an acceptable response for no changes
-		formatter.applyEdits(document, null);
-
-		assertEquals("Formatting Other Text", document.get());
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/highlight/HighlightTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/highlight/HighlightTest.java
deleted file mode 100644
index 8961872..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/highlight/HighlightTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.highlight;
-
-import static org.junit.Assert.assertEquals;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.IAnnotationModel;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.operations.highlight.HighlightReconcilingStrategy;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.DocumentHighlight;
-import org.eclipse.lsp4j.DocumentHighlightKind;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.swt.widgets.Display;
-import org.junit.Assert;
-import org.junit.Assume;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.Version;
-
-public class HighlightTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject("HighlightTest" + System.currentTimeMillis());
-	}
-
-	@Test
-	public void testHighlight() throws CoreException, InvocationTargetException {
-		checkGenericEditorVersion();
-
-		List<DocumentHighlight> highlights = new ArrayList<>();
-		highlights.add(
-				new DocumentHighlight(new Range(new Position(0, 2), new Position(0, 6)), DocumentHighlightKind.Read));
-		highlights.add(
-				new DocumentHighlight(new Range(new Position(0, 7), new Position(0, 12)), DocumentHighlightKind.Write));
-		highlights.add(
-				new DocumentHighlight(new Range(new Position(0, 13), new Position(0, 17)), DocumentHighlightKind.Text));
-		MockLanguageServer.INSTANCE.setDocumentHighlights(highlights);
-
-		IFile testFile = TestUtils.createUniqueTestFile(project, "  READ WRITE TEXT");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		viewer.getTextWidget().setCaretOffset(1);
-
-		if (!(viewer instanceof ISourceViewer)) {
-			Assert.fail();
-		}
-
-		ISourceViewer sourceViewer = (ISourceViewer) viewer;
-
-		Map<org.eclipse.jface.text.Position, Annotation> annotations = new HashMap<>();
-
-		new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return sourceViewer.getAnnotationModel().getAnnotationIterator().hasNext();
-			}
-		}.waitForCondition(Display.getCurrent(), 3000);
-
-		IAnnotationModel model = sourceViewer.getAnnotationModel();
-		final Iterator<Annotation> iterator = model.getAnnotationIterator();
-		while (iterator.hasNext()) {
-			Annotation annotation = iterator.next();
-			annotations.put(model.getPosition(annotation), annotation);
-		}
-
-		Annotation annotation = annotations.get(new org.eclipse.jface.text.Position(2, 4));
-		Assert.assertNotNull(annotation);
-		assertEquals(HighlightReconcilingStrategy.READ_ANNOTATION_TYPE, annotation.getType());
-
-		annotation = annotations.get(new org.eclipse.jface.text.Position(7, 5));
-		Assert.assertNotNull(annotation);
-		assertEquals(HighlightReconcilingStrategy.WRITE_ANNOTATION_TYPE, annotation.getType());
-
-		annotation = annotations.get(new org.eclipse.jface.text.Position(13, 4));
-		Assert.assertNotNull(annotation);
-		assertEquals(HighlightReconcilingStrategy.TEXT_ANNOTATION_TYPE, annotation.getType());
-
-		assertEquals(false, iterator.hasNext());
-	}
-
-	@Test
-	public void testCheckIfOtherAnnotationsRemains() throws CoreException, InvocationTargetException {
-		checkGenericEditorVersion();
-
-		IFile testFile = TestUtils.createUniqueTestFile(project, "  READ WRITE TEXT");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		List<DocumentHighlight> highlights = Collections.singletonList(
-				new DocumentHighlight(new Range(new Position(0, 2), new Position(0, 6)), DocumentHighlightKind.Read));
-		MockLanguageServer.INSTANCE.setDocumentHighlights(highlights);
-
-		if (!(viewer instanceof ISourceViewer)) {
-			Assert.fail();
-		}
-
-		ISourceViewer sourceViewer = (ISourceViewer) viewer;
-		IAnnotationModel model = sourceViewer.getAnnotationModel();
-
-		String fakeAnnotationType = "FAKE_TYPE";
-		Annotation fakeAnnotation = new Annotation(fakeAnnotationType, false, null);
-		org.eclipse.jface.text.Position fakeAnnotationPosition = new org.eclipse.jface.text.Position(0, 10);
-		model.addAnnotation(fakeAnnotation, fakeAnnotationPosition);
-
-		// emulate cursor move
-		viewer.getTextWidget().setCaretOffset(1);
-
-		Assert.assertTrue(new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				IAnnotationModel annotationModel = sourceViewer.getAnnotationModel();
-				Map<org.eclipse.jface.text.Position, Annotation> annotations = new HashMap<>();
-				annotationModel.getAnnotationIterator().forEachRemaining(ann -> annotations.put(model.getPosition(ann), ann));
-				if (annotations.size() != 2) {
-					return false;
-				}
-				{
-					Annotation annotation = annotations.get(new org.eclipse.jface.text.Position(2, 4));
-					if (annotation == null || !HighlightReconcilingStrategy.READ_ANNOTATION_TYPE.equals(annotation.getType())) {
-						return false;
-					}
-				}
-				{
-					Annotation annotation = annotations.get(fakeAnnotationPosition);
-					if (annotation == null || !fakeAnnotationType.equals(annotation.getType())) {
-						return false;
-					}
-				}
-				return true;
-			}
-		}.waitForCondition(Display.getCurrent(), 3000));
-	}
-
-	private void checkGenericEditorVersion() {
-		// ignore tests for generic editor wihtout reconciler API
-		Bundle bundle = Platform.getBundle("org.eclipse.ui.genericeditor");
-		Assume.assumeTrue(bundle.getVersion().compareTo(new Version(1, 1, 0)) >= 0);
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/hover/HoverTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/hover/HoverTest.java
deleted file mode 100644
index fe71e5d..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/hover/HoverTest.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.hover;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.nio.file.Files;
-import java.util.Collections;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.internal.text.html.BrowserInformationControl;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.operations.hover.LSPTextHover;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.Hover;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.browser.ProgressAdapter;
-import org.eclipse.swt.browser.ProgressEvent;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-@SuppressWarnings("restriction")
-public class HoverTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-	private LSPTextHover hover;
-	
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject("HoverTest" + System.currentTimeMillis());
-		hover = new LSPTextHover();
-	}
-
-	@Test
-	public void testHoverRegion() throws CoreException, InvocationTargetException {
-		Hover hoverResponse = new Hover(Collections.singletonList(Either.forLeft("HoverContent")), new Range(new Position(0,  0), new Position(0, 10)));
-		MockLanguageServer.INSTANCE.setHover(hoverResponse);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "HoverRange Other Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		assertEquals(new Region(0, 10), hover.getHoverRegion(viewer, 5));
-	}
-	
-	@Test
-	public void testHoverRegionInvalidOffset() throws CoreException, InvocationTargetException {
-		MockLanguageServer.INSTANCE.setHover(null);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "HoverRange Other Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		assertEquals(new Region(15, 0), hover.getHoverRegion(viewer, 15));
-	}
-	
-	@Test
-	public void testHoverInfo() throws CoreException, InvocationTargetException {
-		Hover hoverResponse = new Hover(Collections.singletonList(Either.forLeft("HoverContent")), new Range(new Position(0,  0), new Position(0, 10)));
-		MockLanguageServer.INSTANCE.setHover(hoverResponse);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "HoverRange Other Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		// TODO update test when MARKDOWN to HTML will be finished
-		assertTrue(hover.getHoverInfo(viewer, new Region(0, 10)).contains("HoverContent"));
-	}
-	
-	@Test
-	public void testHoverInfoEmptyContentList() throws CoreException, InvocationTargetException {
-		Hover hoverResponse = new Hover(Collections.emptyList(), new Range(new Position(0,  0), new Position(0, 10)));
-		MockLanguageServer.INSTANCE.setHover(hoverResponse);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "HoverRange Other Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		assertEquals(null, hover.getHoverInfo(viewer, new Region(0, 10)));
-	}
-	
-	@Test
-	public void testHoverInfoInvalidOffset() throws CoreException, InvocationTargetException {
-		MockLanguageServer.INSTANCE.setHover(null);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "HoverRange Other Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		assertEquals(null, hover.getHoverInfo(viewer, new Region(0, 10)));
-	}
-	
-	@Test
-	public void testHoverEmptyContentItem() throws CoreException, InvocationTargetException {
-		Hover hoverResponse = new Hover(Collections.singletonList(Either.forLeft("")), new Range(new Position(0,  0), new Position(0, 10)));
-		MockLanguageServer.INSTANCE.setHover(hoverResponse);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "HoverRange Other Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		assertEquals(null, hover.getHoverInfo(viewer, new Region(0, 10)));
-	}
-
-	@Test
-	public void testHoverOnExternalFile()
-			throws CoreException, InvocationTargetException, IOException, InterruptedException {
-		Hover hoverResponse = new Hover(Collections.singletonList(Either.forLeft("blah")),
-				new Range(new Position(0, 0), new Position(0, 0)));
-		MockLanguageServer.INSTANCE.setHover(hoverResponse);
-
-		File file = File.createTempFile("testHoverOnExternalfile", ".lspt");
-		try {
-			ITextViewer viewer = TestUtils.getTextViewer(IDE.openInternalEditorOnFileStore(
-					PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI())));
-			Assert.assertTrue(hover.getHoverInfo(viewer, new Region(0, 0)).contains("blah"));
-		} finally {
-			Files.deleteIfExists(file.toPath());
-		}
-	}
-
-	@Test
-	public void testMultipleHovers() throws Exception {
-		Hover hoverResponse = new Hover(Collections.singletonList(Either.forLeft("HoverContent")), new Range(new Position(0,  0), new Position(0, 10)));
-		MockLanguageServer.INSTANCE.setHover(hoverResponse);
-
-		IFile file = TestUtils.createUniqueTestFileMultiLS(project, "HoverRange Other Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		// TODO update test when MARKDOWN to HTML will be finished
-		String hoverInfo = hover.getHoverInfo(viewer, new Region(0, 10));
-		int index = hoverInfo.indexOf("HoverContent");
-		assertNotEquals("Hover content not found", -1, index);
-		index += "HoverContent".length();
-		index = hoverInfo.indexOf("HoverContent", index);
-		assertNotEquals("Hover content found only once", -1, index);
-	}
-
-	@Test
-	public void testIntroUrlLink() throws Exception {
-		Hover hoverResponse = new Hover(
-				Collections.singletonList(Either.forLeft(
-						"[My intro URL link](http://org.eclipse.ui.intro/execute?command=org.eclipse.ui.file.close)")),
-				new Range(new Position(0, 0), new Position(0, 10)));
-		MockLanguageServer.INSTANCE.setHover(hoverResponse);
-
-		IFile file = TestUtils.createUniqueTestFile(project, "HoverRange Other Text");
-		ITextViewer viewer = TestUtils.openTextViewer(file);
-
-		String hoverContent = hover.getHoverInfo(viewer, new Region(0, 10));
-
-		LSPTextHover hoverManager = new LSPTextHover();
-
-		Display display = PlatformUI.getWorkbench().getDisplay();
-		final Shell shell = new Shell(display);
-		BrowserInformationControl wrapperControl = null, control = null;
-		try {
-			final RowLayout layout = new RowLayout(SWT.VERTICAL);
-			layout.fill = true;
-			shell.setLayout(layout);
-			shell.setSize(320, 200);
-			shell.open();
-
-			wrapperControl = (BrowserInformationControl) hoverManager.getHoverControlCreator()
-					.createInformationControl(shell);
-			control = (BrowserInformationControl) wrapperControl
-					.getInformationPresenterControlCreator().createInformationControl(shell);
-			Field f = BrowserInformationControl.class.getDeclaredField("fBrowser"); //
-			f.setAccessible(true);
-
-			Browser browser = (Browser) f.get(control);
-			browser.setJavascriptEnabled(true);
-
-			AtomicBoolean completed = new AtomicBoolean(false);
-
-			browser.addProgressListener(new ProgressAdapter() {
-				@Override
-				public void completed(ProgressEvent event) {
-					browser.removeProgressListener(this);
-					browser.execute("document.getElementsByTagName('a')[0].click()");
-					completed.set(true);
-				}
-			});
-
-			assertNotNull("Editor should be opened", viewer.getTextWidget());
-
-			browser.setText(hoverContent);
-
-			assertTrue("action didn't close editor", new DisplayHelper() {
-				@Override
-				protected boolean condition() {
-					return completed.get() && (viewer.getTextWidget() == null || viewer.getTextWidget().isDisposed());
-				}
-			}.waitForCondition(browser.getDisplay(), 10000));
-		} finally {
-			if (control != null) {
-				control.dispose();
-			}
-			if (wrapperControl != null) {
-				wrapperControl.dispose();
-			}
-			shell.dispose();
-		}
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/linkedediting/LinkedEditingTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/linkedediting/LinkedEditingTest.java
deleted file mode 100644
index 615b12b..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/linkedediting/LinkedEditingTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2021 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Victor Rubezhny (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.linkedediting;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.IAnnotationModel;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.operations.linkedediting.LSPLinkedEditingReconcilingStrategy;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.DidChangeTextDocumentParams;
-import org.eclipse.lsp4j.LinkedEditingRanges;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextDocumentContentChangeEvent;
-import org.eclipse.swt.widgets.Display;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class LinkedEditingTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject("LinkedEditingTest" + System.currentTimeMillis());
-	}
-
-	@Test
-	public void testLinkedEditingHighlight() throws CoreException, InvocationTargetException {
-		List<Range> ranges = new ArrayList<>();
-		ranges.add(new Range(new Position(1, 3), new Position(1, 7)));
-		ranges.add(new Range(new Position(3, 4), new Position(3, 8)));
-		
-		LinkedEditingRanges linkkedEditingRanges = new LinkedEditingRanges(ranges);
-		MockLanguageServer.INSTANCE.setLinkedEditingRanges(linkkedEditingRanges);
-
-		IFile testFile = TestUtils.createUniqueTestFile(project, "<html>\n  <body>\n    a body text\n  </body>\n</html>");
-		ITextViewer viewer = TestUtils.openTextViewer(testFile);
-
-		viewer.getTextWidget().setCaretOffset(11); 
-
-		if (!(viewer instanceof ISourceViewer)) {
-			Assert.fail();
-		}
-
-		ISourceViewer sourceViewer = (ISourceViewer) viewer;
-
-		viewer.getTextWidget().setSelection(11); // 10-14 <body|>
-		
-		Map<org.eclipse.jface.text.Position, Annotation> annotations = new HashMap<>();
-
-		new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				Iterator<Annotation> iterator = sourceViewer.getAnnotationModel().getAnnotationIterator();
-				while (iterator.hasNext()) {
-					Annotation annotation = iterator.next();
-					if (LSPLinkedEditingReconcilingStrategy.LINKEDEDITING_ANNOTATION_TYPE.equals(annotation.getType())) {
-						return true;
-					}
-				}
-				return false;
-			}
-		}.waitForCondition(Display.getCurrent(), 3000);
-
-		IAnnotationModel model = sourceViewer.getAnnotationModel();
-		final Iterator<Annotation> iterator = model.getAnnotationIterator();
-		while (iterator.hasNext()) {
-			Annotation annotation = iterator.next();
-			annotations.put(model.getPosition(annotation), annotation);
-		}
-
-		Annotation annotation = annotations.get(new org.eclipse.jface.text.Position(10, 4));
-		Assert.assertNotNull(annotation);
-		assertEquals(LSPLinkedEditingReconcilingStrategy.LINKEDEDITING_ANNOTATION_TYPE, annotation.getType());
-
-		Assert.assertTrue(viewer.isEditable());
-
-		try {
-			// Test initial insert
-			CompletableFuture<DidChangeTextDocumentParams> didChangeExpectation = new CompletableFuture<DidChangeTextDocumentParams>();
-			MockLanguageServer.INSTANCE.setDidChangeCallback(didChangeExpectation);
-			String text = "w";
-			String expectedChangeText = viewer.getDocument().get().replace("body>", "wbody>");
-
-			viewer.getTextWidget().replaceTextRange(10, 0, text);
-			
-			DidChangeTextDocumentParams lastChange = didChangeExpectation.get(1000, TimeUnit.MILLISECONDS);
-			assertNotNull(lastChange.getContentChanges());
-			assertEquals(1, lastChange.getContentChanges().size());
-			TextDocumentContentChangeEvent change0 = lastChange.getContentChanges().get(0);
-			assertEquals(expectedChangeText, change0.getText());
-			assertEquals(expectedChangeText, viewer.getDocument().get());
-			
-			// Test additional insert
-			didChangeExpectation = new CompletableFuture<DidChangeTextDocumentParams>();
-			MockLanguageServer.INSTANCE.setDidChangeCallback(didChangeExpectation);
-			expectedChangeText = viewer.getDocument().get().replace("body>", "wbody>");
-
-			viewer.getTextWidget().replaceTextRange(11, 0, text);
-			
-			lastChange = didChangeExpectation.get(1000, TimeUnit.MILLISECONDS);
-			assertNotNull(lastChange.getContentChanges());
-			assertEquals(1, lastChange.getContentChanges().size());
-			change0 = lastChange.getContentChanges().get(0);
-			assertEquals(expectedChangeText, change0.getText());
-			assertEquals(expectedChangeText, viewer.getDocument().get());
-		} catch (Exception e) {
-			e.printStackTrace();
-			fail(e.getMessage());
-		}
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/message/ShowMessageTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/message/ShowMessageTest.java
deleted file mode 100644
index a660268..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/message/ShowMessageTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2021 Red Hat, Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.test.message;
-
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.LSDisplayHelper;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.MessageParams;
-import org.eclipse.lsp4j.MessageType;
-import org.eclipse.lsp4j.services.LanguageClient;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class ShowMessageTest {
-	@Rule public AllCleanRule clear = new AllCleanRule();
-
-	@Test
-	public void testShowMessage() throws CoreException {
-		IProject project = TestUtils.createProject(getClass().getName() + System.currentTimeMillis());
-		IFile file = TestUtils.createUniqueTestFile(project, "");
-		IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), file);
-		String messageContent = "test notification " + System.currentTimeMillis();
-		MessageParams message = new MessageParams(MessageType.Error, messageContent);
-		Display display = Display.getDefault();
-		Set<Shell> currentShells = Stream.of(display.getShells()).filter(Shell::isVisible).collect(Collectors.toSet());
-		List<LanguageClient> remoteProxies = MockLanguageServer.INSTANCE.getRemoteProxies();
-		remoteProxies.forEach(client -> client.showMessage(message));
-		assertTrue(new LSDisplayHelper(() -> Stream.of(display.getShells()).filter(Shell::isVisible).count() > currentShells.size()).waitForCondition(display, 3000));
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/operations/codelens/LSPCodeMiningTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/operations/codelens/LSPCodeMiningTest.java
deleted file mode 100644
index 0197d77..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/operations/codelens/LSPCodeMiningTest.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Fraunhofer FOKUS and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Max Bureck - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.operations.codelens;
-
-import static org.junit.Assert.assertEquals;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Arrays;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.lsp4e.LanguageServersRegistry;
-import org.eclipse.lsp4e.command.LSPCommandHandler;
-import org.eclipse.lsp4e.operations.codelens.CodeLensProvider;
-import org.eclipse.lsp4e.operations.codelens.LSPCodeMining;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.CodeLens;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.ExecuteCommandParams;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import com.google.gson.JsonObject;
-import com.google.gson.JsonPrimitive;
-
-/**
- * Tests executing actions on server side or client side via registered
- * IHandler.
- */
-public class LSPCodeMiningTest {
-
-	private static final String MOCK_SERVER_ID = "org.eclipse.lsp4e.test.server";
-
-	@Rule
-	public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject(getClass().getName() + System.currentTimeMillis());
-	}
-
-	@Test
-	public void testLSPCodeMiningActionClientSideHandling()
-			throws BadLocationException, CoreException, InvocationTargetException {
-		String commandID = "test.command";
-		final CodeLens lens = createCodeLens(commandID);
-
-		final AtomicReference<Command> actualCommand = new AtomicReference<>(null);
-		final AtomicReference<IPath> actualPath = new AtomicReference<>(null);
-
-		// Create and register handler
-		IHandler handler = new LSPCommandHandler() {
-			@Override
-			public Object execute(ExecutionEvent event, Command command, IPath context) throws ExecutionException {
-				actualCommand.set(command);
-				actualPath.set(context);
-				return null;
-			}
-		};
-		IHandlerService handlerService = PlatformUI.getWorkbench().getService(IHandlerService.class);
-		handlerService.activateHandler(commandID, handler);
-
-		// Setup test data
-		IFile file = TestUtils.createUniqueTestFile(project, "lspt", "test content");
-		IDocument document = TestUtils.openTextViewer(file).getDocument();
-
-		LanguageServer languageServer = MockLanguageServer.INSTANCE;
-		CodeLensProvider provider = new CodeLensProvider();
-
-		LSPCodeMining sut = new LSPCodeMining(lens, document, languageServer, LanguageServersRegistry.getInstance().getDefinition(MOCK_SERVER_ID), provider);
-		MouseEvent mouseEvent = createMouseEvent();
-		sut.getAction().accept(mouseEvent);
-
-		assertEquals(lens.getCommand(), actualCommand.get());
-		assertEquals(file.getFullPath(), actualPath.get());
-	}
-
-	@Test
-	public void testLSPCodeMiningActionServerSideHandling()
-			throws InterruptedException, java.util.concurrent.ExecutionException, TimeoutException,
-			BadLocationException, CoreException, InvocationTargetException {
-		final CodeLens lens = createCodeLens(MockLanguageServer.SUPPORTED_COMMAND_ID);
-		Command command = lens.getCommand();
-		JsonObject jsonObject = new JsonObject();
-		jsonObject.addProperty("bar", 42);
-		command.setArguments(Arrays.asList(new JsonPrimitive("Foo"), jsonObject));
-
-		// Setup test data
-		IFile file = TestUtils.createUniqueTestFile(project, "lspt", "test content");
-		IDocument document = TestUtils.openTextViewer(file).getDocument();
-
-		MockLanguageServer languageServer = MockLanguageServer.INSTANCE;
-		CodeLensProvider provider = new CodeLensProvider();
-
-		LSPCodeMining sut = new LSPCodeMining(lens, document, languageServer, LanguageServersRegistry.getInstance().getDefinition(MOCK_SERVER_ID), provider);
-		MouseEvent mouseEvent = createMouseEvent();
-		sut.getAction().accept(mouseEvent);
-
-		// We expect that the language server will be called to execute the command
-		ExecuteCommandParams executedCommand = languageServer.getWorkspaceService().getExecutedCommand().get(5,
-				TimeUnit.SECONDS);
-
-		assertEquals(MockLanguageServer.SUPPORTED_COMMAND_ID, executedCommand.getCommand());
-		assertEquals(command.getArguments(), executedCommand.getArguments());
-	}
-
-	private static MouseEvent createMouseEvent() {
-		Event event = new Event();
-		event.button = SWT.BUTTON1;
-		Display display = Display.getCurrent();
-		event.widget = display.getSystemTray();
-		return new MouseEvent(event);
-	}
-
-	private static CodeLens createCodeLens(String commandID) {
-		CodeLens lens = new CodeLens();
-		Position zero = new Position(0, 0);
-		lens.setRange(new Range(zero, zero));
-		Command command = new Command("TestCommand", commandID);
-		lens.setCommand(command);
-		return lens;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/outline/EditorToOutlineAdapterFactoryTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/outline/EditorToOutlineAdapterFactoryTest.java
deleted file mode 100644
index 6d4d8b4..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/outline/EditorToOutlineAdapterFactoryTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Markus Ofterdinger (SAP SE) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.outline;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.views.contentoutline.ContentOutline;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class EditorToOutlineAdapterFactoryTest {
-
-	private static ContentOutline outline;
-
-	@Rule
-	public AllCleanRule rule = new AllCleanRule();
-
-	@BeforeClass
-	public static void setUpBeforeClass() {
-		// look for content outline in current workbench, could be null
-		IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
-				.findView("org.eclipse.ui.views.ContentOutline"); //$NON-NLS-1$
-
-		// implicitly checks for null
-		if (viewPart instanceof ContentOutline) {
-			outline = (ContentOutline) viewPart;
-		}
-
-		Assert.assertNotNull(outline);
-	}
-
-	@Test
-	public void testGetAdapter() throws CoreException {
-		IProject project = TestUtils.createProject("EditorToOutlineAdapterFactoryTest" + System.currentTimeMillis());
-		IFile testFile = TestUtils.createUniqueTestFile(project, "Hello World !!");
-		outline.partClosed(outline);
-
-		MockLanguageServer.INSTANCE.setTimeToProceedQueries(500);
-		TestUtils.openEditor(testFile);
-
-		long beginOpenOutline = System.currentTimeMillis();
-		outline.partOpened(outline);
-		long endOpenOutline = System.currentTimeMillis();
-		long durationOpenOutline = endOpenOutline - beginOpenOutline;
-		Assert.assertTrue(String.format("Open outline took longer than 50ms: %d", durationOpenOutline),
-				durationOpenOutline <= 50);
-
-		DisplayHelper.sleep(Display.getCurrent(), 1000); // leave time for outline to be refreshed when LS is ready.
-		String pageClassName = outline.getCurrentPage().getClass().getCanonicalName();
-		Assert.assertTrue("Outline page class is not as expected: " + pageClassName, pageClassName.contains("lsp4e"));
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/outline/OutlineContentTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/outline/OutlineContentTest.java
deleted file mode 100644
index a698e71..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/outline/OutlineContentTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2020 Red Hat Inc.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.eclipse.lsp4e.test.outline;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Collections;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.outline.CNFOutlinePage;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.DocumentSymbol;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.SymbolKind;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class OutlineContentTest {
-	
-	@Rule
-	public AllCleanRule rule = new AllCleanRule();
-
-	@Test
-	public void testNodeRemainExpandedUponSelection() throws CoreException {
-		IProject project = TestUtils.createProject("EditorToOutlineAdapterFactoryTest" + System.currentTimeMillis());
-		IFile testFile = TestUtils.createUniqueTestFile(project, "a(b())");
-		MockLanguageServer.INSTANCE.setDocumentSymbols(new DocumentSymbol("a", SymbolKind.Constant, new Range(new Position(0, 0), new Position(0, 6)), new Range(new Position(0, 0), new Position(0, 1)), "", Collections.singletonList(
-				new DocumentSymbol("b", SymbolKind.Constant, new Range(new Position(0, 2), new Position(0, 5)), new Range(new Position(0, 2), new Position(0, 3)))
-			)));
-		ITextEditor editor = (ITextEditor)TestUtils.openEditor(testFile);
-		CNFOutlinePage outlinePage = new CNFOutlinePage(MockLanguageServer.INSTANCE, editor);
-		Shell shell = new Shell(editor.getEditorSite().getWorkbenchWindow().getShell());
-		shell.setLayout(new FillLayout());
-		outlinePage.createControl(shell);
-		shell.open();
-		Tree tree = (Tree)outlinePage.getControl();
-		editor.getSelectionProvider().setSelection(new TextSelection(4, 0));
-		assertTrue(new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return itemBselectedAndVisibile(tree);
-			}
-		}.waitForCondition(tree.getDisplay(), 2000));
-		editor.getSelectionProvider().setSelection(new TextSelection(3, 0));
-		// ensure that selection remains intact for 2 seconds at least (ie not lost)
-		assertFalse(new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return !itemBselectedAndVisibile(tree);
-			}
-		}.waitForCondition(tree.getDisplay(), 2000));
-	}
-
-	@Test
-	public void testNodeRemainExpandedUponModification() throws CoreException, BadLocationException {
-		IProject project = TestUtils.createProject("EditorToOutlineAdapterFactoryTest2" + System.currentTimeMillis());
-		IFile testFile = TestUtils.createUniqueTestFile(project, "a(b())");
-		MockLanguageServer.INSTANCE.setDocumentSymbols(new DocumentSymbol("a", SymbolKind.Constant, new Range(new Position(0, 0), new Position(0, 6)), new Range(new Position(0, 0), new Position(0, 1)), "", Collections.singletonList(
-				new DocumentSymbol("b", SymbolKind.Constant, new Range(new Position(0, 2), new Position(0, 5)), new Range(new Position(0, 2), new Position(0, 3)))
-			)));
-		ITextEditor editor = (ITextEditor)TestUtils.openEditor(testFile);
-		CNFOutlinePage outlinePage = new CNFOutlinePage(MockLanguageServer.INSTANCE, editor);
-		Shell shell = new Shell(editor.getEditorSite().getWorkbenchWindow().getShell());
-		shell.setLayout(new FillLayout());
-		outlinePage.createControl(shell);
-		shell.open();
-		Tree tree = (Tree)outlinePage.getControl();
-		editor.getSelectionProvider().setSelection(new TextSelection(4, 0));
-		assertTrue(new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return tree.getItems().length > 0 && tree.getItem(0).getExpanded();
-			}
-		}.waitForCondition(tree.getDisplay(), 2000));
-		IDocument document = editor.getDocumentProvider().getDocument(editor.getEditorInput());
-		editor.selectAndReveal(document.getLength(), 0);
-		document.replace(document.getLength(), 0, "   ");
-		// ensure that tree remains expanded (for at least 2 seconds)
-		assertFalse(new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return !tree.getItem(0).getExpanded();
-			}
-		}.waitForCondition(tree.getDisplay(), 2000));
-	}
-
-
-	private boolean itemBselectedAndVisibile(Tree tree) {
-		if (tree.getSelection().length == 0) {
-			return false;
-		}
-		TreeItem selection = tree.getSelection()[0];
-		return selection != null && selection.getText().equals("b") && selection.getParentItem().getExpanded();
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/outline/SymbolsLabelProviderTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/outline/SymbolsLabelProviderTest.java
deleted file mode 100644
index 2aa20e1..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/outline/SymbolsLabelProviderTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2019 TypeFox and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Jan Koehnlein (TypeFox) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.outline;
-
-import static org.junit.Assert.assertEquals;
-
-import org.eclipse.lsp4e.outline.SymbolsLabelProvider;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.lsp4j.SymbolKind;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class SymbolsLabelProviderTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private static final Location LOCATION = new Location("path/to/foo", new Range(new Position(0,0), new Position(1,1)));
-	private static final Location INVALID_LOCATION = new Location("file:://///invalid_location_uri", new Range(new Position(0,0), new Position(1,1)));
-
-	@Test
-	public void testShowKind() {
-		SymbolsLabelProvider labelProvider = new SymbolsLabelProvider(false, true);
-		SymbolInformation info = new SymbolInformation("Foo", SymbolKind.Class, LOCATION);
-		assertEquals("Foo :Class", labelProvider.getText(info));
-	}
-
-	@Test
-	public void testShowKindLocation() {
-		SymbolsLabelProvider labelProvider = new SymbolsLabelProvider(true, true);
-		SymbolInformation info = new SymbolInformation("Foo", SymbolKind.Class, LOCATION);
-		assertEquals("Foo :Class path/to/foo", labelProvider.getText(info));
-	}
-
-	@Test
-	public void testShowLocation() {
-		SymbolsLabelProvider labelProvider = new SymbolsLabelProvider(true, false);
-		SymbolInformation info = new SymbolInformation("Foo", SymbolKind.Class, LOCATION);
-		assertEquals("Foo path/to/foo", labelProvider.getText(info));
-	}
-
-	@Test
-	public void testShowNeither() {
-		SymbolsLabelProvider labelProvider = new SymbolsLabelProvider(false, false);
-		SymbolInformation info = new SymbolInformation("Foo", SymbolKind.Class, LOCATION);
-		assertEquals("Foo", labelProvider.getText(info));
-	}
-
-	@Test
-	public void testGetStyledTextInalidLocationURI() {
-		SymbolsLabelProvider labelProvider = new SymbolsLabelProvider(false, false);
-		SymbolInformation info = new SymbolInformation("Foo", SymbolKind.Class, INVALID_LOCATION);
-		assertEquals("Foo", labelProvider.getStyledText(info).getString());
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/references/FindReferencesTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/references/FindReferencesTest.java
deleted file mode 100644
index cfca2e3..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/references/FindReferencesTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016-2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.references;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.HashMap;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.operations.references.LSFindReferences;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.search.ui.ISearchResultViewPart;
-import org.eclipse.search.ui.NewSearchUI;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.services.IEvaluationService;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class FindReferencesTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	private IProject project;
-
-	@Before
-	public void setUp() throws CoreException {
-		project = TestUtils.createProject("CompletionTest" + System.currentTimeMillis());
-		IViewPart searchPart = NewSearchUI.getSearchResultView();
-		if (searchPart != null) {
-			searchPart.getViewSite().getPage().hideView(searchPart);
-		}
-	}
-
-	@After
-	public void tearDown() throws CoreException {
-		IViewPart searchPart = NewSearchUI.getSearchResultView();
-		if (searchPart != null) {
-			searchPart.getViewSite().getPage().hideView(searchPart);
-		}
-	}
-	
-	@Test
-	public void findReferencesShowsResultView() throws Exception {
-		IFile testFile = TestUtils.createUniqueTestFile(project, "dummyContent");
-		TestUtils.openTextViewer(testFile);
-		MockLanguageServer.INSTANCE.getTextDocumentService().setMockReferences(
-				new Location(testFile.getLocationURI().toString(),	new Range(
-						new Position(1, 1), new Position(1, 2))));
-		
-		LSFindReferences handler = new LSFindReferences();
-		IEvaluationService evaluationService = PlatformUI.getWorkbench().getService(IEvaluationService.class);
-		handler.execute(new ExecutionEvent(null, new HashMap<>(), null, evaluationService.getCurrentState()));
-		
-		ISearchResultViewPart part = findSearchResultView(3000);
-		assertNotNull("Search results not shown", part);
-	}
-	
-	private ISearchResultViewPart findSearchResultView(int timeout) {
-		new DisplayHelper() {
-			@Override
-			protected boolean condition() {
-				return  NewSearchUI.getSearchResultView() != null;
-			}
-		}.waitForCondition(Display.getCurrent(), timeout);
-		return NewSearchUI.getSearchResultView();
-	}
-
-	@Test
-	public void findReferencesNonBlocking() throws Exception {
-		int responseDelay = 3000;
-		int uiFreezeThreesholdreezeThreeshold = 300;
-		MockLanguageServer.INSTANCE.setTimeToProceedQueries(responseDelay);
-		TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, "dummyContent"));
-
-		LSFindReferences handler = new LSFindReferences();
-		IEvaluationService evaluationService = PlatformUI.getWorkbench().getService(IEvaluationService.class);
-		long time = System.currentTimeMillis();
-		handler.execute(new ExecutionEvent(null, new HashMap<>(), null, evaluationService.getCurrentState()));
-
-		long delay = System.currentTimeMillis() - time;
-		// TODO re-use the UI freeze monitoring org.eclipse.ui.monitoring instead
-		assertTrue("Find references blocked UI for " + delay + "ms", delay < uiFreezeThreesholdreezeThreeshold);
-		AtomicInteger runCount = new AtomicInteger();
-		Thread uiThreadActiveChecker = new Thread(() -> {
-			while (!Thread.currentThread().isInterrupted()) {
-				long triggerTime = System.currentTimeMillis();
-				PlatformUI.getWorkbench().getDisplay().syncExec(() -> {
-					runCount.incrementAndGet();
-					long uiThreadRequestTime = System.currentTimeMillis() - triggerTime;
-					assertTrue("UI Thread blocked for " + uiThreadRequestTime, uiThreadRequestTime < uiFreezeThreesholdreezeThreeshold);
-				});
-			}
-		});
-		uiThreadActiveChecker.start();
-		try {
-			assertNotNull("Search Result view not found", findSearchResultView(5000));
-			assertTrue("UI Thread was frozen", runCount.intValue() > 1000);
-		} finally {
-			uiThreadActiveChecker.interrupt();
-		}
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/rename/LSPTextChangeTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/rename/LSPTextChangeTest.java
deleted file mode 100644
index 2cd1f94..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/rename/LSPTextChangeTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - Added some suites
- *******************************************************************************/
-package org.eclipse.lsp4e.test.rename;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.File;
-import java.nio.file.Files;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.refactoring.LSPTextChange;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.ltk.core.refactoring.PerformChangeOperation;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class LSPTextChangeTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-
-	@Test
-	public void testPerformOperationWorkspaceFile() throws Exception {
-		IProject project = TestUtils.createProject("blah");
-		IFile file = TestUtils.createUniqueTestFile(project, "old");
-		TextEdit edit = new TextEdit(new Range(new Position(0, 0), new Position(0, 3)), "new");
-		PerformChangeOperation operation = new PerformChangeOperation(new LSPTextChange("test", LSPEclipseUtils.toUri(file), edit));
-		operation.run(new NullProgressMonitor());
-		assertEquals(edit.getNewText(), LSPEclipseUtils.getDocument(file).get());
-	}
-
-	@Test
-	public void testPerformOperationExternalFile() throws Exception {
-		File file = File.createTempFile("testPerformOperationExternalFile", ".lspt");
-		try {
-			Files.write(file.toPath(), "old".getBytes());
-			TextEdit edit = new TextEdit(new Range(new Position(0, 0), new Position(0, 3)), "new");
-			PerformChangeOperation operation = new PerformChangeOperation(new LSPTextChange("test", LSPEclipseUtils.toUri(file), edit));
-			operation.run(new NullProgressMonitor());
-			assertEquals(edit.getNewText(), new String(Files.readAllBytes(file.toPath())));
-		} finally {
-			Files.deleteIfExists(file.toPath());
-		}
-	}
-
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/rename/RenameTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/rename/RenameTest.java
deleted file mode 100644
index 08af79d..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/rename/RenameTest.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018, 2020 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - Added some suites
- *  Pierre-Yves B. <pyvesdev@gmail.com> - Bug 525411 - [rename] input field should be filled with symbol to rename
- *  Martin Lippert (Pivotal) - Bug 561373 - added async enablement for late language servers
- *******************************************************************************/
-package org.eclipse.lsp4e.test.rename;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.net.URI;
-import java.nio.file.Files;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.filebuffers.ITextFileBufferManager;
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.tests.util.DisplayHelper;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.operations.rename.LSPRenameHandler;
-import org.eclipse.lsp4e.operations.rename.LSPRenameProcessor;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4e.test.TestUtils;
-import org.eclipse.lsp4e.tests.mock.MockLanguageServer;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.WorkspaceEdit;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchCommandConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class RenameTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-	
-	@Test
-	public void testRenameHandlerEnablement() throws Exception {
-		IProject project = TestUtils.createProject("blah");
-		IFile file = TestUtils.createUniqueTestFile(project, "old");
-		ITextEditor editor = (ITextEditor) TestUtils.openEditor(file);
-		editor.selectAndReveal(1, 0);
-		ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class);
-		Command command = commandService.getCommand(IWorkbenchCommandConstants.FILE_RENAME);
-		assertTrue(command.isEnabled() && command.isHandled());
-	}
-
-	@Test
-	public void testAsyncRenameHandlerEnablement() throws Exception {
-		long delay = 2000;
-		// this fixed value is not really an optimal solution, since it depends on the following things
-		// to happen within that time frame. Should maybe re-work this in the future towards a more
-		// precise way of steering the execution from the test here
-		
-		MockLanguageServer.INSTANCE.setTimeToProceedQueries(delay);
-		
-		IProject project = TestUtils.createProject("blah");
-		IFile file = TestUtils.createUniqueTestFile(project, "old");
-		ITextEditor editor = (ITextEditor) TestUtils.openEditor(file);
-		editor.selectAndReveal(1, 0);
-		ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class);
-		Command command = commandService.getCommand(IWorkbenchCommandConstants.FILE_RENAME);
-		assertFalse(command.isEnabled() && command.isHandled());
-		
-		Thread.sleep(delay);
-		assertTrue(command.isEnabled() && command.isHandled());
-	}
-
-	@Test
-	public void testRenameRefactoring() throws Exception {
-		IProject project = TestUtils.createProject("blah");
-		IFile file = TestUtils.createUniqueTestFile(project, "old");
-		MockLanguageServer.INSTANCE.getTextDocumentService().setRenameEdit(createSimpleMockRenameEdit(LSPEclipseUtils.toUri(file)));
-		IDocument document = LSPEclipseUtils.getDocument(file);
-		LanguageServiceAccessor.getLanguageServers(document, LSPRenameHandler::isRenameProvider).thenAccept(languageServers -> {
-			LSPRenameProcessor processor = new LSPRenameProcessor(LSPEclipseUtils.getDocument(file), languageServers.get(0), 0);
-			processor.setNewName("new");
-			try {
-				ProcessorBasedRefactoring processorBasedRefactoring = new ProcessorBasedRefactoring(processor);
-				processorBasedRefactoring.checkAllConditions(new NullProgressMonitor());
-				processorBasedRefactoring.createChange(new NullProgressMonitor()).perform(new NullProgressMonitor());
-			} catch (CoreException e) {
-				e.printStackTrace();
-			}
-		}).join();
-		assertEquals("new", document.get());
-	}
-
-	@Test
-	public void testPrepareRenameRefactoring() throws Exception {
-		IProject project = TestUtils.createProject("testPrepareRenameRefactoring");
-		IFile file = TestUtils.createUniqueTestFile(project, "old");
-		MockLanguageServer.INSTANCE.getTextDocumentService().setRenameEdit(createSimpleMockRenameEdit(LSPEclipseUtils.toUri(file)));
-		IDocument document = LSPEclipseUtils.getDocument(file);
-		LanguageServiceAccessor.getLanguageServers(document, LSPRenameHandler::isRenameProvider).thenAccept(languageServers -> {
-			LSPRenameProcessor processor = new LSPRenameProcessor(LSPEclipseUtils.getDocument(file), languageServers.get(0), 0);
-			processor.setNewName("new");
-			try {
-				ProcessorBasedRefactoring processorBasedRefactoring = new ProcessorBasedRefactoring(processor);
-				processorBasedRefactoring.checkAllConditions(new NullProgressMonitor());
-				processorBasedRefactoring.createChange(new NullProgressMonitor()).perform(new NullProgressMonitor());
-			} catch (CoreException e) {
-				e.printStackTrace();
-			}
-		}).join();
-		assertEquals("new", document.get());
-	}
-
-	@Test
-	public void testPrepareRenameRefactoringError() throws Exception {
-		IProject project = TestUtils.createProject("testPrepareRenameRefactoring");
-		IFile file = TestUtils.createUniqueTestFile(project, "old");
-		MockLanguageServer.INSTANCE.getTextDocumentService().setRenameEdit(createSimpleMockRenameEdit(LSPEclipseUtils.toUri(file)));
-		MockLanguageServer.INSTANCE.getTextDocumentService().setPrepareRenameResult(null);
-		IDocument document = LSPEclipseUtils.getDocument(file);
-		LanguageServiceAccessor.getLanguageServers(document, LSPRenameHandler::isRenameProvider).thenAccept(languageServers -> {
-			LSPRenameProcessor processor = new LSPRenameProcessor(LSPEclipseUtils.getDocument(file), languageServers.get(0), 0);
-			processor.setNewName("new");
-			try {
-				ProcessorBasedRefactoring processorBasedRefactoring = new ProcessorBasedRefactoring(processor);
-				RefactoringStatus status = processorBasedRefactoring.checkAllConditions(new NullProgressMonitor());
-				assertEquals(RefactoringStatus.FATAL, status.getSeverity());
-			} catch (CoreException e) {
-				e.printStackTrace();
-			}
-		}).join();
-	}
-
-	@Test
-	public void testRenameRefactoringExternalFile() throws Exception {
-		File file = File.createTempFile("testPerformOperationExternalFile", ".lspt");
-		MockLanguageServer.INSTANCE.getTextDocumentService().setRenameEdit(createSimpleMockRenameEdit(file.toURI()));
-		IFileStore store = EFS.getStore(file.toURI());
-		ITextFileBufferManager manager = ITextFileBufferManager.DEFAULT;
-		try {
-			manager.connectFileStore(store, new NullProgressMonitor());
-			IDocument document = ((ITextFileBuffer)manager.getFileStoreFileBuffer(store)).getDocument();
-			document.set("old");
-			LanguageServiceAccessor.getLanguageServers(document, LSPRenameHandler::isRenameProvider).thenAccept(languageServers -> {
-				LSPRenameProcessor processor = new LSPRenameProcessor(document, languageServers.get(0), 0);
-				processor.setNewName("new");
-				try {
-					ProcessorBasedRefactoring processorBasedRefactoring = new ProcessorBasedRefactoring(processor);
-					processorBasedRefactoring.checkAllConditions(new NullProgressMonitor());
-					processorBasedRefactoring.createChange(new NullProgressMonitor()).perform(new NullProgressMonitor());
-				} catch (CoreException e) {
-					e.printStackTrace();
-				}
-			}).join();
-			assertEquals("new", document.get());
-		} finally {
-			manager.disconnectFileStore(store, new NullProgressMonitor());
-			Files.deleteIfExists(file.toPath());
-		}
-	}
-
-	@Test
-	public void testRenameChangeAlsoExternalFile() throws Exception {
-		IProject project = TestUtils.createProject("blah");
-		IFile workspaceFile = TestUtils.createUniqueTestFile(project, "old");
-		File externalFile = File.createTempFile("testRenameChangeAlsoExternalFile", ".lspt");
-		try {
-			Files.write(externalFile.toPath(), "old".getBytes());
-			Map<String, List<TextEdit>> edits = new HashMap<>(2, 1.f);
-			edits.put(LSPEclipseUtils.toUri(workspaceFile).toString(), Collections.singletonList(new TextEdit(new Range(new Position(0, 0), new Position(0, 3)), "new")));
-			edits.put(LSPEclipseUtils.toUri(externalFile).toString(), Collections.singletonList(new TextEdit(new Range(new Position(0, 0), new Position(0, 3)), "new")));
-			MockLanguageServer.INSTANCE.getTextDocumentService().setRenameEdit(new WorkspaceEdit(edits));
-			IDocument document = LSPEclipseUtils.getDocument(workspaceFile);
-			LanguageServiceAccessor.getLanguageServers(document, LSPRenameHandler::isRenameProvider).thenAccept(languageServers -> {
-				LSPRenameProcessor processor = new LSPRenameProcessor(LSPEclipseUtils.getDocument(workspaceFile), languageServers.get(0), 0);
-				processor.setNewName("new");
-				try {
-					ProcessorBasedRefactoring processorBasedRefactoring = new ProcessorBasedRefactoring(processor);
-					processorBasedRefactoring.checkAllConditions(new NullProgressMonitor());
-					processorBasedRefactoring.createChange(new NullProgressMonitor()).perform(new NullProgressMonitor());
-				} catch (CoreException e) {
-					e.printStackTrace();
-				}
-			}).join();
-			assertEquals("new", document.get());
-			assertEquals("new", new String(Files.readAllBytes(externalFile.toPath())));
-		} finally {
-			Files.deleteIfExists(externalFile.toPath());
-		}
-	}
-
-	@Test
-	public void testRenameHandlerExecution() throws Exception {
-		IProject project = TestUtils.createProject("blah");
-		IFile file = TestUtils.createUniqueTestFile(project, "old");
-		MockLanguageServer.INSTANCE.getTextDocumentService().setRenameEdit(createSimpleMockRenameEdit(LSPEclipseUtils.toUri(file)));
-		ITextEditor editor = (ITextEditor) TestUtils.openEditor(file);
-		editor.selectAndReveal(1, 0);
-		ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class);
-		IHandlerService handlerService = PlatformUI.getWorkbench().getService(IHandlerService.class);
-		Command command = commandService.getCommand(IWorkbenchCommandConstants.FILE_RENAME);
-		assertTrue(command.isEnabled() && command.isHandled());
-		Event e = new Event();
-		e.widget = editor.getAdapter(Control.class);
-		Shell ideShell = editor.getSite().getShell();
-		Display display = ideShell.getDisplay();
-		e.display = display;
-		AtomicBoolean renameDialogOkPressed = new AtomicBoolean();
-		Listener pressOKonRenameDialogPaint = event -> {
-			if (renameDialogOkPressed.get()) {
-				return;
-			}
-			if(event.widget instanceof Composite) {
-				Shell shell = ((Composite)event.widget).getShell();
-				if(shell != ideShell && "Rename".equals(shell.getText())) {
-					event.widget.getDisplay().asyncExec(() -> pressOk(shell));
-					renameDialogOkPressed.set(true);
-				}
-			}
-		};
-		try {
-			display.addFilter(SWT.Paint, pressOKonRenameDialogPaint);
-			ExecutionEvent executionEvent = handlerService.createExecutionEvent(command, e);
-			command.executeWithChecks(executionEvent);
-			assertTrue("Rename dialog not shown", new DisplayHelper() {
-				@Override
-				protected boolean condition() {
-					return renameDialogOkPressed.get();
-				}
-			}.waitForCondition(display, 3000));
-			IDocument document = LSPEclipseUtils.getDocument(editor);
-			assertTrue("document not modified, rename not applied", new DisplayHelper() {
-				@Override
-				protected boolean condition() {
-					return "new".equals(document.get());
-				}
-			}.waitForCondition(display, 3000));
-		} finally {
-			ideShell.getDisplay().removeFilter(SWT.Paint, pressOKonRenameDialogPaint);
-		}
-	}
-	
-	@Test
-	public void testPlaceholderUsingPlaceholderFromPrepareRenameResult() throws Exception {
-		IProject project = TestUtils.createProject("blah");
-		IFile file = TestUtils.createUniqueTestFile(project, "old");
-		MockLanguageServer.INSTANCE.getTextDocumentService().setRenameEdit(createSimpleMockRenameEdit(LSPEclipseUtils.toUri(file)));
-		IDocument document = LSPEclipseUtils.getDocument(file);
-		AtomicReference<String> placeholder = new AtomicReference<>();
-		LanguageServiceAccessor.getLanguageServers(document, LSPRenameHandler::isRenameProvider).thenAccept(languageServers -> {
-			LSPRenameProcessor processor = new LSPRenameProcessor(LSPEclipseUtils.getDocument(file), languageServers.get(0), 0);
-			try {
-				processor.checkInitialConditions(new NullProgressMonitor());
-			} catch (CoreException e) {
-				e.printStackTrace();
-			}
-			placeholder.set(processor.getPlaceholder());
-		}).join();
-		assertEquals("placeholder", placeholder.get());
-	}
-	
-	@Test
-	public void testPlaceholderUsingRangeFromPrepareRenameResult() throws Exception {
-		IProject project = TestUtils.createProject("blah");
-		IFile file = TestUtils.createUniqueTestFile(project, "old");
-		MockLanguageServer.INSTANCE.getTextDocumentService().setRenameEdit(createSimpleMockRenameEdit(LSPEclipseUtils.toUri(file)));
-		Range range = new Range(new Position(0, 1), new Position(0, 3)); // Two last letters of "old".
-		MockLanguageServer.INSTANCE.getTextDocumentService().setPrepareRenameResult(Either.forLeft(range));
-		IDocument document = LSPEclipseUtils.getDocument(file);
-		AtomicReference<String> placeholder = new AtomicReference<>();
-		LanguageServiceAccessor.getLanguageServers(document, LSPRenameHandler::isRenameProvider).thenAccept(languageServers -> {
-			LSPRenameProcessor processor = new LSPRenameProcessor(LSPEclipseUtils.getDocument(file), languageServers.get(0), 0);
-			try {
-				processor.checkInitialConditions(new NullProgressMonitor());
-			} catch (CoreException e) {
-				e.printStackTrace();
-			}
-			placeholder.set(processor.getPlaceholder());
-		}).join();
-		assertEquals("ld", placeholder.get());
-	}
-	
-	private void pressOk(Shell dialogShell) {
-		try {
-			Dialog dialog = (Dialog)dialogShell.getData();
-			Method okPressedMethod = Dialog.class.getDeclaredMethod("okPressed");
-			okPressedMethod.setAccessible(true);
-			okPressedMethod.invoke(dialog);
-		} catch (Exception ex) {
-			throw new Error(ex);
-		}
-	}
-
-	private static WorkspaceEdit createSimpleMockRenameEdit(URI fileUri) {
-		WorkspaceEdit res = new WorkspaceEdit();
-		File f = new File(fileUri);
-		res.setChanges(Collections.singletonMap(LSPEclipseUtils.toUri(f).toString(),
-				Collections.singletonList(new TextEdit(new Range(new Position(0, 0), new Position(0, 3)), "new"))));
-		return res;
-	}
-}
diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/symbols/SymbolsModelTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/symbols/SymbolsModelTest.java
deleted file mode 100644
index 1d3ab02..0000000
--- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/symbols/SymbolsModelTest.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.test.symbols;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.lsp4e.outline.SymbolsModel;
-import org.eclipse.lsp4e.test.AllCleanRule;
-import org.eclipse.lsp4j.DocumentSymbol;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.lsp4j.SymbolKind;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class SymbolsModelTest {
-
-	@Rule public AllCleanRule clear = new AllCleanRule();
-
-	@Test
-	public void test() {
-		List<SymbolInformation> items = new ArrayList<>();
-		Range range = new Range(new Position(0, 0), new Position(10, 0));
-		items.add(createSymbolInformation("Namespace", SymbolKind.Namespace, range));
-
-		range = new Range(new Position(1, 0), new Position(9, 0));
-		items.add(createSymbolInformation("Class", SymbolKind.Class, range));
-
-		range = new Range(new Position(2, 0), new Position(8, 0));
-		items.add(createSymbolInformation("Method", SymbolKind.Method, range));
-
-		SymbolsModel symbolsModel = new SymbolsModel();
-		List<Either<SymbolInformation, DocumentSymbol>> eitherItems = new ArrayList<>(items.size());
-		items.forEach(item -> eitherItems.add(Either.forLeft(item)));
-		symbolsModel.update(eitherItems);
-
-		assertEquals(1, symbolsModel.getElements().length);
-		assertEquals(items.get(0), symbolsModel.getElements()[0]);
-		Object[] children = symbolsModel.getChildren(symbolsModel.getElements()[0]);
-		assertEquals(1, children.length);
-		assertEquals(items.get(1), children[0]);
-		children = symbolsModel.getChildren(children[0]);
-		assertEquals(1, children.length);
-		assertEquals(items.get(2), children[0]);
-
-		Object parent = symbolsModel.getParent(children[0]);
-		assertEquals(items.get(1), parent);
-		parent = symbolsModel.getParent(parent);
-		assertEquals(items.get(0), parent);
-	}
-
-	/**
-	 * When a symbol and its child have matching starting points, ensure that the
-	 * child is marked as such and not a new parent
-	 */
-	@Test
-	public void testSymbolsMatchingStartingPositions() {
-		List<SymbolInformation> items = new ArrayList<>();
-		Range range = new Range(new Position(0, 0), new Position(10, 0));
-		items.add(createSymbolInformation("Namespace", SymbolKind.Namespace, range));
-
-		range = new Range(new Position(0, 0), new Position(9, 0));
-		items.add(createSymbolInformation("Class", SymbolKind.Class, range));
-
-		range = new Range(new Position(1, 0), new Position(8, 0));
-		items.add(createSymbolInformation("Method", SymbolKind.Method, range));
-
-		SymbolsModel symbolsModel = new SymbolsModel();
-		List<Either<SymbolInformation, DocumentSymbol>> eitherItems = new ArrayList<>(items.size());
-		items.forEach(item -> eitherItems.add(Either.forLeft(item)));
-		symbolsModel.update(eitherItems);
-
-		assertEquals(1, symbolsModel.getElements().length);
-		assertEquals(items.get(0), symbolsModel.getElements()[0]);
-		assertTrue(symbolsModel.hasChildren(symbolsModel.getElements()[0]));
-		Object[] children = symbolsModel.getChildren(symbolsModel.getElements()[0]);
-		assertEquals(1, children.length);
-		assertEquals(items.get(1), children[0]);
-		assertTrue(symbolsModel.hasChildren(children[0]));
-		children = symbolsModel.getChildren(children[0]);
-		assertEquals(1, children.length);
-		assertEquals(items.get(2), children[0]);
-
-		Object parent = symbolsModel.getParent(children[0]);
-		assertEquals(items.get(1), parent);
-		parent = symbolsModel.getParent(parent);
-		assertEquals(items.get(0), parent);
-	}
-
-	/**
-	 * Confirms that duplicate items do not become children of themselves
-	 */
-	@Test
-	public void testDuplicateSymbols() {
-		List<SymbolInformation> items = new ArrayList<>();
-		Range range = new Range(new Position(0, 0), new Position(0, 0));
-		items.add(createSymbolInformation("Duplicate", SymbolKind.Namespace, range));
-		items.add(createSymbolInformation("Duplicate", SymbolKind.Namespace, range));
-
-		SymbolsModel symbolsModel = new SymbolsModel();
-		List<Either<SymbolInformation, DocumentSymbol>> eitherItems = new ArrayList<>(items.size());
-		items.forEach(item -> eitherItems.add(Either.forLeft(item)));
-		symbolsModel.update(eitherItems);
-
-		assertEquals(2, symbolsModel.getElements().length);
-		assertFalse(symbolsModel.hasChildren(symbolsModel.getElements()[0]));
-		assertFalse(symbolsModel.hasChildren(symbolsModel.getElements()[1]));
-		assertEquals(0, symbolsModel.getChildren(symbolsModel.getElements()[0]).length);
-		assertEquals(0, symbolsModel.getChildren(symbolsModel.getElements()[1]).length);
-	}
-
-	@Test
-	public void testGetElementsEmptyResponse() {
-		List<SymbolInformation> items = new ArrayList<>();
-
-		SymbolsModel symbolsModel = new SymbolsModel();
-		List<Either<SymbolInformation, DocumentSymbol>> eitherItems = new ArrayList<>(items.size());
-		items.forEach(item -> eitherItems.add(Either.forLeft(item)));
-		symbolsModel.update(eitherItems);
-
-		assertEquals(0, symbolsModel.getElements().length);
-	}
-
-	@Test
-	public void testGetElementsNullResponse() {
-		SymbolsModel symbolsModel = new SymbolsModel();
-		symbolsModel.update(null);
-
-		assertEquals(0, symbolsModel.getElements().length);
-	}
-
-	@Test
-	public void testGetParentEmptyResponse() {
-		SymbolsModel symbolsModel = new SymbolsModel();
-		symbolsModel.update(Collections.emptyList());
-
-		assertEquals(null, symbolsModel.getParent(null));
-	}
-
-	@Test
-	public void testGetParentNullResponse() {
-		SymbolsModel symbolsModel = new SymbolsModel();
-		symbolsModel.update(null);
-
-		assertEquals(null, symbolsModel.getParent(null));
-	}
-
-	private SymbolInformation createSymbolInformation(String name, SymbolKind kind, Range range) {
-		SymbolInformation symbolInformation = new SymbolInformation();
-		symbolInformation.setName(name);
-		symbolInformation.setKind(kind);
-		symbolInformation.setLocation(new Location("file://test", range));
-		return symbolInformation;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.tests.mock/.classpath b/org.eclipse.lsp4e.tests.mock/.classpath
deleted file mode 100644
index eca7bdb..0000000
--- a/org.eclipse.lsp4e.tests.mock/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.lsp4e.tests.mock/.gitignore b/org.eclipse.lsp4e.tests.mock/.gitignore
deleted file mode 100644
index ae3c172..0000000
--- a/org.eclipse.lsp4e.tests.mock/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/bin/
diff --git a/org.eclipse.lsp4e.tests.mock/.project b/org.eclipse.lsp4e.tests.mock/.project
deleted file mode 100644
index e4a33b2..0000000
--- a/org.eclipse.lsp4e.tests.mock/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.lsp4e.tests.mock</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.lsp4e.tests.mock/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.lsp4e.tests.mock/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 1976fd2..0000000
--- a/org.eclipse.lsp4e.tests.mock/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,311 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-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_compact_if=16
-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_expressions_in_for_loop_header=0
-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_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-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_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_closing_angle_bracket_in_type_arguments=do not 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
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-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_lambda_arrow=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
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-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_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_unary_operator=do not 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_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
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-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_lambda_arrow=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
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-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_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_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
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-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_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/org.eclipse.lsp4e.tests.mock/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.lsp4e.tests.mock/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 43126db..0000000
--- a/org.eclipse.lsp4e.tests.mock/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,61 +0,0 @@
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
-formatter_settings_version=13
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=true
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_type_arguments=false
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/org.eclipse.lsp4e.tests.mock/EPL-2.0.html b/org.eclipse.lsp4e.tests.mock/EPL-2.0.html
deleted file mode 100644
index 4b95323..0000000
--- a/org.eclipse.lsp4e.tests.mock/EPL-2.0.html
+++ /dev/null
@@ -1,299 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>“Contribution” means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        “originates” from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor's behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>“Contributor” means any person or entity that Distributes the Program.</p>
-    <p>“Licensed Patents” mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>“Program” means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>“Recipient” means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>“Derivative Works” shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>“Modified Works” shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>“Distribute” means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>“Source Code” means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>“Secondary License” means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient's
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient's receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients' rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (‘notices’) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (“Commercial Contributor”)
-      hereby agrees to defend and indemnify every other Contributor
-      (“Indemnified Contributor”) against any losses, damages and costs
-      (collectively “Losses”) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor's responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient's patent(s), then such Recipient's rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient's rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient's rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient's obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
-    <p>“This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.”
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.lsp4e.tests.mock/META-INF/MANIFEST.MF b/org.eclipse.lsp4e.tests.mock/META-INF/MANIFEST.MF
deleted file mode 100644
index 41cc3cd..0000000
--- a/org.eclipse.lsp4e.tests.mock/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Mock Language Server to test LSP4E
-Bundle-SymbolicName: org.eclipse.lsp4e.tests.mock
-Bundle-Version: 0.14.1.qualifier
-Bundle-Vendor: Eclipse LSP4E
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: org.eclipse.lsp4j;bundle-version="[0.12.0,0.13.0)",
- org.eclipse.lsp4j.jsonrpc;bundle-version="[0.12.0,0.13.0)"
-Export-Package: org.eclipse.lsp4e.tests.mock
-Automatic-Module-Name: org.eclipse.lsp4e.tests.mock
diff --git a/org.eclipse.lsp4e.tests.mock/build.properties b/org.eclipse.lsp4e.tests.mock/build.properties
deleted file mode 100644
index 85152ad..0000000
--- a/org.eclipse.lsp4e.tests.mock/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               EPL-2.0.html
diff --git a/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockLanguageServer.java b/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockLanguageServer.java
deleted file mode 100644
index e10dd93..0000000
--- a/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockLanguageServer.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2021 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Mickael Istria (Red Hat Inc.) - added support for delays
- *  Lucas Bullen (Red Hat Inc.) - Bug 508458 - Add support for codelens.
- *  Kris De Volder (Pivotal Inc.) - Provide test code access to Client proxy.
- *******************************************************************************/
-package org.eclipse.lsp4e.tests.mock;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-
-import org.eclipse.lsp4j.CodeAction;
-import org.eclipse.lsp4j.CodeLens;
-import org.eclipse.lsp4j.CodeLensOptions;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.CompletionList;
-import org.eclipse.lsp4j.CompletionOptions;
-import org.eclipse.lsp4j.Diagnostic;
-import org.eclipse.lsp4j.DidChangeTextDocumentParams;
-import org.eclipse.lsp4j.DidCloseTextDocumentParams;
-import org.eclipse.lsp4j.DidOpenTextDocumentParams;
-import org.eclipse.lsp4j.DidSaveTextDocumentParams;
-import org.eclipse.lsp4j.DocumentHighlight;
-import org.eclipse.lsp4j.DocumentLink;
-import org.eclipse.lsp4j.DocumentLinkOptions;
-import org.eclipse.lsp4j.DocumentSymbol;
-import org.eclipse.lsp4j.ExecuteCommandOptions;
-import org.eclipse.lsp4j.Hover;
-import org.eclipse.lsp4j.InitializeParams;
-import org.eclipse.lsp4j.InitializeResult;
-import org.eclipse.lsp4j.LinkedEditingRangeRegistrationOptions;
-import org.eclipse.lsp4j.LinkedEditingRanges;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.LocationLink;
-import org.eclipse.lsp4j.RenameOptions;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.SignatureHelp;
-import org.eclipse.lsp4j.SignatureHelpOptions;
-import org.eclipse.lsp4j.TextDocumentSyncKind;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.jsonrpc.Launcher;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.lsp4j.launch.LSPLauncher;
-import org.eclipse.lsp4j.services.LanguageClient;
-import org.eclipse.lsp4j.services.LanguageServer;
-
-public final class MockLanguageServer implements LanguageServer {
-
-	public static MockLanguageServer INSTANCE = new MockLanguageServer();
-
-	/**
-	 * This command will be reported on initialization to be supported for execution
-	 * by the server
-	 */
-	public static String SUPPORTED_COMMAND_ID = "mock.command";
-
-	private MockTextDocumentService textDocumentService = new MockTextDocumentService(this::buildMaybeDelayedFuture);
-	private MockWorkspaceService workspaceService = new MockWorkspaceService(this::buildMaybeDelayedFuture);
-	private InitializeResult initializeResult = new InitializeResult();
-	private long delay = 0;
-	private boolean started;
-
-	private List<LanguageClient> remoteProxies = new ArrayList<>();
-
-	public static void reset() {
-		INSTANCE = new MockLanguageServer();
-	}
-
-	private MockLanguageServer() {
-		resetInitializeResult();
-	}
-
-	/**
-	 * Starts the language server on stdin/stdout
-	 *
-	 * @throws ExecutionException
-	 * @throws InterruptedException
-	 */
-	public static void main(String[] args) throws InterruptedException, ExecutionException {
-		Launcher<LanguageClient> l = LSPLauncher.createServerLauncher(MockLanguageServer.INSTANCE, System.in, System.out);
-		Future<?> f = l.startListening();
-		MockLanguageServer.INSTANCE.addRemoteProxy(l.getRemoteProxy());
-		f.get();
-	}
-
-	public void addRemoteProxy(LanguageClient remoteProxy) {
-		this.textDocumentService.addRemoteProxy(remoteProxy);
-		this.remoteProxies.add(remoteProxy);
-		this.started = true;
-	}
-
-	private void resetInitializeResult() {
-		ServerCapabilities capabilities = new ServerCapabilities();
-		capabilities.setTextDocumentSync(TextDocumentSyncKind.Full);
-		CompletionOptions completionProvider = new CompletionOptions(false, null);
-		capabilities.setCompletionProvider(completionProvider);
-		capabilities.setHoverProvider(true);
-		capabilities.setDefinitionProvider(true);
-		capabilities.setTypeDefinitionProvider(Boolean.TRUE);
-		capabilities.setReferencesProvider(true);
-		capabilities.setDocumentFormattingProvider(true);
-		capabilities.setCodeActionProvider(Boolean.TRUE);
-		capabilities.setCodeLensProvider(new CodeLensOptions(true));
-		capabilities.setDocumentLinkProvider(new DocumentLinkOptions());
-		capabilities.setSignatureHelpProvider(new SignatureHelpOptions());
-		capabilities.setDocumentHighlightProvider(Boolean.TRUE);
-		capabilities
-				.setExecuteCommandProvider(new ExecuteCommandOptions(Collections.singletonList(SUPPORTED_COMMAND_ID)));
-		RenameOptions prepareRenameProvider = new RenameOptions();
-		prepareRenameProvider.setPrepareProvider(true);
-		Either<Boolean, RenameOptions> renameEither = Either.forRight(prepareRenameProvider);
-		capabilities.setRenameProvider(renameEither);
-		capabilities.setColorProvider(Boolean.TRUE);
-		capabilities.setDocumentSymbolProvider(Boolean.TRUE);
-		capabilities.setLinkedEditingRangeProvider(new LinkedEditingRangeRegistrationOptions());
-		initializeResult.setCapabilities(capabilities);
-	}
-
-	<U> CompletableFuture<U> buildMaybeDelayedFuture(U value) {
-		if (delay > 0) {
-			return CompletableFuture.runAsync(() -> {
-				try {
-					Thread.sleep(delay);
-				} catch (InterruptedException e) {
-					throw new RuntimeException(e);
-				}
-			}).thenApply(v -> value);
-		}
-		return CompletableFuture.completedFuture(value);
-	}
-
-	@Override
-	public CompletableFuture<InitializeResult> initialize(InitializeParams params) {
-		return buildMaybeDelayedFuture(initializeResult);
-	}
-
-	@Override
-	public MockTextDocumentService getTextDocumentService() {
-		return textDocumentService;
-	}
-
-	@Override
-	public MockWorkspaceService getWorkspaceService() {
-		return workspaceService;
-	}
-
-	public void setCompletionList(CompletionList completionList) {
-		this.textDocumentService.setMockCompletionList(completionList);
-	}
-
-	public void setHover(Hover hover) {
-		this.textDocumentService.setMockHover(hover);
-	}
-
-	public void setCodeLens(List<CodeLens> codeLens) {
-		this.textDocumentService.setMockCodeLenses(codeLens);
-	}
-
-	public void setDefinition(List<? extends Location> definitionLocations){
-		this.textDocumentService.setMockDefinitionLocations(definitionLocations);
-	}
-
-	public void setDidOpenCallback(CompletableFuture<DidOpenTextDocumentParams> didOpenExpectation) {
-		this.textDocumentService.setDidOpenCallback(didOpenExpectation);
-	}
-
-	public void setDidChangeCallback(CompletableFuture<DidChangeTextDocumentParams> didChangeExpectation) {
-		this.textDocumentService.setDidChangeCallback(didChangeExpectation);
-	}
-
-	public void setDidSaveCallback(CompletableFuture<DidSaveTextDocumentParams> didSaveExpectation) {
-		this.textDocumentService.setDidSaveCallback(didSaveExpectation);
-	}
-
-	public void setDidCloseCallback(CompletableFuture<DidCloseTextDocumentParams> didCloseExpectation) {
-		this.textDocumentService.setDidCloseCallback(didCloseExpectation);
-	}
-
-	public void setFormattingTextEdits(List<? extends TextEdit> formattingTextEdits) {
-		this.textDocumentService.setMockFormattingTextEdits(formattingTextEdits);
-	}
-
-	public void setDocumentHighlights(List<? extends DocumentHighlight> documentHighlights) {
-		this.textDocumentService.setDocumentHighlights(documentHighlights);
-	}
-
-	public void setLinkedEditingRanges(LinkedEditingRanges linkedEditingRanges) {
-		this.textDocumentService.setLinkedEditingRanges(linkedEditingRanges);
-	}
-
-	public void setCompletionTriggerChars(Set<String> chars) {
-		if (chars != null) {
-			initializeResult.getCapabilities().getCompletionProvider().setTriggerCharacters(new ArrayList<>(chars));
-		}
-	}
-
-	public void setContextInformationTriggerChars(Set<String> chars) {
-		if (chars != null) {
-			initializeResult.getCapabilities().getSignatureHelpProvider().setTriggerCharacters(new ArrayList<>(chars));
-		}
-	}
-
-	public InitializeResult getInitializeResult() {
-		return initializeResult;
-	}
-
-	@Override
-	public CompletableFuture<Object> shutdown() {
-		this.started = false;
-		return buildMaybeDelayedFuture(CompletableFuture.completedFuture(Collections.emptySet()));
-	}
-
-	@Override
-	public void exit() {
-	}
-
-	public void setTimeToProceedQueries(long l) {
-		this.delay = l;
-	}
-
-	public void setDiagnostics(List<Diagnostic> diagnostics) {
-		this.textDocumentService.setDiagnostics(diagnostics);
-	}
-
-	public void setCodeActions(List<Either<Command, CodeAction>> codeActions) {
-		this.textDocumentService.setCodeActions(codeActions);
-	}
-
-	public void setSignatureHelp(SignatureHelp signatureHelp) {
-		this.textDocumentService.setSignatureHelp(signatureHelp);
-	}
-
-	public void setDocumentLinks(List<DocumentLink> documentLinks) {
-		this.textDocumentService.setMockDocumentLinks(documentLinks);
-	}
-
-	public void setTypeDefinitions(List<LocationLink> locations) {
-		this.textDocumentService.setMockTypeDefinitions(locations);
-	}
-
-	public boolean isRunning() {
-		return this.started;
-	}
-
-	public List<LanguageClient> getRemoteProxies() {
-		return remoteProxies;
-	}
-
-	public void setDocumentSymbols(DocumentSymbol documentSymbol) {
-		this.textDocumentService.setDocumentSymbols(Collections.singletonList(documentSymbol));
-	}
-
-}
diff --git a/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockLanguageServerMultiRootFolders.java b/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockLanguageServerMultiRootFolders.java
deleted file mode 100644
index 81b413e..0000000
--- a/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockLanguageServerMultiRootFolders.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016-2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Mickael Istria (Red Hat Inc.) - added support for delays
- *  Lucas Bullen (Red Hat Inc.) - Bug 508458 - Add support for codelens
- *  Martin Lippert (Pivotal Inc.) - Bug 531030 - fixed crash when initial project gets deleted in multi-root workspaces
- *******************************************************************************/
-package org.eclipse.lsp4e.tests.mock;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.function.Function;
-
-import org.eclipse.lsp4j.CodeAction;
-import org.eclipse.lsp4j.CodeLens;
-import org.eclipse.lsp4j.CodeLensOptions;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.CompletionList;
-import org.eclipse.lsp4j.CompletionOptions;
-import org.eclipse.lsp4j.Diagnostic;
-import org.eclipse.lsp4j.DidChangeTextDocumentParams;
-import org.eclipse.lsp4j.DidCloseTextDocumentParams;
-import org.eclipse.lsp4j.DidOpenTextDocumentParams;
-import org.eclipse.lsp4j.DidSaveTextDocumentParams;
-import org.eclipse.lsp4j.DocumentHighlight;
-import org.eclipse.lsp4j.DocumentLink;
-import org.eclipse.lsp4j.DocumentLinkOptions;
-import org.eclipse.lsp4j.Hover;
-import org.eclipse.lsp4j.InitializeParams;
-import org.eclipse.lsp4j.InitializeResult;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.SignatureHelp;
-import org.eclipse.lsp4j.SignatureHelpOptions;
-import org.eclipse.lsp4j.TextDocumentSyncKind;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.WorkspaceFoldersOptions;
-import org.eclipse.lsp4j.WorkspaceServerCapabilities;
-import org.eclipse.lsp4j.jsonrpc.Launcher;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.lsp4j.launch.LSPLauncher;
-import org.eclipse.lsp4j.services.LanguageClient;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.lsp4j.services.WorkspaceService;
-
-public final class MockLanguageServerMultiRootFolders implements LanguageServer {
-
-	public static MockLanguageServerMultiRootFolders INSTANCE = new MockLanguageServerMultiRootFolders();
-
-	private MockTextDocumentService textDocumentService = new MockTextDocumentService(this::buildMaybeDelayedFuture);
-	private MockWorkspaceService workspaceService = new MockWorkspaceService(this::buildMaybeDelayedFuture);
-	private InitializeResult initializeResult = new InitializeResult();
-	private long delay = 0;
-	private boolean started;
-
-	public static void reset() {
-		INSTANCE = new MockLanguageServerMultiRootFolders();
-	}
-
-	private MockLanguageServerMultiRootFolders() {
-		resetInitializeResult();
-	}
-
-	/**
-	 * Starts the language server on stdin/stdout
-	 * 
-	 * @throws ExecutionException
-	 * @throws InterruptedException
-	 */
-	public static void main(String[] args) throws InterruptedException, ExecutionException {
-		Launcher<LanguageClient> l = LSPLauncher.createServerLauncher(MockLanguageServerMultiRootFolders.INSTANCE,
-				System.in, System.out);
-		Future<?> f = l.startListening();
-		MockLanguageServerMultiRootFolders.INSTANCE.addRemoteProxy(l.getRemoteProxy());
-		f.get();
-	}
-
-	public void addRemoteProxy(LanguageClient remoteProxy) {
-		this.textDocumentService.addRemoteProxy(remoteProxy);
-		this.started = true;
-	}
-
-	private void resetInitializeResult() {
-		ServerCapabilities capabilities = new ServerCapabilities();
-		capabilities.setTextDocumentSync(TextDocumentSyncKind.Full);
-		CompletionOptions completionProvider = new CompletionOptions(false, null);
-		capabilities.setCompletionProvider(completionProvider);
-		capabilities.setHoverProvider(true);
-		capabilities.setDefinitionProvider(true);
-		capabilities.setReferencesProvider(true);
-		capabilities.setDocumentFormattingProvider(true);
-		capabilities.setCodeActionProvider(Boolean.TRUE);
-		capabilities.setCodeLensProvider(new CodeLensOptions(true));
-		capabilities.setDocumentLinkProvider(new DocumentLinkOptions());
-		capabilities.setSignatureHelpProvider(new SignatureHelpOptions());
-		capabilities.setDocumentHighlightProvider(Boolean.TRUE);
-
-		WorkspaceServerCapabilities workspace = new WorkspaceServerCapabilities();
-		WorkspaceFoldersOptions workspaceFolders = new WorkspaceFoldersOptions();
-		workspaceFolders.setSupported(Boolean.TRUE);
-
-		workspace.setWorkspaceFolders(workspaceFolders);
-		capabilities.setWorkspace(workspace);
-		initializeResult.setCapabilities(capabilities);
-	}
-
-	<U> CompletableFuture<U> buildMaybeDelayedFuture(U value) {
-		if (delay > 0) {
-			return CompletableFuture.runAsync(() -> {
-				try {
-					Thread.sleep(delay);
-				} catch (InterruptedException e) {
-					throw new RuntimeException(e);
-				}
-			}).thenApply(new Function<Void, U>() {
-				@Override
-				public U apply(Void v) {
-					return value;
-				}
-			});
-		}
-		return CompletableFuture.completedFuture(value);
-	}
-
-	@Override
-	public CompletableFuture<InitializeResult> initialize(InitializeParams params) {
-		return buildMaybeDelayedFuture(initializeResult);
-	}
-
-	@Override
-	public MockTextDocumentService getTextDocumentService() {
-		return textDocumentService;
-	}
-
-	@Override
-	public WorkspaceService getWorkspaceService() {
-		return workspaceService;
-	}
-
-	public void setCompletionList(CompletionList completionList) {
-		this.textDocumentService.setMockCompletionList(completionList);
-	}
-
-	public void setHover(Hover hover) {
-		this.textDocumentService.setMockHover(hover);
-	}
-
-	public void setCodeLens(List<CodeLens> codeLens) {
-		this.textDocumentService.setMockCodeLenses(codeLens);
-	}
-
-	public void setDefinition(List<? extends Location> definitionLocations) {
-		this.textDocumentService.setMockDefinitionLocations(definitionLocations);
-	}
-
-	public void setDidOpenCallback(CompletableFuture<DidOpenTextDocumentParams> didOpenExpectation) {
-		this.textDocumentService.setDidOpenCallback(didOpenExpectation);
-	}
-
-	public void setDidChangeCallback(CompletableFuture<DidChangeTextDocumentParams> didChangeExpectation) {
-		this.textDocumentService.setDidChangeCallback(didChangeExpectation);
-	}
-
-	public void setDidSaveCallback(CompletableFuture<DidSaveTextDocumentParams> didSaveExpectation) {
-		this.textDocumentService.setDidSaveCallback(didSaveExpectation);
-	}
-
-	public void setDidCloseCallback(CompletableFuture<DidCloseTextDocumentParams> didCloseExpectation) {
-		this.textDocumentService.setDidCloseCallback(didCloseExpectation);
-	}
-
-	public void setFormattingTextEdits(List<? extends TextEdit> formattingTextEdits) {
-		this.textDocumentService.setMockFormattingTextEdits(formattingTextEdits);
-	}
-
-	public void setDocumentHighlights(List<? extends DocumentHighlight> documentHighlights) {
-		this.textDocumentService.setDocumentHighlights(documentHighlights);
-	}
-
-	public void setCompletionTriggerChars(Set<String> chars) {
-		if (chars != null) {
-			initializeResult.getCapabilities().getCompletionProvider().setTriggerCharacters(new ArrayList<>(chars));
-		}
-	}
-
-	public void setContextInformationTriggerChars(Set<String> chars) {
-		if (chars != null) {
-			initializeResult.getCapabilities().getSignatureHelpProvider().setTriggerCharacters(new ArrayList<>(chars));
-		}
-	}
-
-	public InitializeResult getInitializeResult() {
-		return initializeResult;
-	}
-
-	@Override
-	public CompletableFuture<Object> shutdown() {
-		this.started = false;
-		this.delay = 0;
-		resetInitializeResult();
-		this.textDocumentService.reset();
-		return CompletableFuture.completedFuture(Collections.emptySet());
-	}
-
-	@Override
-	public void exit() {
-	}
-
-	public void setTimeToProceedQueries(int i) {
-		this.delay = i;
-	}
-
-	public void setDiagnostics(List<Diagnostic> diagnostics) {
-		this.textDocumentService.setDiagnostics(diagnostics);
-	}
-
-	public void setCodeActions(List<Either<Command, CodeAction>> codeActions) {
-		this.textDocumentService.setCodeActions(codeActions);
-	}
-
-	public void setSignatureHelp(SignatureHelp signatureHelp) {
-		this.textDocumentService.setSignatureHelp(signatureHelp);
-	}
-
-	public void setDocumentLinks(List<DocumentLink> documentLinks) {
-		this.textDocumentService.setMockDocumentLinks(documentLinks);
-	}
-
-	public boolean isRunning() {
-		return this.started;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockTextDocumentService.java b/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockTextDocumentService.java
deleted file mode 100644
index 05419b0..0000000
--- a/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockTextDocumentService.java
+++ /dev/null
@@ -1,374 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2021 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Mickael Istria (Red Hat Inc.) - Support for delay and mock references
- *  Lucas Bullen (Red Hat Inc.) - Bug 508458 - Add support for codelens
- *  Pierre-Yves B. <pyvesdev@gmail.com> - Bug 525411 - [rename] input field should be filled with symbol to rename
- *******************************************************************************/
-package org.eclipse.lsp4e.tests.mock;
-
-import java.io.File;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import org.eclipse.lsp4j.CodeAction;
-import org.eclipse.lsp4j.CodeActionParams;
-import org.eclipse.lsp4j.CodeLens;
-import org.eclipse.lsp4j.CodeLensParams;
-import org.eclipse.lsp4j.ColorInformation;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.CompletionItem;
-import org.eclipse.lsp4j.CompletionList;
-import org.eclipse.lsp4j.CompletionParams;
-import org.eclipse.lsp4j.DefinitionParams;
-import org.eclipse.lsp4j.Diagnostic;
-import org.eclipse.lsp4j.DidChangeTextDocumentParams;
-import org.eclipse.lsp4j.DidCloseTextDocumentParams;
-import org.eclipse.lsp4j.DidOpenTextDocumentParams;
-import org.eclipse.lsp4j.DidSaveTextDocumentParams;
-import org.eclipse.lsp4j.DocumentColorParams;
-import org.eclipse.lsp4j.DocumentFormattingParams;
-import org.eclipse.lsp4j.DocumentHighlight;
-import org.eclipse.lsp4j.DocumentHighlightParams;
-import org.eclipse.lsp4j.DocumentLink;
-import org.eclipse.lsp4j.DocumentLinkParams;
-import org.eclipse.lsp4j.DocumentOnTypeFormattingParams;
-import org.eclipse.lsp4j.DocumentRangeFormattingParams;
-import org.eclipse.lsp4j.DocumentSymbol;
-import org.eclipse.lsp4j.DocumentSymbolParams;
-import org.eclipse.lsp4j.Hover;
-import org.eclipse.lsp4j.HoverParams;
-import org.eclipse.lsp4j.LinkedEditingRangeParams;
-import org.eclipse.lsp4j.LinkedEditingRanges;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.LocationLink;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.PrepareRenameParams;
-import org.eclipse.lsp4j.PrepareRenameResult;
-import org.eclipse.lsp4j.PublishDiagnosticsParams;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.ReferenceParams;
-import org.eclipse.lsp4j.RenameParams;
-import org.eclipse.lsp4j.SignatureHelp;
-import org.eclipse.lsp4j.SignatureHelpParams;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.TypeDefinitionParams;
-import org.eclipse.lsp4j.WorkspaceEdit;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.lsp4j.services.LanguageClient;
-import org.eclipse.lsp4j.services.TextDocumentService;
-
-public class MockTextDocumentService implements TextDocumentService {
-
-	private CompletionList mockCompletionList;
-	private Hover mockHover;
-	private List<? extends Location> mockDefinitionLocations;
-	private List<? extends LocationLink> mockTypeDefinitions;
-	private List<? extends TextEdit> mockFormattingTextEdits;
-	private SignatureHelp mockSignatureHelp;
-	private List<CodeLens> mockCodeLenses;
-	private List<DocumentLink> mockDocumentLinks;
-	private List<? extends DocumentHighlight> mockDocumentHighlights;
-	private LinkedEditingRanges mockLinkedEditingRanges;
-
-	private CompletableFuture<DidOpenTextDocumentParams> didOpenCallback;
-	private CompletableFuture<DidChangeTextDocumentParams> didChangeCallback;
-	private CompletableFuture<DidSaveTextDocumentParams> didSaveCallback;
-	private CompletableFuture<DidCloseTextDocumentParams> didCloseCallback;
-
-	private Function<?, ? extends CompletableFuture<?>> _futureFactory;
-	private List<LanguageClient> remoteProxies;
-	private Location mockReferences;
-	private List<Diagnostic> diagnostics;
-	private List<Either<Command, CodeAction>> mockCodeActions;
-	private List<ColorInformation> mockDocumentColors;
-	private WorkspaceEdit mockRenameEdit;
-	private Either<Range, PrepareRenameResult> mockPrepareRenameResult;
-	private List<DocumentSymbol> documentSymbols;
-
-	public <U> MockTextDocumentService(Function<U, CompletableFuture<U>> futureFactory) {
-		this._futureFactory = futureFactory;
-		// Some default values for mocks, can be overriden
-		CompletionItem item = new CompletionItem();
-		item.setLabel("Mock completion item");
-		mockCompletionList = new CompletionList(false, Collections.singletonList(item));
-		mockHover = new Hover(Collections.singletonList(Either.forLeft("Mock hover")), null);
-		mockPrepareRenameResult = Either.forRight(new PrepareRenameResult(new Range(new Position(0,0), new Position(0,0)), "placeholder"));
-		this.remoteProxies = new ArrayList<>();
-		this.documentSymbols = Collections.emptyList();
-	}
-
-	private <U> CompletableFuture<U> futureFactory(U value) {
-		return ((Function<U, CompletableFuture<U>>) this._futureFactory).apply(value);
-	}
-
-	@Override
-	public CompletableFuture<Either<List<CompletionItem>, CompletionList>> completion(CompletionParams position) {
-		return futureFactory(Either.forRight(mockCompletionList));
-	}
-
-	@Override
-	public CompletableFuture<CompletionItem> resolveCompletionItem(CompletionItem unresolved) {
-		return CompletableFuture.completedFuture(null);
-	}
-
-	@Override
-	public CompletableFuture<Hover> hover(HoverParams position) {
-		return CompletableFuture.completedFuture(mockHover);
-	}
-
-	@Override
-	public CompletableFuture<SignatureHelp> signatureHelp(SignatureHelpParams position) {
-		return CompletableFuture.completedFuture(mockSignatureHelp);
-	}
-
-	@Override
-	public CompletableFuture<Either<List<? extends Location>, List<? extends LocationLink>>> definition(
-			DefinitionParams position) {
-		return CompletableFuture.completedFuture(Either.forLeft(mockDefinitionLocations));
-	}
-
-	@Override
-	public CompletableFuture<List<? extends Location>> references(ReferenceParams params) {
-		return futureFactory(Collections.singletonList(this.mockReferences));
-	}
-
-	@Override
-	public CompletableFuture<List<? extends DocumentHighlight>> documentHighlight(DocumentHighlightParams position) {
-		return CompletableFuture.completedFuture(mockDocumentHighlights);
-	}
-
-	@Override
-	public CompletableFuture<LinkedEditingRanges> linkedEditingRange(LinkedEditingRangeParams position) {
-		return CompletableFuture.completedFuture(mockLinkedEditingRanges);
-	}
-
-	@Override
-	public CompletableFuture<List<Either<SymbolInformation, DocumentSymbol>>> documentSymbol(
-			DocumentSymbolParams params) {
-		return CompletableFuture.completedFuture(documentSymbols.stream()
-				.map(symbol -> {
-					Either<SymbolInformation, DocumentSymbol> res = Either.forRight(symbol);
-					return res;
-				}).collect(Collectors.toList()));
-	}
-
-	@Override
-	public CompletableFuture<List<DocumentLink>> documentLink(DocumentLinkParams params) {
-		return CompletableFuture.completedFuture(mockDocumentLinks);
-	}
-
-	@Override
-	public CompletableFuture<List<Either<Command, CodeAction>>> codeAction(CodeActionParams params) {
-		return CompletableFuture.completedFuture(this.mockCodeActions);
-	}
-
-	@Override
-	public CompletableFuture<List<? extends CodeLens>> codeLens(CodeLensParams params) {
-		if (mockCodeLenses != null) {
-			return CompletableFuture.completedFuture(mockCodeLenses);
-		}
-		File file = new File(URI.create(params.getTextDocument().getUri()));
-		if (file.exists() && file.length() > 100) {
-			return CompletableFuture.completedFuture(Collections.singletonList(new CodeLens(
-					new Range(new Position(1, 0), new Position(1, 1)), new Command("Hi, I'm a CodeLens", null), null)));
-		}
-		return CompletableFuture.completedFuture(Collections.emptyList());
-	}
-
-	@Override
-	public CompletableFuture<CodeLens> resolveCodeLens(CodeLens unresolved) {
-		return CompletableFuture.completedFuture(null);
-	}
-
-	@Override
-	public CompletableFuture<List<? extends TextEdit>> formatting(DocumentFormattingParams params) {
-		return CompletableFuture.completedFuture(mockFormattingTextEdits);
-	}
-
-	@Override
-	public CompletableFuture<List<? extends TextEdit>> rangeFormatting(DocumentRangeFormattingParams params) {
-		return CompletableFuture.completedFuture(null);
-	}
-
-	@Override
-	public CompletableFuture<List<? extends TextEdit>> onTypeFormatting(DocumentOnTypeFormattingParams params) {
-		return CompletableFuture.completedFuture(null);
-	}
-
-	@Override
-	public CompletableFuture<WorkspaceEdit> rename(RenameParams params) {
-		return CompletableFuture.completedFuture(mockRenameEdit);
-	}
-
-	@Override
-	public CompletableFuture<Either<Range, PrepareRenameResult>> prepareRename(PrepareRenameParams params) {
-		if (this.mockPrepareRenameResult == null) {
-			return CompletableFuture.completedFuture(null);
-		} else {
-			return CompletableFuture.completedFuture(this.mockPrepareRenameResult);
-		}
-	}
-
-	@Override
-	public void didOpen(DidOpenTextDocumentParams params) {
-		if (didOpenCallback != null) {
-			didOpenCallback.complete(params);
-			didOpenCallback = null;
-		}
-
-		if (this.diagnostics != null && !this.diagnostics.isEmpty()) {
-			this.remoteProxies.stream().forEach(p -> p.publishDiagnostics(new PublishDiagnosticsParams(params.getTextDocument().getUri(), this.diagnostics)));
-		}
-	}
-
-	@Override
-	public void didChange(DidChangeTextDocumentParams params) {
-		if (didChangeCallback != null) {
-			didChangeCallback.complete(params);
-			didChangeCallback = null;
-		}
-	}
-
-	@Override
-	public void didClose(DidCloseTextDocumentParams params) {
-		if (didCloseCallback != null) {
-			didCloseCallback.complete(params);
-			didCloseCallback = null;
-		}
-	}
-
-	@Override
-	public void didSave(DidSaveTextDocumentParams params) {
-		if (didSaveCallback != null) {
-			didSaveCallback.complete(params);
-			didSaveCallback = null;
-		}
-	}
-
-	@Override
-	public CompletableFuture<List<ColorInformation>> documentColor(DocumentColorParams params) {
-		return CompletableFuture.completedFuture(this.mockDocumentColors);
-	}
-
-	@Override
-	public CompletableFuture<Either<List<? extends Location>, List<? extends LocationLink>>> typeDefinition(
-			TypeDefinitionParams position) {
-		return CompletableFuture.completedFuture(Either.forRight(this.mockTypeDefinitions));
-	}
-
-	public void setMockCompletionList(CompletionList completionList) {
-		this.mockCompletionList = completionList;
-	}
-
-	public void setDidOpenCallback(CompletableFuture<DidOpenTextDocumentParams> didOpenExpectation) {
-		this.didOpenCallback = didOpenExpectation;
-	}
-
-	public void setDidChangeCallback(CompletableFuture<DidChangeTextDocumentParams> didChangeExpectation) {
-		this.didChangeCallback = didChangeExpectation;
-	}
-
-	public void setDidSaveCallback(CompletableFuture<DidSaveTextDocumentParams> didSaveExpectation) {
-		this.didSaveCallback = didSaveExpectation;
-	}
-
-	public void setDidCloseCallback(CompletableFuture<DidCloseTextDocumentParams> didCloseExpectation) {
-		this.didCloseCallback = didCloseExpectation;
-	}
-
-	public void setMockHover(Hover hover) {
-		this.mockHover = hover;
-	}
-
-	public void setPrepareRenameResult(Either<Range, PrepareRenameResult> result) {
-		this.mockPrepareRenameResult = result;
-	}
-
-	public void setMockCodeLenses(List<CodeLens> codeLenses) {
-		this.mockCodeLenses = codeLenses;
-	}
-
-	public void setMockDefinitionLocations(List<? extends Location> definitionLocations) {
-		this.mockDefinitionLocations = definitionLocations;
-	}
-
-	public void setMockReferences(Location location) {
-		this.mockReferences = location;
-	}
-
-	public void setMockFormattingTextEdits(List<? extends TextEdit> formattingTextEdits) {
-		this.mockFormattingTextEdits = formattingTextEdits;
-	}
-
-	public void setMockDocumentLinks(List<DocumentLink> documentLinks) {
-		this.mockDocumentLinks = documentLinks;
-	}
-
-	public void reset() {
-		this.mockCompletionList = new CompletionList();
-		this.mockDefinitionLocations = Collections.emptyList();
-		this.mockTypeDefinitions = Collections.emptyList();
-		this.mockHover = null;
-		this.mockCodeLenses = null;
-		this.mockReferences = null;
-		this.remoteProxies = new ArrayList<>();
-		this.mockCodeActions = new ArrayList<>();
-		this.mockRenameEdit = null;
-		this.documentSymbols = Collections.emptyList();
-	}
-
-	public void setDiagnostics(List<Diagnostic> diagnostics) {
-		this.diagnostics = diagnostics;
-	}
-
-	public void addRemoteProxy(LanguageClient remoteProxy) {
-		this.remoteProxies.add(remoteProxy);
-	}
-
-	public void setCodeActions(List<Either<Command, CodeAction>> codeActions) {
-		this.mockCodeActions = codeActions;
-	}
-
-	public void setSignatureHelp(SignatureHelp signatureHelp) {
-		this.mockSignatureHelp = signatureHelp;
-	}
-
-	public void setDocumentHighlights(List<? extends DocumentHighlight> documentHighlights) {
-		this.mockDocumentHighlights = documentHighlights;
-	}
-
-	public void setLinkedEditingRanges(LinkedEditingRanges linkedEditingRanges) {
-		this.mockLinkedEditingRanges = linkedEditingRanges;
-	}
-
-	public void setDocumentColors(List<ColorInformation> colors) {
-		this.mockDocumentColors = colors;
-	}
-
-	public void setRenameEdit(WorkspaceEdit edit) {
-		this.mockRenameEdit = edit;
-	}
-
-	public void setMockTypeDefinitions(List<? extends LocationLink> mockTypeDefinitions) {
-		this.mockTypeDefinitions = mockTypeDefinitions;
-	}
-
-	public void setDocumentSymbols(List<DocumentSymbol> symbols) {
-		this.documentSymbols = symbols;
-	}
-
-}
diff --git a/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockWorkspaceService.java b/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockWorkspaceService.java
deleted file mode 100644
index 6eacbb8..0000000
--- a/org.eclipse.lsp4e.tests.mock/src/org/eclipse/lsp4e/tests/mock/MockWorkspaceService.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Max Bureck (Fraunhofer FOKUS) - Added ability to check for executed command
- *******************************************************************************/
-package org.eclipse.lsp4e.tests.mock;
-
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.function.Function;
-
-import org.eclipse.lsp4j.DidChangeConfigurationParams;
-import org.eclipse.lsp4j.DidChangeWatchedFilesParams;
-import org.eclipse.lsp4j.DidChangeWorkspaceFoldersParams;
-import org.eclipse.lsp4j.ExecuteCommandParams;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.lsp4j.WorkspaceSymbolParams;
-import org.eclipse.lsp4j.services.WorkspaceService;
-
-public class MockWorkspaceService implements WorkspaceService {
-
-	private Function<?, ?> _futureFactory;
-	private CompletableFuture<ExecuteCommandParams> executedCommand = new CompletableFuture<>();
-
-	public <U> MockWorkspaceService(Function<U, CompletableFuture<U>> futureFactory) {
-		this._futureFactory = futureFactory;
-	}
-
-	/**
-	 * Use this method to get a future that will wait specified delay before returning
-	 * value
-	 * @param value the value that will be returned by the future
-	 * @return a future that completes to value, after delay from {@link MockLanguageServer#delay}
-	 */
-	private <U> CompletableFuture<U> futureFactory(U value) {
-		return ((Function<U, CompletableFuture<U>>)this._futureFactory).apply(value);
-	}
-	
-	@Override
-	public CompletableFuture<List<? extends SymbolInformation>> symbol(WorkspaceSymbolParams params) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public void didChangeConfiguration(DidChangeConfigurationParams params) {
-		// TODO Auto-generated method stub
-
-	}
-
-	@Override
-	public void didChangeWatchedFiles(DidChangeWatchedFilesParams params) {
-		// TODO Auto-generated method stub
-
-	}
-
-	@Override
-	public void didChangeWorkspaceFolders(DidChangeWorkspaceFoldersParams params) {
-		// TODO Auto-generated method stub
-
-	}
-
-	@Override
-	public CompletableFuture<Object> executeCommand(ExecuteCommandParams params) {
-		executedCommand.complete(params);
-		return futureFactory(null);
-	}
-
-	public CompletableFuture<ExecuteCommandParams> getExecutedCommand() {
-		return executedCommand;
-	}
-}
diff --git a/org.eclipse.lsp4e/.classpath b/org.eclipse.lsp4e/.classpath
deleted file mode 100644
index 1db08c6..0000000
--- a/org.eclipse.lsp4e/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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-11"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/org.eclipse.lsp4e/.gitignore b/org.eclipse.lsp4e/.gitignore
deleted file mode 100644
index 54a4f99..0000000
--- a/org.eclipse.lsp4e/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/target/
-/bin/
-/resources/highlight.min.js/
\ No newline at end of file
diff --git a/org.eclipse.lsp4e/.options b/org.eclipse.lsp4e/.options
deleted file mode 100644
index c335726..0000000
--- a/org.eclipse.lsp4e/.options
+++ /dev/null
@@ -1,3 +0,0 @@
-# Debugging options for the org.eclipse.lsp4e/debug plug-in
-
-org.eclipse.lsp4e/debug= false
\ No newline at end of file
diff --git a/org.eclipse.lsp4e/.project b/org.eclipse.lsp4e/.project
deleted file mode 100644
index 6486494..0000000
--- a/org.eclipse.lsp4e/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.lsp4e</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.lsp4e/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.lsp4e/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 54ac246..0000000
--- a/org.eclipse.lsp4e/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,439 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
-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=11
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-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
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-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=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=error
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=enabled
-org.eclipse.jdt.core.compiler.source=11
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-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=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-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_expressions_in_for_loop_header=0
-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_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-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_bitwise_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not 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
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-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_lambda_arrow=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
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-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_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
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-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_lambda_arrow=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
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-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
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-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_additive_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_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.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/org.eclipse.lsp4e/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.lsp4e/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 06e1ae2..0000000
--- a/org.eclipse.lsp4e/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,121 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=false
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=true
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=true
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_Eclipse LS
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
-formatter_settings_version=13
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=false
-sp_cleanup.format_source_code_changes_only=true
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=false
-sp_cleanup.remove_redundant_type_arguments=false
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/org.eclipse.lsp4e/.settings/org.eclipse.pde.core.prefs b/org.eclipse.lsp4e/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 923c37f..0000000
--- a/org.eclipse.lsp4e/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-resolve.requirebundle=false
diff --git a/org.eclipse.lsp4e/EPL-2.0.html b/org.eclipse.lsp4e/EPL-2.0.html
deleted file mode 100644
index 4b95323..0000000
--- a/org.eclipse.lsp4e/EPL-2.0.html
+++ /dev/null
@@ -1,299 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>“Contribution” means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        “originates” from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor's behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>“Contributor” means any person or entity that Distributes the Program.</p>
-    <p>“Licensed Patents” mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>“Program” means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>“Recipient” means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>“Derivative Works” shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>“Modified Works” shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>“Distribute” means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>“Source Code” means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>“Secondary License” means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient's
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient's receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients' rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (‘notices’) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (“Commercial Contributor”)
-      hereby agrees to defend and indemnify every other Contributor
-      (“Indemnified Contributor”) against any losses, damages and costs
-      (collectively “Losses”) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor's responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient's patent(s), then such Recipient's rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient's rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient's rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient's obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
-    <p>“This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.”
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.lsp4e/META-INF/MANIFEST.MF b/org.eclipse.lsp4e/META-INF/MANIFEST.MF
deleted file mode 100644
index 10b090d..0000000
--- a/org.eclipse.lsp4e/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,56 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Language Server Protocol client for Eclipse IDE (Incubation)
-Bundle-SymbolicName: org.eclipse.lsp4e;singleton:=true
-Bundle-Version: 0.13.8.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-11
-Require-Bundle: org.eclipse.core.runtime;bundle-version="3.12.0",
- org.eclipse.equinox.common;bundle-version="3.8.0",
- org.eclipse.jface.text;bundle-version="3.13.0",
- org.eclipse.ui.workbench.texteditor;bundle-version="3.10.0",
- org.eclipse.jface;bundle-version="3.12.0",
- org.eclipse.jface.notifications,
- org.eclipse.ui.workbench;bundle-version="3.116.0",
- org.eclipse.core.resources;bundle-version="3.14.0",
- org.eclipse.ui;bundle-version="3.108.0",
- org.eclipse.ui.ide,
- org.eclipse.text,
- org.eclipse.core.filebuffers;bundle-version="3.6.0",
- org.eclipse.core.filesystem;bundle-version="1.6.0",
- org.eclipse.search;bundle-version="3.11.0",
- org.eclipse.ui.genericeditor;bundle-version="1.1.900";resolution:=optional,
- org.eclipse.ui.views,
- org.eclipse.debug.core,
- org.eclipse.core.externaltools;bundle-version="1.0.400",
- org.eclipse.debug.ui;bundle-version="3.11.200",
- org.eclipse.swt,
- org.eclipse.jdt.annotation;bundle-version="2.1.0";resolution:=optional,
- org.eclipse.ui.editors,
- org.eclipse.ui.navigator;bundle-version="3.6.100",
- org.eclipse.lsp4j;bundle-version="[0.12.0,0.13.0)",
- org.eclipse.lsp4j.jsonrpc;bundle-version="[0.12.0,0.13.0)",
- org.eclipse.mylyn.wikitext;bundle-version="3.0.0",
- org.eclipse.mylyn.wikitext.markdown;bundle-version="3.0.36",
- org.eclipse.ui.console,
- org.eclipse.ltk.core.refactoring,
- org.eclipse.core.expressions;bundle-version="3.5.0",
- org.eclipse.e4.ui.css.swt.theme,
- org.eclipse.ltk.ui.refactoring,
- org.eclipse.ui.browser,
- org.eclipse.ui.intro;bundle-version="3.5.200",
- com.google.guava;bundle-version="27.0.0",
- org.eclipse.e4.core.commands
-Bundle-ClassPath: .
-Bundle-Localization: plugin
-Bundle-ActivationPolicy: lazy
-Bundle-Activator: org.eclipse.lsp4e.LanguageServerPlugin
-Export-Package: org.eclipse.lsp4e;x-internal:=true,
- org.eclipse.lsp4e.command;x-internal:=true,
- org.eclipse.lsp4e.operations.completion;x-internal:=true,
- org.eclipse.lsp4e.operations.hover;x-internal:=true,
- org.eclipse.lsp4e.outline;x-internal:=true,
- org.eclipse.lsp4e.server;version="0.1.0"
-Bundle-Vendor: Eclipse.org
-Import-Package: com.google.common.base,
- com.google.gson;version="2.7.0"
-Automatic-Module-Name: org.eclipse.lsp4e
diff --git a/org.eclipse.lsp4e/build.properties b/org.eclipse.lsp4e/build.properties
deleted file mode 100644
index 8c9be44..0000000
--- a/org.eclipse.lsp4e/build.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-source.. = src/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               plugin.properties,\
-               EPL-2.0.html,\
-               icons/,\
-               .options,\
-               resources/,\
-               schema/
-additional.bundles = com.google.gson,\
-                     org.apache.commons.io,\
-                     org.apache.commons.logging
-src.includes = schema/
diff --git a/org.eclipse.lsp4e/icons/full/dlcl16/link_to_editor.png b/org.eclipse.lsp4e/icons/full/dlcl16/link_to_editor.png
deleted file mode 100644
index 791c05e..0000000
--- a/org.eclipse.lsp4e/icons/full/dlcl16/link_to_editor.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/dlcl16/link_to_editor@2x.png b/org.eclipse.lsp4e/icons/full/dlcl16/link_to_editor@2x.png
deleted file mode 100644
index 4e59460..0000000
--- a/org.eclipse.lsp4e/icons/full/dlcl16/link_to_editor@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/elcl16/link_to_editor.png b/org.eclipse.lsp4e/icons/full/elcl16/link_to_editor.png
deleted file mode 100644
index c517b3f..0000000
--- a/org.eclipse.lsp4e/icons/full/elcl16/link_to_editor.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/elcl16/link_to_editor@2x.png b/org.eclipse.lsp4e/icons/full/elcl16/link_to_editor@2x.png
deleted file mode 100644
index cf3cd26..0000000
--- a/org.eclipse.lsp4e/icons/full/elcl16/link_to_editor@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/boolean.png b/org.eclipse.lsp4e/icons/full/obj16/boolean.png
deleted file mode 100644
index 709a49e..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/boolean.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/boolean@2x.png b/org.eclipse.lsp4e/icons/full/obj16/boolean@2x.png
deleted file mode 100644
index 37be5ff..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/boolean@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/class.png b/org.eclipse.lsp4e/icons/full/obj16/class.png
deleted file mode 100644
index 5edee89..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/class.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/class@2x.png b/org.eclipse.lsp4e/icons/full/obj16/class@2x.png
deleted file mode 100644
index aaf6754..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/class@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/constant.png b/org.eclipse.lsp4e/icons/full/obj16/constant.png
deleted file mode 100644
index ce2abd6..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/constant.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/constant@2x.png b/org.eclipse.lsp4e/icons/full/obj16/constant@2x.png
deleted file mode 100644
index 62ae082..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/constant@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/constructor.png b/org.eclipse.lsp4e/icons/full/obj16/constructor.png
deleted file mode 100644
index ab97bb7..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/constructor.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/constructor@2x.png b/org.eclipse.lsp4e/icons/full/obj16/constructor@2x.png
deleted file mode 100644
index 92aab92..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/constructor@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/enum.png b/org.eclipse.lsp4e/icons/full/obj16/enum.png
deleted file mode 100644
index efc78d5..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/enum.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/enum@2x.png b/org.eclipse.lsp4e/icons/full/obj16/enum@2x.png
deleted file mode 100644
index efc0300..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/enum@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/field.png b/org.eclipse.lsp4e/icons/full/obj16/field.png
deleted file mode 100644
index f30d041..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/field.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/field@2x.png b/org.eclipse.lsp4e/icons/full/obj16/field@2x.png
deleted file mode 100644
index 7702416..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/field@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/function.png b/org.eclipse.lsp4e/icons/full/obj16/function.png
deleted file mode 100644
index 3efead5..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/function.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/function@2x.png b/org.eclipse.lsp4e/icons/full/obj16/function@2x.png
deleted file mode 100644
index d884d46..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/function@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/interface.png b/org.eclipse.lsp4e/icons/full/obj16/interface.png
deleted file mode 100644
index 1f506fb..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/interface.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/interface@2x.png b/org.eclipse.lsp4e/icons/full/obj16/interface@2x.png
deleted file mode 100644
index 0f58c6c..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/interface@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/keyword.png b/org.eclipse.lsp4e/icons/full/obj16/keyword.png
deleted file mode 100644
index 2ed30b2..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/keyword.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/keyword@2x.png b/org.eclipse.lsp4e/icons/full/obj16/keyword@2x.png
deleted file mode 100644
index d260d95..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/keyword@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/method.png b/org.eclipse.lsp4e/icons/full/obj16/method.png
deleted file mode 100644
index 6c26063..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/method.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/method@2x.png b/org.eclipse.lsp4e/icons/full/obj16/method@2x.png
deleted file mode 100644
index 20ca24d..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/method@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/module.png b/org.eclipse.lsp4e/icons/full/obj16/module.png
deleted file mode 100644
index 90c4e83..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/module.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/module@2x.png b/org.eclipse.lsp4e/icons/full/obj16/module@2x.png
deleted file mode 100644
index bba6c23..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/module@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/namespace.png b/org.eclipse.lsp4e/icons/full/obj16/namespace.png
deleted file mode 100644
index 70dc39f..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/namespace.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/namespace@2x.png b/org.eclipse.lsp4e/icons/full/obj16/namespace@2x.png
deleted file mode 100644
index f643c42..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/namespace@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/number.png b/org.eclipse.lsp4e/icons/full/obj16/number.png
deleted file mode 100644
index b5af8d1..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/number.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/number@2x.png b/org.eclipse.lsp4e/icons/full/obj16/number@2x.png
deleted file mode 100644
index d4498fc..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/number@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/package.png b/org.eclipse.lsp4e/icons/full/obj16/package.png
deleted file mode 100644
index c75c685..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/package.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/package@2x.png b/org.eclipse.lsp4e/icons/full/obj16/package@2x.png
deleted file mode 100644
index 6a6a987..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/package@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/property.png b/org.eclipse.lsp4e/icons/full/obj16/property.png
deleted file mode 100644
index a973514..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/property.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/property@2x.png b/org.eclipse.lsp4e/icons/full/obj16/property@2x.png
deleted file mode 100644
index 6c1bf64..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/property@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/reference.png b/org.eclipse.lsp4e/icons/full/obj16/reference.png
deleted file mode 100644
index f54b03e..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/reference.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/reference@2x.png b/org.eclipse.lsp4e/icons/full/obj16/reference@2x.png
deleted file mode 100644
index b6de281..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/reference@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/snippet.png b/org.eclipse.lsp4e/icons/full/obj16/snippet.png
deleted file mode 100644
index bdaea3f..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/snippet.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/snippet@2x.png b/org.eclipse.lsp4e/icons/full/obj16/snippet@2x.png
deleted file mode 100644
index bb13fc3..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/snippet@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/text.png b/org.eclipse.lsp4e/icons/full/obj16/text.png
deleted file mode 100644
index 634420d..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/text.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/text@2x.png b/org.eclipse.lsp4e/icons/full/obj16/text@2x.png
deleted file mode 100644
index 6a74429..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/text@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/unit.png b/org.eclipse.lsp4e/icons/full/obj16/unit.png
deleted file mode 100644
index 3739b73..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/unit.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/unit@2x.png b/org.eclipse.lsp4e/icons/full/obj16/unit@2x.png
deleted file mode 100644
index 19a4ca3..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/unit@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/value.png b/org.eclipse.lsp4e/icons/full/obj16/value.png
deleted file mode 100644
index 21aca15..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/value.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/value@2x.png b/org.eclipse.lsp4e/icons/full/obj16/value@2x.png
deleted file mode 100644
index 252c644..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/value@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/variable.png b/org.eclipse.lsp4e/icons/full/obj16/variable.png
deleted file mode 100644
index 06a5251..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/variable.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/icons/full/obj16/variable@2x.png b/org.eclipse.lsp4e/icons/full/obj16/variable@2x.png
deleted file mode 100644
index 8bd414c..0000000
--- a/org.eclipse.lsp4e/icons/full/obj16/variable@2x.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.lsp4e/plugin.properties b/org.eclipse.lsp4e/plugin.properties
deleted file mode 100644
index e860727..0000000
--- a/org.eclipse.lsp4e/plugin.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-###############################################################################
-# Copyright (c) 2016 Red Hat Inc. and others.
-# This program and the accompanying materials are made
-# available under the terms of the Eclipse Public License 2.0
-# which is available at https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-#  - Mickael Istria (Red Hat Inc.) - Initial implementation
-#  - Michal Niewrzal (Rogue Wave) 
-###############################################################################
-
-commands.category.name=Language Servers
-format.command.name=Format
-commands.symbolsInFile.name=Go to Symbol in File
-commands.symbolsInWorksapce.name=Go to Symbol in Workspace
-openDeclarationHyperlink_name=Go to declaration
-openDeclarationHyperlink_decription=Get to the location where this element is declared
-refactorings.menu.label=Refactorings
-codeactions.menu.label=Code Actions
-languageservers.preference.page=Language Servers
-languageservers.logging.preference.page=Logs
-notification.category.label = LSP
-notification.event.label = LSP Notification
-command.toggle.highlight.label = Toggle Mark Occurrences
-command.toggle.highlight.name = Toggle Highlight
-markers.name = Language Servers
-
diff --git a/org.eclipse.lsp4e/plugin.xml b/org.eclipse.lsp4e/plugin.xml
deleted file mode 100644
index daedba0..0000000
--- a/org.eclipse.lsp4e/plugin.xml
+++ /dev/null
@@ -1,614 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
-   <extension-point id="languageServer" name="Language Server" schema="schema/languageServer.exsd"/>
-   <!-- Extension point will ideally be "org.eclipse.text...." because
-   the feature should be part of the generic text editor -->
-   <extension
-         id="diagnostic"
-         name="%markers.name"
-         point="org.eclipse.core.resources.markers">
-      <super
-            type="org.eclipse.core.resources.problemmarker">
-      </super>
-   </extension>
-   <extension
-         point="org.eclipse.ui.ide.markerResolution">
-      <markerResolutionGenerator
-            class="org.eclipse.lsp4e.operations.codeactions.LSPCodeActionMarkerResolution"
-            markerType="org.eclipse.lsp4e.diagnostic">
-      </markerResolutionGenerator>
-   </extension>
-   <extension
-         point="org.eclipse.ui.workbench.texteditor.hyperlinkDetectors">
-      <hyperlinkDetector
-            activate="true"
-            class="org.eclipse.lsp4e.operations.declaration.OpenDeclarationHyperlinkDetector"
-            description="%openDeclarationHyperlink_decription"
-            id="org.eclipse.lsp4e.hyperlinkDetector"
-            name="%openDeclarationHyperlink_name"
-            targetId="org.eclipse.ui.DefaultTextEditor">
-      </hyperlinkDetector>
-      <hyperlinkDetector
-            activate="true"
-            class="org.eclipse.lsp4e.operations.documentLink.DocumentLinkDetector"
-            description="Document Link Detector"
-            id="org.eclipse.lsp4e.documentLinkDetector"
-            name="Document Link Detector"
-            targetId="org.eclipse.ui.DefaultTextEditor">
-      </hyperlinkDetector>
-   </extension>
-   <extension
-         point="org.eclipse.ui.commands">
-      <category
-            id="org.eclipse.lsp4e.category"
-            name="%commands.category.name">
-      </category>
-      <command
-            categoryId="org.eclipse.lsp4e.category"
-            id="org.eclipse.lsp4e.format"
-            name="%format.command.name">
-      </command>
-      <command
-            categoryId="org.eclipse.lsp4e.category"
-            id="org.eclipse.lsp4e.symbolinfile"
-            name="%commands.symbolsInFile.name">
-      </command>
-      <command
-            categoryId="org.eclipse.lsp4e.category"
-            id="org.eclipse.lsp4e.symbolinworkspace"
-            name="%commands.symbolsInWorksapce.name">
-      </command>
-      <command
-            categoryId="org.eclipse.lsp4e.category"
-            id="org.eclipse.lsp4e.togglelinkwitheditor"
-            name="Toggle Link with Editor">
-         <state
-               class="org.eclipse.ui.handlers.RegistryToggleState:true"
-               id="org.eclipse.ui.commands.toggleState">
-         </state>
-      </command>
-      <command
-            categoryId="org.eclipse.lsp4e.category"
-            id="org.eclipse.lsp4e.showkindinoutline"
-            name="Show Kind in Outline">
-         <state
-               class="org.eclipse.ui.handlers.RegistryToggleState:true"
-               id="org.eclipse.ui.commands.toggleState">
-         </state>
-      </command>
-   </extension>
-   <extension
-         point="org.eclipse.ui.handlers">
-      <handler
-            class="org.eclipse.lsp4e.operations.references.LSFindReferences"
-            commandId="org.eclipse.ui.genericeditor.findReferences">
-         <enabledWhen>
-            <and>
-               <with
-                     variable="selection">
-                  <instanceof
-                        value="org.eclipse.jface.text.ITextSelection">
-                  </instanceof>
-               </with>
-            </and>
-         </enabledWhen>
-      </handler>
-      <handler
-            class="org.eclipse.lsp4e.operations.rename.LSPRenameHandler"
-            commandId="org.eclipse.ui.edit.rename">
-         <activeWhen>
-            <and>
-               <with
-                     variable="selection">
-                  <instanceof
-                        value="org.eclipse.jface.text.ITextSelection">
-                  </instanceof>
-               </with>
-            </and>
-         </activeWhen>
-      </handler>
-      <handler
-            class="org.eclipse.lsp4e.operations.format.LSPFormatHandler"
-            commandId="org.eclipse.lsp4e.format">
-         <enabledWhen>
-            <and>
-               <with
-                     variable="selection">
-                  <instanceof
-                        value="org.eclipse.jface.text.ITextSelection">
-                  </instanceof>
-               </with>
-            </and>
-         </enabledWhen>
-      </handler>
-      <handler
-            class="org.eclipse.lsp4e.operations.symbols.LSPSymbolInFileHandler"
-            commandId="org.eclipse.lsp4e.symbolinfile">
-      </handler>
-      <handler
-            class="org.eclipse.lsp4e.operations.symbols.LSPSymbolInWorkspaceHandler"
-            commandId="org.eclipse.lsp4e.symbolinworkspace">
-      </handler>
-      <handler
-            commandId="org.eclipse.lsp4e.togglelinkwitheditor">
-         <class
-               class="org.eclipse.lsp4e.outline.ToggleLinkingHandler">
-         </class>
-      </handler>
-      <handler
-            commandId="org.eclipse.lsp4e.showkindinoutline">
-         <class
-               class="org.eclipse.lsp4e.outline.ShowKindHandler">
-         </class>
-      </handler>
-   </extension>
-   <extension
-         point="org.eclipse.search.searchResultViewPages">
-      <viewPage
-            class="org.eclipse.search.internal.ui.text.FileSearchPage"
-            id="org.eclipse.lsp4e.lsResultPage"
-            searchResultClass="org.eclipse.lsp4e.operations.references.LSSearchResult">
-      </viewPage>
-   </extension>
-   <extension
-         point="org.eclipse.ui.preferencePages">
-      <page
-            class="org.eclipse.lsp4e.ui.LanguageServerPreferencePage"
-            id="org.eclipse.lsp4e.preferences"
-            name="%languageservers.preference.page">
-      </page>
-      <page
-            category="org.eclipse.lsp4e.preferences"
-            class="org.eclipse.lsp4e.ui.LoggingPreferencePage"
-            id="org.eclipse.lsp4e.logging.preferences"
-            name="%languageservers.logging.preference.page">
-      </page>
-   </extension>
-   <extension
-         point="org.eclipse.ui.menus">
-      <menuContribution
-            allPopups="true"
-            locationURI="popup:#TextEditorContext?after=additions">
-         <menu
-               label="%refactorings.menu.label">
-            <command
-                  commandId="org.eclipse.ui.edit.rename"
-                  style="push">
-            </command>
-            <separator
-                  name="org.eclipse.lsp4e.refactoringseparator">
-            </separator>
-         </menu>
-         <menu
-               label="%codeactions.menu.label">
-            <dynamic
-                  class="org.eclipse.lsp4e.operations.codeactions.LSPCodeActionsMenu"
-                  id="org.eclipse.lsp4e.codeActions">
-            </dynamic>
-         </menu>
-      </menuContribution>
-      <menuContribution
-            allPopups="false"
-            locationURI="menu:org.eclipse.ui.views.ContentOutline">
-         <command
-               commandId="org.eclipse.lsp4e.togglelinkwitheditor"
-               label="Link with Editor"
-               style="toggle">
-            <visibleWhen
-                  checkEnabled="false">
-               <and>
-	              <with variable="activePart">
-	                 <instanceof
-                           value="org.eclipse.ui.views.contentoutline.ContentOutline">
-                     </instanceof>
-	              </with>
-	              <with
-	                    variable="activePart">
-	                 <test
-	                       property="org.eclipse.lsp4e.hasCNFOutlinePage">
-	                 </test>
-	              </with>
-	           </and>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-      <menuContribution
-            allPopups="false"
-            locationURI="menu:org.eclipse.ui.views.ContentOutline">
-         <command
-               commandId="org.eclipse.lsp4e.showkindinoutline"
-               label="Show Kind"
-               style="toggle">
-            <visibleWhen
-                  checkEnabled="false">
-               <and>
-	              <with variable="activePart">
-	                 <instanceof
-                           value="org.eclipse.ui.views.contentoutline.ContentOutline">
-                     </instanceof>
-	              </with>
-	              <with
-	                    variable="activePart">
-	                 <test
-	                       property="org.eclipse.lsp4e.hasCNFOutlinePage">
-	                 </test>
-	              </with>
-	           </and>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-      <menuContribution
-            allPopups="true"
-            locationURI="popup:org.eclipse.ui.genericeditor.source.menu?after=additions">
-         <command
-               commandId="org.eclipse.lsp4e.format"
-               style="push">
-         </command>
-      </menuContribution>
-   </extension>
-   <extension
-         point="org.eclipse.ui.genericeditor.contentAssistProcessors">
-      <contentAssistProcessor
-            class="org.eclipse.lsp4e.operations.completion.LSContentAssistProcessor"
-            contentType="org.eclipse.core.runtime.text">
-      </contentAssistProcessor>
-   </extension>
-   <extension
-         point="org.eclipse.ui.genericeditor.hoverProviders">
-      <hoverProvider
-            class="org.eclipse.lsp4e.operations.hover.LSPTextHover"
-            contentType="org.eclipse.core.runtime.text"
-            id="org.eclipse.lsp4e.operations.hover.LSPTextHover">
-      </hoverProvider>
-   </extension>
-   <extension
-         point="org.eclipse.ui.bindings">
-      <key
-            commandId="org.eclipse.lsp4e.symbolinfile"
-            contextId="org.eclipse.ui.textEditorScope"
-            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
-            sequence="M1+O">
-      </key>
-      <key
-            commandId="org.eclipse.lsp4e.symbolinworkspace"
-            contextId="org.eclipse.ui.contexts.window"
-            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
-            sequence="M1+M2+T">
-      </key>
-      <key
-            commandId="org.eclipse.lsp4e.format"
-            contextId="org.eclipse.ui.textEditorScope"
-            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
-            sequence="M1+M2+F">
-      </key>
-
-      <!-- refactoring -->
-      <key
-            sequence="M2+M3+R"
-            commandId="org.eclipse.ui.edit.rename"
-            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
-      </key>
-      <key
-            platform="carbon"
-            sequence="M2+M3+R"
-            commandId=""
-            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
-      </key>
-      <key
-            platform="carbon"
-            sequence="COMMAND+ALT+R"
-            commandId="org.eclipse.ui.edit.rename"
-            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
-      </key>
-   </extension>
-   <extension
-         point="org.eclipse.core.runtime.adapters">
-      <factory
-            adaptableType="org.eclipse.ui.internal.genericeditor.ExtensionBasedTextEditor"
-            class="org.eclipse.lsp4e.outline.EditorToOutlineAdapterFactory">
-         <adapter
-               type="org.eclipse.ui.views.contentoutline.IContentOutlinePage">
-         </adapter>
-      </factory>
-   </extension>
-   <extension
-         point="org.eclipse.ui.navigator.navigatorContent">
-      <navigatorContent
-            activeByDefault="true"
-            contentProvider="org.eclipse.lsp4e.outline.LSSymbolsContentProvider"
-            labelProvider="org.eclipse.lsp4e.outline.SymbolsLabelProvider"
-            id="org.eclipse.lsp4e.outline.content"
-            name="LS Symbols">
-         <triggerPoints>
-            <or></or>
-         </triggerPoints>
-         <enablement>
-            <instanceof
-                  value="org.eclipse.lsp4e.LanguageServiceAccessor$LSPDocumentInfo">
-            </instanceof>
-         </enablement>
-      </navigatorContent>
-   </extension>
-   <extension
-         point="org.eclipse.ui.navigator.viewer">
-      <viewer
-            viewerId="org.eclipse.lsp4e.outline">
-      </viewer>
-      <viewerContentBinding
-            viewerId="org.eclipse.lsp4e.outline">
-         <includes>
-            <contentExtension
-                  isRoot="true"
-                  pattern="org.eclipse.lsp4e.outline.content">
-            </contentExtension>
-         </includes>
-      </viewerContentBinding>
-   </extension>
-   <extension
-         point="org.eclipse.mylyn.commons.notifications.ui.notifications">
-        <category
-        	id="org.eclipse.lsp4e"
-        	label="%notification.category.label">
-        </category>
-		<event
-		    categoryId="org.eclipse.lsp4e"
-		    id="lsp.notification"
-		    label="%notification.event.label"
-		    selected="true">
-		    <defaultHandler
-		      sinkId="org.eclipse.mylyn.commons.notifications.sink.Popup">
-		    </defaultHandler>
-		</event>
-   </extension>
-   <extension
-         point="org.eclipse.core.filebuffers.documentSetup">
-      <participant
-            class="org.eclipse.lsp4e.ConnectDocumentToLanguageServerSetupParticipant"
-            contentTypeId="org.eclipse.core.runtime.text">
-      </participant>
-   </extension>
-   <extension
-         point="org.eclipse.ui.startup">
-      <startup
-            class="org.eclipse.lsp4e.DisableShortcutsWorkaround">
-      </startup>
-   </extension>
-   <extension point="org.eclipse.ui.editors.annotationTypes">
-      <type name="org.eclipse.lsp4e.read"></type>
-      <type name="org.eclipse.lsp4e.write"></type>
-      <type name="org.eclipse.lsp4e.text"></type>
-      <type name="org.eclipse.lsp4e.linkedediting"></type>
-   </extension>
-   <extension point="org.eclipse.ui.editors.markerAnnotationSpecification">
-		<specification annotationType="org.eclipse.lsp4e.read"
-			label="LSP Read Occurrence"
-			textPreferenceKey="LSP4EReadOccurrenceIndication" textPreferenceValue="false"
-			highlightPreferenceKey="LSP4EReadOccurrenceHighlighting"
-			highlightPreferenceValue="true" contributesToHeader="false"
-			overviewRulerPreferenceKey="LSP4EReadOccurrenceIndicationInOverviewRuler"
-			overviewRulerPreferenceValue="true"
-			verticalRulerPreferenceKey="LSP4EReadOccurrenceIndicationInVerticalRuler"
-			verticalRulerPreferenceValue="false" colorPreferenceKey="LSP4EReadOccurrenceIndicationColor"
-			colorPreferenceValue="212,212,212" presentationLayer="4"
-			showInNextPrevDropdownToolbarAction="true" 
-			textStylePreferenceKey="LSP4EReadOccurrenceTextStyle"
-			textStylePreferenceValue="NONE">
-		</specification>
-   </extension>
-   <extension point="org.eclipse.ui.editors.markerAnnotationSpecification">
-		<specification annotationType="org.eclipse.lsp4e.write"
-			label="LSP Write Occurrence"
-			textPreferenceKey="LSP4EWriteOccurrenceIndication" textPreferenceValue="false"
-			highlightPreferenceKey="LSP4EWriteOccurrenceHighlighting"
-			highlightPreferenceValue="true" contributesToHeader="false"
-			overviewRulerPreferenceKey="LSP4EWriteOccurrenceIndicationInOverviewRuler"
-			overviewRulerPreferenceValue="true"
-			verticalRulerPreferenceKey="LSP4EWriteOccurrenceIndicationInVerticalRuler"
-			verticalRulerPreferenceValue="false" colorPreferenceKey="LSP4EWriteOccurrenceIndicationColor"
-			colorPreferenceValue="240,216,168" presentationLayer="4"
-			showInNextPrevDropdownToolbarAction="true"
-			textStylePreferenceKey="LSP4EWriteOccurrenceTextStyle"
-			textStylePreferenceValue="NONE">
-		</specification>
-   </extension>
-   <extension point="org.eclipse.ui.editors.markerAnnotationSpecification">
-		<specification annotationType="org.eclipse.lsp4e.text"
-			label="LSP Text Occurrence"
-			textPreferenceKey="LSP4ETextOccurrenceIndication" textPreferenceValue="false"
-			highlightPreferenceKey="LSP4ETextOccurrenceHighlighting"
-			highlightPreferenceValue="true" contributesToHeader="false"
-			overviewRulerPreferenceKey="LSP4ETextOccurrenceIndicationInOverviewRuler"
-			overviewRulerPreferenceValue="true"
-			verticalRulerPreferenceKey="LSP4ETextOccurrenceIndicationInVerticalRuler"
-			verticalRulerPreferenceValue="false" colorPreferenceKey="LSP4ETextOccurrenceIndicationColor"
-			colorPreferenceValue="212,212,212" presentationLayer="4"
-			showInNextPrevDropdownToolbarAction="true"
-			textStylePreferenceKey="LSP4ETextOccurrenceTextStyle"
-			textStylePreferenceValue="NONE">
-		</specification>
-   </extension>
-   <extension point="org.eclipse.ui.editors.markerAnnotationSpecification">
-		<specification annotationType="org.eclipse.lsp4e.linkedediting"
-			label="LSP Linked Editing Occurrence"
-			textPreferenceKey="LSP4ELinkedEditingOccurrenceIndication" textPreferenceValue="false"
-			highlightPreferenceKey="LSP4ELinkedEditingOccurrenceHighlighting"
-			highlightPreferenceValue="true" contributesToHeader="false"
-			overviewRulerPreferenceKey="LSP4ELinkedEditingOccurrenceIndicationInOverviewRuler"
-			overviewRulerPreferenceValue="false"
-			verticalRulerPreferenceKey="LSP4ELinkedEditingOccurrenceIndicationInVerticalRuler"
-			verticalRulerPreferenceValue="false" colorPreferenceKey="LSP4ELinkedEditingOccurrenceIndicationColor"
-			colorPreferenceValue="242,212,242" presentationLayer="5"
-			showInNextPrevDropdownToolbarAction="false"
-			textStylePreferenceKey="LSP4ELinkedEditingOccurrenceTextStyle"
-			textStylePreferenceValue="NONE">
-		</specification>
-   </extension>
-   <extension
-         point="org.eclipse.core.expressions.propertyTesters">
-      <propertyTester
-            class="org.eclipse.lsp4e.outline.SymbolInformationPropertyTester"
-            id="org.eclipse.lsp4e.SymbolInformationPropertyTester"
-            namespace="org.eclipse.lsp4e.symbolInformation"
-            properties="extension,contentTypeId"
-            type="java.lang.Object">
-      </propertyTester>
-      <propertyTester
-            class="org.eclipse.lsp4e.HasLanguageServerPropertyTester"
-            id="org.eclipse.lsp4e.hasLanguageServerPropertyTester"
-            namespace="org.eclipse.lsp4e"
-            properties="hasLanguageServer"
-            type="java.lang.Object">
-      </propertyTester>
-      <propertyTester
-            class="org.eclipse.lsp4e.outline.HasCNFOutlinePage"
-            id="org.eclipse.lsp4e.hasCNFOutlinePage"
-            namespace="org.eclipse.lsp4e"
-            properties="hasCNFOutlinePage"
-            type="java.lang.Object">
-      </propertyTester>
-   </extension>
-   <extension
-         point="org.eclipse.ui.commandImages">
-      <image
-            commandId="org.eclipse.lsp4e.togglelinkwitheditor"
-            disabledIcon="icons/full/dlcl16/link_to_editor.png"
-            icon="icons/full/elcl16/link_to_editor.png">
-      </image>
-   </extension>
-   <extension
-         point="org.eclipse.e4.ui.css.swt.theme">
-      <stylesheet
-            uri="resources/css/dark.css">
-         <themeid
-               refid="org.eclipse.e4.ui.css.theme.e4_dark">
-         </themeid>
-      </stylesheet>
-   </extension>
-   <extension
-         point="org.eclipse.ui.genericeditor.highlightReconcilers">
-      <highlightReconciler
-            class="org.eclipse.lsp4e.operations.highlight.HighlightReconciler"
-            contentType="org.eclipse.core.runtime.text">
-         <enabledWhen>
-           <or>
-             <with variable="editorInput">
-               <test property="org.eclipse.lsp4e.hasLanguageServer"/>
-             </with>
-             <with variable="viewer">
-               <test property="org.eclipse.lsp4e.hasLanguageServer"/>
-             </with>
-           </or>
-         </enabledWhen>
-      </highlightReconciler>
-      <highlightReconciler
-            class="org.eclipse.lsp4e.operations.linkedediting.LinkedEditingHighlightReconciler"
-            contentType="org.eclipse.core.runtime.text">
-         <enabledWhen>
-           <or>
-             <with variable="editorInput">
-               <test property="org.eclipse.lsp4e.hasLanguageServer"/>
-             </with>
-             <with variable="viewer">
-               <test property="org.eclipse.lsp4e.hasLanguageServer"/>
-             </with>
-           </or>
-         </enabledWhen>
-      </highlightReconciler>
-   </extension>
-   <extension
-         point="org.eclipse.ui.genericeditor.foldingReconcilers">
-      <foldingReconciler
-            class="org.eclipse.lsp4e.operations.folding.LSPFoldingReconciler"
-            contentType="org.eclipse.core.runtime.text">
-         <enabledWhen>
-           <or>
-             <with variable="editorInput">
-               <test property="org.eclipse.lsp4e.hasLanguageServer"/>
-             </with>
-             <with variable="viewer">
-               <test property="org.eclipse.lsp4e.hasLanguageServer"/>
-             </with>
-           </or>
-         </enabledWhen>
-      </foldingReconciler>
-   </extension>   
-   <extension
-         point="org.eclipse.ui.workbench.texteditor.codeMiningProviders">
-      <codeMiningProvider
-            class="org.eclipse.lsp4e.operations.codelens.CodeLensProvider"
-            id="org.eclipse.lsp4e.codelens"
-            label="CodeLens">
-         <enabledWhen>
-           <or>
-             <with variable="editorInput">
-               <test property="org.eclipse.lsp4e.hasLanguageServer"/>
-             </with>
-             <with variable="viewer">
-               <test property="org.eclipse.lsp4e.hasLanguageServer"/>
-             </with>
-           </or>
-         </enabledWhen>
-      </codeMiningProvider>
-      <codeMiningProvider
-            class="org.eclipse.lsp4e.operations.color.DocumentColorProvider"
-            id="org.eclipse.lsp4e.documentColor"
-            label="Color">
-         <enabledWhen>
-           <or>
-             <with variable="editorInput">
-               <test property="org.eclipse.lsp4e.hasLanguageServer"/>
-             </with>
-             <with variable="viewer">
-               <test property="org.eclipse.lsp4e.hasLanguageServer"/>
-             </with>
-           </or>
-         </enabledWhen>
-      </codeMiningProvider>
-   </extension>
-   <extension
-         point="org.eclipse.ui.genericeditor.reconcilers">
-      <reconciler
-            class="org.eclipse.jface.text.codemining.CodeMiningReconciler"
-            contentType="org.eclipse.core.runtime.text">
-      </reconciler>
-   </extension>
-   <extension
-         point="org.eclipse.ui.quickAccess">
-      <computer
-            class="org.eclipse.lsp4e.operations.symbols.WorkspaceSymbolsQuickAccessProvider"
-            name="Workspace Symbols"
-            requiresUIAccess="false"/>
-   </extension>
-   <extension
-         point="org.eclipse.ui.genericeditor.quickAssistProcessors">
-      <quickAssistProcessor
-            class="org.eclipse.lsp4e.operations.codeactions.LSPCodeActionQuickAssistProcessor"
-            contentType="org.eclipse.core.runtime.text">
-      </quickAssistProcessor>
-   </extension>
-   <extension
-         point="org.eclipse.ui.commands">
-      <commandParameterType
-            converter="org.eclipse.lsp4e.command.internal.CommandConverter"
-            id="org.eclipse.lsp4e.commandParameterType"
-            type="org.eclipse.lsp4j.Command">
-      </commandParameterType>
-      <commandParameterType
-            converter="org.eclipse.lsp4e.command.internal.PathConverter"
-            id="org.eclipse.lsp4e.pathParameterType"
-            type="org.eclipse.core.runtime.IPath">
-      </commandParameterType>
-      <category
-            id="org.eclipse.lsp4e.commandCategory"
-            name="Command">
-      </category>
-   </extension>
-   <extension
-         point="org.eclipse.ui.genericeditor.autoEditStrategies">
-      <autoEditStrategy
-            class="org.eclipse.lsp4e.operations.linkedediting.LSPLinkedEditingAutoEditStrategy"
-            contentType="org.eclipse.core.runtime.text">
-      </autoEditStrategy>
-   </extension>
-</plugin>
diff --git a/org.eclipse.lsp4e/pom.xml b/org.eclipse.lsp4e/pom.xml
deleted file mode 100644
index 481393e..0000000
--- a/org.eclipse.lsp4e/pom.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.eclipse.lsp4e</groupId>
-		<artifactId>parent</artifactId>
-		<version>0.13.1-SNAPSHOT</version>
-	</parent>
-	<artifactId>org.eclipse.lsp4e</artifactId>
-	<packaging>eclipse-plugin</packaging>
-	<version>0.13.8-SNAPSHOT</version>
-	
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-clean-plugin</artifactId>
-				<version>3.1.0</version>
-				<configuration>
-					<filesets>
-						<fileset>
-							<directory>resources/highlight.min.js</directory>
-						</fileset>
-					</filesets>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>com.googlecode.maven-download-plugin</groupId>
-				<artifactId>download-maven-plugin</artifactId>
-				<version>1.6.7</version>
-				<executions>
-					<execution>
-						<id>fetch-highlight.min.js</id>
-						<phase>generate-resources</phase>
-						<goals>
-							<goal>wget</goal>
-						</goals>
-						<configuration>
-							<url>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/highlight.min.js</url>
-							<unpack>false</unpack>
-							<overwrite>true</overwrite>
-							<skipCache>true</skipCache>
-							<outputDirectory>${project.basedir}/resources/highlight.min.js</outputDirectory>
-						</configuration>
-					</execution>
-					<execution>
-						<id>fetch-highlight.styles.default.min.css</id>
-						<phase>generate-resources</phase>
-						<goals>
-							<goal>wget</goal>
-						</goals>
-						<configuration>
-							<url>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/styles/default.min.css</url>
-							<unpack>false</unpack>
-							<overwrite>true</overwrite>
-							<skipCache>true</skipCache>
-							<outputDirectory>${project.basedir}/resources/highlight.min.js/styles</outputDirectory>
-						</configuration>
-					</execution>
-					<execution>
-						<id>fetch-highlight.styles.dark.min.css</id>
-						<phase>generate-resources</phase>
-						<goals>
-							<goal>wget</goal>
-						</goals>
-						<configuration>
-							<url>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/styles/dark.min.css</url>
-							<unpack>false</unpack>
-							<overwrite>true</overwrite>
-							<skipCache>true</skipCache>
-							<outputDirectory>${project.basedir}/resources/highlight.min.js/styles</outputDirectory>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
-</project>
diff --git a/org.eclipse.lsp4e/resources/css/dark.css b/org.eclipse.lsp4e/resources/css/dark.css
deleted file mode 100644
index 83a87f9..0000000
--- a/org.eclipse.lsp4e/resources/css/dark.css
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michal Niewrzal (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-
-IEclipsePreferences#org-eclipse-ui-editors:org-eclipse-lsp4e {
-  preferences: 
-        'LSP4EReadOccurrenceIndicationColor=27,98,145'
-        'LSP4EWriteOccurrenceIndicationColor=27,98,145'
-        'LSP4ETextOccurrenceIndicationColor=27,98,145'
-}
-
diff --git a/org.eclipse.lsp4e/schema/languageServer.exsd b/org.eclipse.lsp4e/schema/languageServer.exsd
deleted file mode 100644
index 11d2faf..0000000
--- a/org.eclipse.lsp4e/schema/languageServer.exsd
+++ /dev/null
@@ -1,224 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.lsp4e" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
-      <appinfo>
-         <meta.schema plugin="org.eclipse.lsp4e" id="languageServer" name="Language Server"/>
-      </appinfo>
-      <documentation>
-         This extension point allows to define Language Servers and enable those on some content-types.
-      </documentation>
-   </annotation>
-
-   <include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>
-
-   <element name="extension">
-      <annotation>
-         <appinfo>
-            <meta.element />
-         </appinfo>
-      </annotation>
-      <complexType>
-         <sequence minOccurs="1" maxOccurs="unbounded">
-            <element ref="server"/>
-            <element ref="contentTypeMapping"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute translatable="true"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="server">
-      <complexType>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  A string uniquely identifying this language server definition.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="label" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn=":org.eclipse.lsp4e.server.StreamConnectionProvider"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-         <attribute name="clientImpl" type="string">
-            <annotation>
-               <documentation>
-                  An optional language client implementation to use as local endpoint. If undefined, the default implementation &lt;code&gt;org.eclipse.lsp4e.LanguageClientImpl&lt;/code&gt; is used. See the &lt;a href=&quot;https://github.com/eclipse/lsp4j/tree/master/documentation&quot;&gt;LSP4J documentation&lt;/a&gt; for more information on how to extend the Language Server Protocol.
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.lsp4e.LanguageClientImpl:"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-         <attribute name="serverInterface" type="string">
-            <annotation>
-               <documentation>
-                  An optional remote server interface from which to derive the protocol messages. If undefined, the default interface &lt;code&gt;org.eclipse.lsp4j.services.LanguageServer&lt;/code&gt; is used. See the &lt;a href=&quot;https://github.com/eclipse/lsp4j/tree/master/documentation&quot;&gt;LSP4J documentation&lt;/a&gt; for more information on how to extend the Language Server Protocol.
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.lsp4j.services.LanguageServer:"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-         <attribute name="launcherBuilder" type="string">
-            <annotation>
-               <documentation>
-                  An optional launcher builder to override &lt;code&gt;org.eclipse.lsp4j.jsonrpc.Launcher.Builder&lt;/code&gt;.
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.lsp4j.jsonrpc.Launcher$Builder:"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-         <attribute name="singleton" type="boolean">
-            <annotation>
-               <documentation>
-                  Whether a single instance of this language server should be instantiated and reused for all supported files. Sort of warkaround for https://github.com/Microsoft/language-server-protocol/issues/674
-Since 0.10
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="contentTypeMapping">
-      <complexType>
-         <sequence>
-            <element ref="enabledWhen" minOccurs="0" maxOccurs="1"/>
-         </sequence>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  Identifier of language server definition.
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="identifier" basedOn="org.eclipse.lsp4e.languageServer/server/@id"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-         <attribute name="contentType" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="identifier" basedOn="org.eclipse.core.contenttype.contentTypes/content-type/@id"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-         <attribute name="languageId" type="string">
-            <annotation>
-               <documentation>
-                  Defines the language ID that this mapping from a language server to a specific content-type should use when communicating with a language server. The language ID is used as part of the language server protocol, for example as part of the TextDocumentItem (https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md#textdocumentitem) structure. In VSCode the client identifies the language ID that should be used (or the user can override that) and VSCode uses the matching language servers for that language ID. Therefore language servers sometimes use this language ID to check for the exact language type that the user/client selected for the text document and communicates this via the protocol. More details can be found here: https://code.visualstudio.com/docs/languages/identifiers
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="enabledWhen">
-      <annotation>
-         <documentation>
-            A core Expression that controls the enablement of the ContentTypeToLanguageServer mapping
-         </documentation>
-      </annotation>
-      <complexType>
-         <choice minOccurs="0" maxOccurs="1">
-            <element ref="not"/>
-            <element ref="or"/>
-            <element ref="and"/>
-            <element ref="instanceof"/>
-            <element ref="test"/>
-            <element ref="systemTest"/>
-            <element ref="equals"/>
-            <element ref="count"/>
-            <element ref="with"/>
-            <element ref="resolve"/>
-            <element ref="adapt"/>
-            <element ref="iterate"/>
-            <element ref="reference"/>
-         </choice>
-         <attribute name="description" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="since"/>
-      </appinfo>
-      <documentation>
-         [Enter the first release in which this extension point appears.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="examples"/>
-      </appinfo>
-      <documentation>
-         [Enter extension point usage example here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="apiinfo"/>
-      </appinfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="implementation"/>
-      </appinfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-
-</schema>
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ConnectDocumentToLanguageServerSetupParticipant.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ConnectDocumentToLanguageServerSetupParticipant.java
deleted file mode 100644
index 3426d43..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ConnectDocumentToLanguageServerSetupParticipant.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.filebuffers.IDocumentSetupParticipant;
-import org.eclipse.core.filebuffers.IDocumentSetupParticipantExtension;
-import org.eclipse.core.filebuffers.IFileBuffer;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.filebuffers.ITextFileBufferManager;
-import org.eclipse.core.filebuffers.LocationKind;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.text.IDocument;
-
-/**
- * Startup the language servers that can be used by the document.
- *
- */
-public class ConnectDocumentToLanguageServerSetupParticipant implements IDocumentSetupParticipant, IDocumentSetupParticipantExtension {
-	private Map<IPath, Job> locationMap = new HashMap<IPath, Job>();
-
-	public ConnectDocumentToLanguageServerSetupParticipant() {
-
-		ITextFileBufferManager.DEFAULT.addFileBufferListener(new FileBufferListenerAdapter() {
-			@Override
-			public void bufferDisposed(IFileBuffer buffer) {
-				Job job = locationMap.remove(buffer.getLocation());
-				if (job != null) {
-					job.cancel();
-				}
-			}
-		});
-	}
-
-	@Override
-	public void setup(IDocument document) {
-		ITextFileBuffer buffer = ITextFileBufferManager.DEFAULT.getTextFileBuffer(document);
-		if (buffer == null || buffer.getLocation() == null) {
-			return;
-		}
-		setup(document, buffer.getLocation(), LocationKind.IFILE);
-	}
-
-	@Override
-	public void setup(final IDocument document, IPath location, LocationKind locationKind) {
-		if (document == null) {
-			return;
-		}
-		Job job = new Job("Initialize Language Servers for " + location.toFile().getName()) { //$NON-NLS-1$
-			@Override
-			protected IStatus run(IProgressMonitor monitor) {
-				ITextFileBuffer buffer = ITextFileBufferManager.DEFAULT.getTextFileBuffer(document);
-				if (buffer == null || buffer.getLocation() == null) { // document no more relevant
-					return Status.OK_STATUS;
-				}
-				if (monitor.isCanceled()) {
-					return Status.CANCEL_STATUS;
-				}
-				// connect to LS so they start receiving notifications and pushing diagnostics
-				LanguageServiceAccessor.getLanguageServers(document, capabilities -> true);
-				locationMap.remove(location);
-				return Status.OK_STATUS;
-			}
-		};
-		locationMap.put(location, job);
-		job.setUser(true);
-		job.setPriority(Job.INTERACTIVE);
-		job.schedule(100); // give some time to populate doc and associate it with the IFile
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ContentTypeToLSPLaunchConfigEntry.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ContentTypeToLSPLaunchConfigEntry.java
deleted file mode 100644
index c36c710..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ContentTypeToLSPLaunchConfigEntry.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.lsp4e.LanguageServersRegistry.LaunchConfigurationLanguageServerDefinition;
-
-public class ContentTypeToLSPLaunchConfigEntry extends ContentTypeToLanguageServerDefinition {
-
-	private static final long serialVersionUID = 7944251280308498957L;
-
-	private ILaunchConfiguration launchConfiguration;
-	private Set<String> launchModes;
-
-	public ContentTypeToLSPLaunchConfigEntry(@NonNull IContentType contentType, @NonNull ILaunchConfiguration launchConfig,
-			@NonNull Set<String> launchModes) {
-		super(contentType, new LaunchConfigurationLanguageServerDefinition(launchConfig, launchModes), null);
-		this.launchConfiguration = launchConfig;
-		this.launchModes = Collections.unmodifiableSet(launchModes);
-	}
-
-	public void appendPreferenceTo(StringBuilder builder) {
-		builder.append(getKey().getId());
-		builder.append(':');
-		try {
-			builder.append(launchConfiguration.getType().getIdentifier());
-		} catch (CoreException e) {
-			LanguageServerPlugin.logError(e);
-		}
-		builder.append('/');
-		builder.append(launchConfiguration.getName());
-		builder.append('/');
-		for (String launchMode : launchModes) {
-			builder.append(launchMode);
-			builder.append('+');
-		}
-		builder.deleteCharAt(builder.length() - 1);
-	}
-
-	public ILaunchConfiguration getLaunchConfiguration() {
-		return launchConfiguration;
-	}
-
-	public Set<String> getLaunchModes() {
-		return launchModes;
-	}
-
-	static ContentTypeToLSPLaunchConfigEntry readFromPreference(String preferenceEntry) {
-		String[] parts = preferenceEntry.split(":"); //$NON-NLS-1$
-		if (parts.length != 2) {
-			return null;
-		}
-		String contentTypeId = parts[0];
-		String[] launchParts = parts[1].split("/"); //$NON-NLS-1$
-		String launchType = launchParts[0];
-		String launchName = launchParts[1];
-		Set<String> launchModes = Collections.singleton(ILaunchManager.RUN_MODE);
-		if (launchParts.length > 2) {
-			launchModes = new HashSet<>(Arrays.asList(launchParts[2].split("\\+"))); //$NON-NLS-1$
-		}
-		IContentType contentType = Platform.getContentTypeManager().getContentType(contentTypeId);
-		if (contentType == null) {
-			return null;
-		}
-		ILaunchConfiguration launchConfiguration = LaunchConfigurationStreamProvider.findLaunchConfiguration(launchType, launchName);
-		if (launchConfiguration == null) {
-			return null;
-		}
-		return new ContentTypeToLSPLaunchConfigEntry(contentType, launchConfiguration, launchModes);
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ContentTypeToLanguageServerDefinition.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ContentTypeToLanguageServerDefinition.java
deleted file mode 100644
index efaa314..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ContentTypeToLanguageServerDefinition.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016-2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Mickael Istria (Red Hat Inc.) - Introduce LanguageServerDefinition
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.util.AbstractMap.SimpleEntry;
-
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition;
-import org.eclipse.lsp4e.enablement.EnablementTester;
-
-public class ContentTypeToLanguageServerDefinition extends SimpleEntry<IContentType, LanguageServerDefinition> {
-
-	private static final long serialVersionUID = 6002703726009331762L;
-	private EnablementTester enablement;
-
-	public ContentTypeToLanguageServerDefinition(@NonNull IContentType contentType,
-			@NonNull LanguageServerDefinition provider,
-			@Nullable EnablementTester enablement) {
-		super(contentType, provider);
-		this.enablement = enablement;
-	}
-
-	public boolean isEnabled() {
-		return isUserEnabled() && isExtensionEnabled();
-	}
-
-	public void setUserEnabled(boolean enabled) {
-		LanguageServerPlugin.getDefault().getPreferenceStore().setValue(getPreferencesKey(), String.valueOf(enabled));
-	}
-
-	public boolean isUserEnabled() {
-		if (LanguageServerPlugin.getDefault().getPreferenceStore().contains(getPreferencesKey())) {
-			return LanguageServerPlugin.getDefault().getPreferenceStore().getBoolean(getPreferencesKey());
-		}
-		return true;
-	}
-
-	public boolean isExtensionEnabled() {
-		return enablement != null ? enablement.evaluate() : true;
-
-	}
-
-	public EnablementTester getEnablementCondition() {
-		return enablement;
-	}
-
-	private String getPreferencesKey() {
-		return getValue().id + "/" + getKey().getId(); //$NON-NLS-1$
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/DisableShortcutsWorkaround.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/DisableShortcutsWorkaround.java
deleted file mode 100644
index c591dd2..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/DisableShortcutsWorkaround.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Pivotal Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Martin Lippert (Pivotal Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.ui.IStartup;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.keys.IBindingService;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.Version;
-
-/**
- * this is a startup participant that disables the "open symbol in workspace" key binding for older platform versions
- * to avoid the conflict with the overall "open type" key binding.
- */
-public class DisableShortcutsWorkaround implements IStartup {
-
-	private static final String LSP4E_COMMAND_ID_PREFIX = "org.eclipse.lsp4e"; //$NON-NLS-1$
-
-	@Override
-	@SuppressWarnings("null")
-	public void earlyStartup() {
-
-		if (isPlatformKeybindingBug517068Fixed()) {
-			return;
-		}
-
-		IBindingService service = PlatformUI.getWorkbench().getService(IBindingService.class);
-		if (service != null) {
-			List<Binding> newBindings = new ArrayList<>();
-			Binding[] bindings = service.getBindings();
-
-			for (Binding binding : bindings) {
-				String commandId = null;
-
-				if (binding != null && binding.getParameterizedCommand() != null && binding.getParameterizedCommand().getCommand() != null) {
-					commandId = binding.getParameterizedCommand().getCommand().getId();
-
-					if (commandId == null) {
-						newBindings.add(binding);
-					}
-					else if (!commandId.startsWith(LSP4E_COMMAND_ID_PREFIX)) {
-						newBindings.add(binding);
-					}
-					else {
-						Collection<?> conflicts = service.getConflictsFor(binding.getTriggerSequence());
-						if (conflicts == null || conflicts.isEmpty()) {
-							newBindings.add(binding);
-						}
-					}
-				}
-				else {
-					newBindings.add(binding);
-				}
-			}
-
-			PlatformUI.getWorkbench().getDisplay().asyncExec(() -> {
-				try {
-					service.savePreferences(service.getActiveScheme(),
-							newBindings.toArray(new Binding[newBindings.size()]));
-				} catch (IOException e) {
-					LanguageServerPlugin.logError(e);
-				}
-			});
-		}
-	}
-
-	/**
-	 * check for bugfix 517068
-	 */
-	private boolean isPlatformKeybindingBug517068Fixed() {
-		Bundle bundle = Platform.getBundle("org.eclipse.e4.ui.bindings"); //$NON-NLS-1$
-		Version currentVersion = bundle.getVersion();
-		Version fixVersion = new Version(0, 12, 1);
-		return currentVersion.compareTo(fixVersion) >= 0;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/DocumentContentSynchronizer.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/DocumentContentSynchronizer.java
deleted file mode 100644
index 6a4e4c5..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/DocumentContentSynchronizer.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Michał Niewrzał (Rogue Wave Software Inc.)
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.io.File;
-import java.net.URI;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.lsp4j.DidChangeTextDocumentParams;
-import org.eclipse.lsp4j.DidCloseTextDocumentParams;
-import org.eclipse.lsp4j.DidOpenTextDocumentParams;
-import org.eclipse.lsp4j.DidSaveTextDocumentParams;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.TextDocumentContentChangeEvent;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.TextDocumentItem;
-import org.eclipse.lsp4j.TextDocumentSyncKind;
-import org.eclipse.lsp4j.TextDocumentSyncOptions;
-import org.eclipse.lsp4j.VersionedTextDocumentIdentifier;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-
-final class DocumentContentSynchronizer implements IDocumentListener {
-
-	private final @NonNull LanguageServerWrapper languageServerWrapper;
-	private final @NonNull IDocument document;
-	private final @NonNull URI fileUri;
-	private final TextDocumentSyncKind syncKind;
-
-	private int version = 0;
-	private DidChangeTextDocumentParams changeParams;
-	private long modificationStamp;
-	final @NonNull CompletableFuture<Void> didOpenFuture;
-
-	public DocumentContentSynchronizer(@NonNull LanguageServerWrapper languageServerWrapper,
-			@NonNull IDocument document,
-			TextDocumentSyncKind syncKind) {
-		this.languageServerWrapper = languageServerWrapper;
-		this.fileUri = LSPEclipseUtils.toUri(document);
-        try {
-            IFileStore store = EFS.getStore(fileUri);
-            this.modificationStamp = store.fetchInfo().getLastModified();
-        } catch (CoreException e) {
-            LanguageServerPlugin.logError(e);
-            this.modificationStamp =  new File(fileUri).lastModified();
-        }
-        this.syncKind = syncKind != null ? syncKind : TextDocumentSyncKind.Full;
-
-		this.document = document;
-		// add a document buffer
-		TextDocumentItem textDocument = new TextDocumentItem();
-		textDocument.setUri(fileUri.toString());
-		textDocument.setText(document.get());
-
-		List<IContentType> contentTypes = LSPEclipseUtils.getDocumentContentTypes(this.document);
-
-		String languageId = languageServerWrapper.getLanguageId(contentTypes.toArray(new IContentType[0]));
-
-		IPath fromPortableString = Path.fromPortableString(this.fileUri.getPath());
-		if (languageId == null) {
-			languageId = fromPortableString.getFileExtension();
-			if (languageId == null) {
-				languageId = fromPortableString.lastSegment();
-			}
-		}
-
-		textDocument.setLanguageId(languageId);
-		textDocument.setVersion(++version);
-		didOpenFuture = languageServerWrapper.getInitializedServer()
-				.thenAcceptAsync(ls -> ls.getTextDocumentService().didOpen(new DidOpenTextDocumentParams(textDocument)));
-	}
-
-	@Override
-	public void documentChanged(DocumentEvent event) {
-		checkEvent(event);
-		if (syncKind == TextDocumentSyncKind.Full) {
-			createChangeEvent(event);
-		}
-
-		if (changeParams != null) {
-			final DidChangeTextDocumentParams changeParamsToSend = changeParams;
-			changeParams = null;
-
-			changeParamsToSend.getTextDocument().setVersion(++version);
-			languageServerWrapper.getInitializedServer()
-					.thenAcceptAsync(ls -> ls.getTextDocumentService().didChange(changeParamsToSend));
-		}
-	}
-
-	@Override
-	public void documentAboutToBeChanged(DocumentEvent event) {
-		checkEvent(event);
-		if (syncKind == TextDocumentSyncKind.Incremental) {
-			// this really needs to happen before event gets actually
-			// applied, to properly compute positions
-			createChangeEvent(event);
-		}
-	}
-
-	/**
-	 * Convert Eclipse {@link DocumentEvent} to LS according {@link TextDocumentSyncKind}.
-	 * {@link TextDocumentContentChangeEventImpl}.
-	 *
-	 * @param event
-	 *            Eclipse {@link DocumentEvent}
-	 * @return true if change event is ready to be sent
-	 */
-	private boolean createChangeEvent(DocumentEvent event) {
-		changeParams = new DidChangeTextDocumentParams(new VersionedTextDocumentIdentifier(), Collections.singletonList(new TextDocumentContentChangeEvent()));
-		changeParams.getTextDocument().setUri(fileUri.toString());
-
-		IDocument document = event.getDocument();
-		TextDocumentContentChangeEvent changeEvent = null;
-		TextDocumentSyncKind syncKind = getTextDocumentSyncKind();
-		switch (syncKind) {
-		case None:
-			return false;
-		case Full:
-			changeParams.getContentChanges().get(0).setText(event.getDocument().get());
-			break;
-		case Incremental:
-			changeEvent = changeParams.getContentChanges().get(0);
-			String newText = event.getText();
-			int offset = event.getOffset();
-			int length = event.getLength();
-			try {
-				// try to convert the Eclipse start/end offset to LS range.
-				Range range = new Range(LSPEclipseUtils.toPosition(offset, document),
-						LSPEclipseUtils.toPosition(offset + length, document));
-				changeEvent.setRange(range);
-				changeEvent.setText(newText);
-				changeEvent.setRangeLength(length);
-			} catch (BadLocationException e) {
-				// error while conversion (should never occur)
-				// set the full document text as changes.
-				changeEvent.setText(document.get());
-			}
-			break;
-		}
-		return true;
-	}
-
-	public void documentSaved(long timestamp) {
-		this.modificationStamp = timestamp;
-		ServerCapabilities serverCapabilities = languageServerWrapper.getServerCapabilities();
-		if(serverCapabilities != null ) {
-			Either<TextDocumentSyncKind, TextDocumentSyncOptions> textDocumentSync = serverCapabilities.getTextDocumentSync();
-			if(textDocumentSync.isRight() && textDocumentSync.getRight().getSave() == null) {
-				return;
-			}
-		}
-		TextDocumentIdentifier identifier = new TextDocumentIdentifier(fileUri.toString());
-		DidSaveTextDocumentParams params = new DidSaveTextDocumentParams(identifier, document.get());
-		languageServerWrapper.getInitializedServer().thenAcceptAsync(ls -> ls.getTextDocumentService().didSave(params));
-	}
-
-	public void documentClosed() {
-		// When LS is shut down all documents are being disconnected. No need to send "didClose" message to the LS that is being shut down or not yet started
-		if (languageServerWrapper.isActive()) {
-			TextDocumentIdentifier identifier = new TextDocumentIdentifier(fileUri.toString());
-			DidCloseTextDocumentParams params = new DidCloseTextDocumentParams(identifier);
-			languageServerWrapper.getInitializedServer().thenAcceptAsync(ls -> ls.getTextDocumentService().didClose(params));
-		}
-	}
-
-	/**
-	 * Returns the text document sync kind capabilities of the server and {@link TextDocumentSyncKind#Full} otherwise.
-	 *
-	 * @return the text document sync kind capabilities of the server and {@link TextDocumentSyncKind#Full} otherwise.
-	 */
-	private TextDocumentSyncKind getTextDocumentSyncKind() {
-		return syncKind;
-	}
-
-	protected long getModificationStamp() {
-		return modificationStamp;
-	}
-
-	public IDocument getDocument() {
-		return this.document;
-	}
-
-	int getVersion() {
-		return version;
-	}
-
-	private void checkEvent(DocumentEvent event) {
-		if (this.document != event.getDocument()) {
-			throw new IllegalStateException("Synchronizer should apply to only a single document, which is the one it was instantiated for"); //$NON-NLS-1$
-		}
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/DocumentInputStream.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/DocumentInputStream.java
deleted file mode 100644
index 5b525a6..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/DocumentInputStream.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-
-package org.eclipse.lsp4e;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-
-final class DocumentInputStream extends InputStream {
-	private int index = 0;
-	private IDocument document;
-
-	DocumentInputStream(IDocument document) {
-		this.document = document;
-	}
-
-	@Override
-	public int read() throws IOException {
-		if (index < document.getLength()) {
-			try {
-				char res = document.getChar(index);
-				index++;
-				return res;
-			} catch (BadLocationException e) {
-				throw new IOException(e);
-			}
-		}
-		return -1;
-	}
-
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/FileBufferListenerAdapter.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/FileBufferListenerAdapter.java
deleted file mode 100644
index 9d90a20..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/FileBufferListenerAdapter.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import org.eclipse.core.filebuffers.IFileBuffer;
-import org.eclipse.core.filebuffers.IFileBufferListener;
-import org.eclipse.core.runtime.IPath;
-
-class FileBufferListenerAdapter implements IFileBufferListener {
-
-	@Override
-	public void bufferCreated(IFileBuffer buffer) {
-	}
-
-	@Override
-	public void bufferDisposed(IFileBuffer buffer) {
-	}
-
-	@Override
-	public void bufferContentAboutToBeReplaced(IFileBuffer buffer) {
-	}
-
-	@Override
-	public void bufferContentReplaced(IFileBuffer buffer) {
-	}
-
-	@Override
-	public void stateChanging(IFileBuffer buffer) {
-	}
-
-	@Override
-	public void dirtyStateChanged(IFileBuffer buffer, boolean isDirty) {
-	}
-
-	@Override
-	public void stateValidationChanged(IFileBuffer buffer, boolean isStateValidated) {
-	}
-
-	@Override
-	public void underlyingFileMoved(IFileBuffer buffer, IPath path) {
-	}
-
-	@Override
-	public void underlyingFileDeleted(IFileBuffer buffer) {
-	}
-
-	@Override
-	public void stateChangeFailed(IFileBuffer buffer) {
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/HasLanguageServerPropertyTester.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/HasLanguageServerPropertyTester.java
deleted file mode 100644
index 79f92fa..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/HasLanguageServerPropertyTester.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Martin Lippert (Pivotal Inc.) - bug 531167
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.ui.IEditorInput;
-
-public class HasLanguageServerPropertyTester extends PropertyTester {
-
-	@Override
-	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
-		if (receiver instanceof IFile) {
-			return LanguageServersRegistry.getInstance().canUseLanguageServer((IFile) receiver);
-		} else if (receiver instanceof IEditorInput) {
-			return LanguageServersRegistry.getInstance().canUseLanguageServer((IEditorInput) receiver);
-		} else if (receiver instanceof IDocument) {
-			return LanguageServersRegistry.getInstance().canUseLanguageServer((IDocument) receiver);
-		} else if (receiver instanceof ITextViewer) {
-			IDocument document = ((ITextViewer) receiver).getDocument();
-			if (document != null) {
-				return LanguageServersRegistry.getInstance().canUseLanguageServer(document);
-			}
-		}
-		return false;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LSPEclipseUtils.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LSPEclipseUtils.java
deleted file mode 100644
index 284bdfc..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LSPEclipseUtils.java
+++ /dev/null
@@ -1,1007 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2021 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Michał Niewrzał (Rogue Wave Software Inc.)
- *  Lucas Bullen (Red Hat Inc.) - Get IDocument from IEditorInput
- *  Angelo Zerr <angelo.zerr@gmail.com> - Bug 525400 - [rename] improve rename support with ltk UI
- *  Remy Suen <remy.suen@gmail.com> - Bug 520052 - Rename assumes that workspace edits are in reverse order
- *  Martin Lippert (Pivotal Inc.) - bug 531452, bug 532305
- *  Alex Boyko (Pivotal Inc.) - bug 543435 (WorkspaceEdit apply handling)
- *  Markus Ofterdinger (SAP SE) - Bug 552140 - NullPointerException in LSP4E
- *  Rubén Porras Campo (Avaloq) - Bug 576425 - Support Remote Files
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Method;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.filebuffers.ITextFileBufferManager;
-import org.eclipse.core.filebuffers.LocationKind;
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileInfo;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.internal.utils.FileUtil;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.Adapters;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.RewriteSessionEditProcessor;
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.lsp4e.refactoring.CreateFileChange;
-import org.eclipse.lsp4e.refactoring.DeleteExternalFile;
-import org.eclipse.lsp4e.refactoring.LSPTextChange;
-import org.eclipse.lsp4j.Color;
-import org.eclipse.lsp4j.CompletionParams;
-import org.eclipse.lsp4j.CreateFile;
-import org.eclipse.lsp4j.DefinitionParams;
-import org.eclipse.lsp4j.DeleteFile;
-import org.eclipse.lsp4j.DiagnosticSeverity;
-import org.eclipse.lsp4j.HoverParams;
-import org.eclipse.lsp4j.LinkedEditingRangeParams;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.LocationLink;
-import org.eclipse.lsp4j.MarkupContent;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.RenameFile;
-import org.eclipse.lsp4j.ResourceOperation;
-import org.eclipse.lsp4j.SignatureHelpParams;
-import org.eclipse.lsp4j.TextDocumentEdit;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.TextDocumentPositionParams;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.TypeDefinitionParams;
-import org.eclipse.lsp4j.VersionedTextDocumentIdentifier;
-import org.eclipse.lsp4j.WorkspaceEdit;
-import org.eclipse.lsp4j.WorkspaceFolder;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.ltk.core.refactoring.CompositeChange;
-import org.eclipse.ltk.core.refactoring.DocumentChange;
-import org.eclipse.ltk.core.refactoring.PerformChangeOperation;
-import org.eclipse.ltk.core.refactoring.resource.DeleteResourceChange;
-import org.eclipse.mylyn.wikitext.markdown.MarkdownLanguage;
-import org.eclipse.mylyn.wikitext.parser.MarkupParser;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.RGBA;
-import org.eclipse.text.edits.MalformedTreeException;
-import org.eclipse.text.edits.MultiTextEdit;
-import org.eclipse.text.edits.ReplaceEdit;
-import org.eclipse.text.undo.DocumentUndoManagerRegistry;
-import org.eclipse.text.undo.IDocumentUndoManager;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IPathEditorInput;
-import org.eclipse.ui.IURIEditorInput;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.intro.config.IIntroURL;
-import org.eclipse.ui.intro.config.IntroURLFactory;
-import org.eclipse.ui.part.FileEditorInput;
-import org.eclipse.ui.part.MultiPageEditorPart;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-/**
- * Some utility methods to convert between Eclipse and LS-API types
- */
-public class LSPEclipseUtils {
-
-	public static final String HTTP = "http"; //$NON-NLS-1$
-	public static final String INTRO_URL = "http://org.eclipse.ui.intro"; //$NON-NLS-1$
-	public static final String FILE_URI = "file://"; //$NON-NLS-1$
-
-	private static final String FILE_SCHEME = "file"; //$NON-NLS-1$
-	private static final String FILE_SLASH = "file:/"; //$NON-NLS-1$
-	private static final String HTML = "html"; //$NON-NLS-1$
-	private static final String MARKDOWN = "markdown"; //$NON-NLS-1$
-	private static final String MD = "md"; //$NON-NLS-1$
-	private static final int MAX_BROWSER_NAME_LENGTH = 30;
-	private static final MarkupParser MARKDOWN_PARSER = new MarkupParser(new MarkdownLanguage());
-
-	private LSPEclipseUtils() {
-		// this class shouldn't be instantiated
-	}
-
-	public static ITextEditor getActiveTextEditor() {
-		IEditorPart editorPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
-		if(editorPart instanceof ITextEditor) {
-			return (ITextEditor) editorPart;
-		} else if (editorPart instanceof MultiPageEditorPart) {
-			MultiPageEditorPart multiPageEditorPart = (MultiPageEditorPart) editorPart;
-			Object page = multiPageEditorPart.getSelectedPage();
-			if (page instanceof ITextEditor) {
-				return (ITextEditor) page;
-			}
-		}
-		return null;
-	}
-
-	public static Position toPosition(int offset, IDocument document) throws BadLocationException {
-		Position res = new Position();
-		res.setLine(document.getLineOfOffset(offset));
-		res.setCharacter(offset - document.getLineInformationOfOffset(offset).getOffset());
-		return res;
-	}
-
-	public static int toOffset(Position position, IDocument document) throws BadLocationException {
-		return document.getLineInformation(position.getLine()).getOffset() + position.getCharacter();
-	}
-
-	public static boolean isOffsetInRange(int offset, Range range, IDocument document) {
-		try {
-			return offset != -1 && offset >= toOffset(range.getStart(), document)
-					&& offset <= toOffset(range.getEnd(), document);
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-			return false;
-		}
-	}
-
-	public static CompletionParams toCompletionParams(URI fileUri, int offset, IDocument document)
-			throws BadLocationException {
-		Position start = toPosition(offset, document);
-		CompletionParams param = new CompletionParams();
-		param.setPosition(start);
-		param.setUri(fileUri.toString());
-		TextDocumentIdentifier id = new TextDocumentIdentifier();
-		id.setUri(fileUri.toString());
-		param.setTextDocument(id);
-		return param;
-	}
-
-	/**
-	 * @param fileUri
-	 * @param offset
-	 * @param document
-	 * @return
-	 * @throws BadLocationException
-	 * @deprecated Use {@link #toTextDocumentPosistionParams(int, IDocument)}
-	 *             instead
-	 */
-	@Deprecated
-	public static TextDocumentPositionParams toTextDocumentPosistionParams(URI fileUri, int offset, IDocument document)
-			throws BadLocationException {
-		Position start = toPosition(offset, document);
-		TextDocumentPositionParams param = new TextDocumentPositionParams();
-		param.setPosition(start);
-		param.setUri(fileUri.toString());
-		TextDocumentIdentifier id = new TextDocumentIdentifier();
-		id.setUri(fileUri.toString());
-		param.setTextDocument(id);
-		return param;
-	}
-
-	private static <T extends TextDocumentPositionParams> T toTextDocumentPositionParamsCommon(@NonNull T param,  int offset, IDocument document)
-			throws BadLocationException {
-		URI uri = toUri(document);
-		Position start = toPosition(offset, document);
-		param.setPosition(start);
-		TextDocumentIdentifier id = new TextDocumentIdentifier();
-		if (uri != null) {
-			param.setUri(uri.toString());
-			id.setUri(uri.toString());
-		}
-		param.setTextDocument(id);
-		return param;
-	}
-
-	public static HoverParams toHoverParams(int offset, IDocument document) throws BadLocationException {
-		return toTextDocumentPositionParamsCommon(new HoverParams(), offset, document);
-	}
-
-	public static SignatureHelpParams toSignatureHelpParams(int offset, IDocument document)
-			throws BadLocationException {
-		return toTextDocumentPositionParamsCommon(new SignatureHelpParams(), offset, document);
-	}
-
-	public static TextDocumentPositionParams toTextDocumentPosistionParams(int offset, IDocument document)
-			throws BadLocationException {
-		return toTextDocumentPositionParamsCommon(new TextDocumentPositionParams(), offset, document);
-	}
-
-	public static DefinitionParams toDefinitionParams(TextDocumentPositionParams params) {
-		return toTextDocumentPositionParamsCommon(new DefinitionParams(), params);
-	}
-
-	public static TypeDefinitionParams toTypeDefinitionParams(TextDocumentPositionParams params) {
-		return toTextDocumentPositionParamsCommon(new TypeDefinitionParams(), params);
-	}
-
-	public static LinkedEditingRangeParams toLinkedEditingRangeParams(TextDocumentPositionParams params) {
-		return toTextDocumentPositionParamsCommon(new LinkedEditingRangeParams(), params);
-	}
-
-	/**
-	 * Convert generic TextDocumentPositionParams to type specific version. Should
-	 * only be used for T where T adds no new fields.
-	 */
-	private static <T extends TextDocumentPositionParams> T toTextDocumentPositionParamsCommon(
-			@NonNull T specificParams, TextDocumentPositionParams genericParams) {
-		if (genericParams.getPosition() != null) {
-			specificParams.setPosition(genericParams.getPosition());
-		}
-		if (genericParams.getTextDocument() != null) {
-			specificParams.setTextDocument(genericParams.getTextDocument());
-		}
-		if (genericParams.getUri() != null) {
-			specificParams.setUri(genericParams.getUri());
-		}
-		return specificParams;
-	}
-
-	private static ITextFileBuffer toBuffer(IDocument document) {
-		return FileBuffers.getTextFileBufferManager().getTextFileBuffer(document);
-	}
-
-	public static URI toUri(IDocument document) {
-		IFile file = getFile(document);
-		if (file != null) {
-			return toUri(file);
-		} else {
-			ITextFileBuffer buffer = toBuffer(document);
-			if (buffer != null) {
-				IPath path = toPath(buffer);
-				if(path != null) {
-					return toUri(path.toFile());
-				} else {
-					return buffer.getFileStore().toURI();
-				}
-			}
-		}
-		return null;
-	}
-
-	private static IPath toPath(ITextFileBuffer buffer) {
-		if (buffer != null) {
-			return buffer.getLocation();
-		}
-		return null;
-	}
-
-	public static IPath toPath(IDocument document) {
-		return toPath(toBuffer(document));
-	}
-
-	public static int toEclipseMarkerSeverity(DiagnosticSeverity lspSeverity) {
-		if (lspSeverity == null) {
-			// if severity is empty it is up to the client to interpret diagnostics
-			return IMarker.SEVERITY_ERROR;
-		}
-		switch (lspSeverity) {
-		case Error:
-			return IMarker.SEVERITY_ERROR;
-		case Warning:
-			return IMarker.SEVERITY_WARNING;
-		default:
-			return IMarker.SEVERITY_INFO;
-		}
-	}
-
-	@Nullable
-	public static IFile getFileHandle(@Nullable String uri) {
-		if (uri == null || uri.isEmpty()) {
-			return null;
-		}
-		if (uri.startsWith(FILE_SLASH)) {
-			URI uriObj = URI.create(uri);
-			IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot();
-			IFile[] files = wsRoot.findFilesForLocationURI(uriObj);
-			if (files.length > 0) {
-				return files[0];
-			}
-			return null;
-		} else {
-			return Adapters.adapt(uri, IFile.class, true);
-		}
-	}
-
-	@Nullable
-	public static IResource findResourceFor(@Nullable String uri) {
-		if (uri == null || uri.isEmpty()) {
-			return null;
-		}
-		if (uri.startsWith(FILE_SLASH)) {
-			return findResourceFor(URI.create(uri));
-		} else {
-			return Adapters.adapt(uri, IResource.class, true);
-		}
-	}
-
-	@Nullable
-	public static IResource findResourceFor(@Nullable URI uri) {
-		if (uri == null) {
-			return null;
-		}
-		if (FILE_SCHEME.equals(uri.getScheme())) {
-			IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot();
-
-			IFile[] files = wsRoot.findFilesForLocationURI(uri);
-			if (files.length > 0) {
-				IFile file = files[0];
-				/*
-				 * IWorkspaceRoot#findFilesForLocationURI returns IFile objects for folders instead of null.
-				 * IWorkspaceRoot#findContainersForLocationURI returns IFolder objects for regular files instead of null.
-				 * Thus we have to manually check the file system entry to determine the correct type to return.
-				 */
-				if(!file.isVirtual() && !file.getLocation().toFile().isDirectory()) {
-					return file;
-				}
-			}
-
-			final IContainer[] containers = wsRoot.findContainersForLocationURI(uri);
-			if (containers.length > 0) {
-				return containers[0];
-			}
-			return null;
-		} else {
-			return Adapters.adapt(uri, IResource.class, true);
-		}
-	}
-
-	public static void applyEdit(TextEdit textEdit, IDocument document) throws BadLocationException {
-		document.replace(
-				LSPEclipseUtils.toOffset(textEdit.getRange().getStart(), document),
-				LSPEclipseUtils.toOffset(textEdit.getRange().getEnd(), document) - LSPEclipseUtils.toOffset(textEdit.getRange().getStart(), document),
-				textEdit.getNewText());
-	}
-
-	/**
-	 * Method will apply all edits to document as single modification. Needs to
-	 * be executed in UI thread.
-	 *
-	 * @param document
-	 *            document to modify
-	 * @param edits
-	 *            list of LSP TextEdits
-	 */
-	public static void applyEdits(IDocument document, List<? extends TextEdit> edits) {
-		if (document == null || edits == null || edits.isEmpty()) {
-			return;
-		}
-
-		IDocumentUndoManager manager = DocumentUndoManagerRegistry.getDocumentUndoManager(document);
-		if (manager != null) {
-			manager.beginCompoundChange();
-		}
-
-		MultiTextEdit edit = new MultiTextEdit();
-		for (TextEdit textEdit : edits) {
-			if (textEdit != null) {
-				try {
-					int offset = LSPEclipseUtils.toOffset(textEdit.getRange().getStart(), document);
-					int length = LSPEclipseUtils.toOffset(textEdit.getRange().getEnd(), document) - offset;
-					edit.addChild(new ReplaceEdit(offset, length, textEdit.getNewText()));
-				} catch (BadLocationException e) {
-					LanguageServerPlugin.logError(e);
-				}
-			}
-		}
-		try {
-			RewriteSessionEditProcessor editProcessor = new RewriteSessionEditProcessor(document, edit,
-					org.eclipse.text.edits.TextEdit.NONE);
-			editProcessor.performEdits();
-		} catch (MalformedTreeException | BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-		}
-		if (manager != null) {
-			manager.endCompoundChange();
-		}
-	}
-
-	@Nullable
-	public static IDocument getDocument(@Nullable IResource resource) {
-		if (resource == null) {
-			return null;
-		}
-
-		IDocument document = getExistingDocument(resource);
-
-		if (document == null && resource.getType() == IResource.FILE) {
-			ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager();
-			try {
-				bufferManager.connect(resource.getFullPath(), LocationKind.IFILE, new NullProgressMonitor());
-			} catch (CoreException e) {
-				LanguageServerPlugin.logError(e);
-				return document;
-			}
-
-			ITextFileBuffer buffer = bufferManager.getTextFileBuffer(resource.getFullPath(), LocationKind.IFILE);
-			if (buffer != null) {
-				document = buffer.getDocument();
-			}
-		}
-
-		return document;
-	}
-
-	@Nullable
-	public static IDocument getExistingDocument(@Nullable IResource resource) {
-		if (resource == null) {
-			return null;
-		}
-
-		ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager();
-		ITextFileBuffer buffer = bufferManager.getTextFileBuffer(resource.getFullPath(), LocationKind.IFILE);
-		if (buffer != null) {
-			return buffer.getDocument();
-		}
-		else {
-			return null;
-		}
-	}
-
-	@Nullable
-	private static IDocument getDocument(URI uri) {
-		if (uri == null) {
-			return null;
-		}
-		IResource resource = findResourceFor(uri.toString());
-		if (resource != null) {
-			return getDocument(resource);
-		}
-		if (!new File(uri).isFile()) {
-			return null;
-		}
-
-		ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager();
-		IDocument document = null;
-		IFileStore store = null;
-		try {
-			store = EFS.getStore(uri);
-		} catch (CoreException e) {
-			LanguageServerPlugin.logError(e);
-			return null;
-		}
-		ITextFileBuffer buffer = bufferManager.getFileStoreTextFileBuffer(store);
-		if (buffer != null) {
-			document = buffer.getDocument();
-		} else {
-			try {
-				bufferManager.connectFileStore(store, new NullProgressMonitor());
-			} catch (CoreException e) {
-				LanguageServerPlugin.logError(e);
-				return document;
-			}
-			buffer = bufferManager.getFileStoreTextFileBuffer(store);
-			if (buffer != null) {
-				document = buffer.getDocument();
-			}
-		}
-		return document;
-	}
-
-	public static void openInEditor(Location location, IWorkbenchPage page) {
-		open(location.getUri(), page, location.getRange());
-	}
-
-	public static void openInEditor(LocationLink link, IWorkbenchPage page) {
-		open(link.getTargetUri(), page, link.getTargetSelectionRange());
-
-	}
-
-	public static void open(String uri, IWorkbenchPage page, Range optionalRange) {
-		if (uri.startsWith(FILE_SLASH)) {
-			openFileLocationInEditor(uri, page, optionalRange);
-		} else if (uri.startsWith(INTRO_URL)) {
-			openIntroURL(uri);
-		} else if (uri.startsWith(HTTP)) {
-			openHttpLocationInBrowser(uri, page);
-		}
-	}
-
-	protected static void openIntroURL(final String uri) {
-		IIntroURL introUrl = IntroURLFactory.createIntroURL(uri);
-		if (introUrl != null) {
-			try {
-				if (!introUrl.execute()) {
-					LanguageServerPlugin.logWarning("Failed to execute IntroURL: " + uri, null); //$NON-NLS-1$
-				}
-			} catch (Exception t) {
-				LanguageServerPlugin.logWarning("Error executing IntroURL: " + uri, t); //$NON-NLS-1$
-			}
-		}
-	}
-
-	protected static void openHttpLocationInBrowser(final String uri, IWorkbenchPage page) {
-		page.getWorkbenchWindow().getShell().getDisplay().asyncExec(() -> {
-			try {
-				URL url = new URL(uri);
-
-				IWorkbenchBrowserSupport browserSupport = page.getWorkbenchWindow().getWorkbench()
-						.getBrowserSupport();
-
-				String browserName = uri;
-				if (browserName.length() > MAX_BROWSER_NAME_LENGTH) {
-					browserName = uri.substring(0, MAX_BROWSER_NAME_LENGTH - 1) + '\u2026';
-				}
-
-				browserSupport
-						.createBrowser(IWorkbenchBrowserSupport.AS_EDITOR | IWorkbenchBrowserSupport.LOCATION_BAR
-								| IWorkbenchBrowserSupport.NAVIGATION_BAR, "lsp4e-symbols", browserName, uri) //$NON-NLS-1$
-						.openURL(url);
-
-			} catch (Exception e) {
-				LanguageServerPlugin.logError(e);
-			}
-		});
-	}
-
-	protected static void openFileLocationInEditor(String uri, IWorkbenchPage page, Range optionalRange) {
-		IEditorPart part = null;
-		IDocument targetDocument = null;
-		IResource targetResource = LSPEclipseUtils.findResourceFor(uri);
-		try {
-			if (targetResource != null && targetResource.getType() == IResource.FILE) {
-				part = IDE.openEditor(page, (IFile) targetResource);
-			} else {
-				URI fileUri = URI.create(uri).normalize();
-				IFileStore fileStore =  EFS.getLocalFileSystem().getStore(fileUri);
-				IFileInfo fetchInfo = fileStore.fetchInfo();
-				if (!fetchInfo.isDirectory() && fetchInfo.exists()) {
-					part = IDE.openEditorOnFileStore(page, fileStore);
-				}
-			}
-
-			if (part != null && part instanceof ITextEditor) {
-		        targetDocument = ((ITextEditor) part).getDocumentProvider().getDocument(part.getEditorInput());
-			}
-
-		} catch (PartInitException e) {
-			LanguageServerPlugin.logError(e);
-		}
-		try {
-			if (targetDocument != null
-				&& part != null && part.getEditorSite() != null && part.getEditorSite().getSelectionProvider() != null
-				&& optionalRange != null)
-			{
-				ISelectionProvider selectionProvider = part.getEditorSite().getSelectionProvider();
-
-				int offset = LSPEclipseUtils.toOffset(optionalRange.getStart(), targetDocument);
-				int endOffset = LSPEclipseUtils.toOffset(optionalRange.getEnd(), targetDocument);
-				selectionProvider.setSelection(new TextSelection(offset, endOffset > offset ? endOffset - offset : 0));
-			}
-
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-		}
-	}
-
-	public static IDocument getDocument(ITextEditor editor) {
-		try {
-			Method getSourceViewerMethod= AbstractTextEditor.class.getDeclaredMethod("getSourceViewer"); //$NON-NLS-1$
-			getSourceViewerMethod.setAccessible(true);
-			ITextViewer viewer = (ITextViewer) getSourceViewerMethod.invoke(editor);
-			return viewer.getDocument();
-		} catch (Exception ex) {
-			LanguageServerPlugin.logError(ex);
-			return null;
-		}
-	}
-
-	public static IDocument getDocument(IEditorInput editorInput) {
-		if(editorInput instanceof IFileEditorInput) {
-			IFileEditorInput fileEditorInput = (IFileEditorInput)editorInput;
-				return getDocument(fileEditorInput.getFile());
-		}else if(editorInput instanceof IPathEditorInput) {
-			IPathEditorInput pathEditorInput = (IPathEditorInput)editorInput;
-			return getDocument(ResourcesPlugin.getWorkspace().getRoot().getFile(pathEditorInput.getPath()));
-		}else if(editorInput instanceof IURIEditorInput) {
-			IURIEditorInput uriEditorInput = (IURIEditorInput)editorInput;
-			IResource resource = findResourceFor(uriEditorInput.getURI().toString());
-			if (resource != null) {
-				return getDocument(resource);
-			} else {
-				return getDocument(uriEditorInput.getURI());
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Applies a workspace edit. It does simply change the underlying documents.
-	 *
-	 * @param wsEdit
-	 */
-	public static void applyWorkspaceEdit(WorkspaceEdit wsEdit) {
-		CompositeChange change = toCompositeChange(wsEdit);
-		PerformChangeOperation changeOperation = new PerformChangeOperation(change);
-		try {
-			ResourcesPlugin.getWorkspace().run(changeOperation, new NullProgressMonitor());
-		} catch (CoreException e) {
-			LanguageServerPlugin.logError(e);
-		}
-	}
-
-	/**
-	 * Returns a ltk {@link CompositeChange} from a lsp {@link WorkspaceEdit}.
-	 *
-	 * @param wsEdit
-	 * @return a ltk {@link CompositeChange} from a lsp {@link WorkspaceEdit}.
-	 */
-	public static CompositeChange toCompositeChange(WorkspaceEdit wsEdit) {
-		CompositeChange change = new CompositeChange("LSP Workspace Edit"); //$NON-NLS-1$
-		List<Either<TextDocumentEdit, ResourceOperation>> documentChanges = wsEdit.getDocumentChanges();
-		if (documentChanges != null) {
-			// documentChanges are present, the latter are preferred over changes
-			// see specification at
-			// https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md#workspaceedit
-			documentChanges.stream().forEach(action -> {
-				if (action.isLeft()) {
-					TextDocumentEdit edit = action.getLeft();
-					VersionedTextDocumentIdentifier id = edit.getTextDocument();
-					URI uri = URI.create(id.getUri());
-					List<TextEdit> textEdits = edit.getEdits();
-					change.addAll(toChanges(uri, textEdits));
-				} else if (action.isRight()) {
-					ResourceOperation resourceOperation = action.getRight();
-					if (resourceOperation instanceof CreateFile) {
-						CreateFile createOperation = (CreateFile) resourceOperation;
-						URI targetURI = URI.create(createOperation.getUri());
-						File targetFile = new File(targetURI);
-						if (targetFile.exists() && createOperation.getOptions() != null) {
-							if (!createOperation.getOptions().getIgnoreIfExists()) {
-								if (createOperation.getOptions().getOverwrite()) {
-									TextEdit edit = new TextEdit(null, ""); //$NON-NLS-1$
-									change.add(new LSPTextChange("Overwrite", //$NON-NLS-1$
-											targetURI, edit));
-								} else {
-									// TODO? Log, warn user...?
-								}
-							}
-						} else {
-							CreateFileChange operation = new CreateFileChange(targetURI, "", null); //$NON-NLS-1$
-							change.add(operation);
-						}
-					} else if (resourceOperation instanceof DeleteFile) {
-						IResource resource = LSPEclipseUtils.findResourceFor(((DeleteFile) resourceOperation).getUri());
-						if (resource != null) {
-							DeleteResourceChange deleteChange = new DeleteResourceChange(resource.getFullPath(), true);
-							change.add(deleteChange);
-						} else {
-							LanguageServerPlugin.logWarning(
-									"Changes outside of visible projects are not supported at the moment.", null); //$NON-NLS-1$
-						}
-					} else if (resourceOperation instanceof RenameFile) {
-						URI oldURI = URI.create(((RenameFile) resourceOperation).getOldUri());
-						URI newURI = URI.create(((RenameFile) resourceOperation).getNewUri());
-						IFile oldFile = LSPEclipseUtils.getFileHandle(oldURI.toString());
-						IFile newFile = LSPEclipseUtils.getFileHandle(newURI.toString());
-						DeleteResourceChange removeNewFile = null;
-						if (newFile != null && newFile.exists()) {
-							if (((RenameFile) resourceOperation).getOptions().getOverwrite()) {
-								removeNewFile = new DeleteResourceChange(newFile.getFullPath(), true);
-							} else if (((RenameFile) resourceOperation).getOptions().getIgnoreIfExists()) {
-								return;
-							}
-						}
-						String content = ""; //$NON-NLS-1$
-						String encoding = null;
-						if (oldFile != null && oldFile.exists()) {
-							try (ByteArrayOutputStream stream = new ByteArrayOutputStream(
-									(int) oldFile.getLocation().toFile().length());
-									InputStream inputStream = oldFile.getContents();) {
-								FileUtil.transferStreams(inputStream, stream, newURI.toString(), null);
-								content = new String(stream.toByteArray());
-								encoding = oldFile.getCharset();
-							} catch (IOException | CoreException e) {
-								LanguageServerPlugin.logError(e);
-							}
-						}
-						CreateFileChange createFileChange = new CreateFileChange(newURI, content, encoding);
-						change.add(createFileChange);
-						if (removeNewFile != null) {
-							change.add(removeNewFile);
-						}
-						if (oldFile != null) {
-							DeleteResourceChange removeOldFile = new DeleteResourceChange(oldFile.getFullPath(), true);
-							change.add(removeOldFile);
-						} else {
-							change.add(new DeleteExternalFile(new File(oldURI)));
-						}
-					}
-				}
-			});
-		} else {
-			Map<String, List<TextEdit>> changes = wsEdit.getChanges();
-			if (changes != null) {
-				for (java.util.Map.Entry<String, List<TextEdit>> edit : changes.entrySet()) {
-					URI uri = URI.create(edit.getKey());
-					List<TextEdit> textEdits = edit.getValue();
-					change.addAll(toChanges(uri, textEdits));
-				}
-			}
-		}
-		return change;
-	}
-
-	/**
-	 * Transform LSP {@link TextEdit} list into ltk {@link DocumentChange} and add
-	 * it in the given ltk {@link CompositeChange}.
-	 *
-	 * @param uri
-	 *            document URI to update
-	 * @param textEdits
-	 *            LSP text edits
-	 * @param change
-	 *            ltk change to update
-	 */
-	private static LSPTextChange[] toChanges(URI uri, List<TextEdit> textEdits) {
-		Collections.sort(textEdits, Comparator.comparing(edit -> edit.getRange().getStart(),
-				Comparator.comparingInt(Position::getLine).thenComparingInt(Position::getCharacter).reversed()));
-		return textEdits.stream().map(te -> new LSPTextChange("LSP Text Edit", uri, te)) //$NON-NLS-1$
-				.toArray(LSPTextChange[]::new);
-	}
-
-	public static URI toUri(IPath absolutePath) {
-		return toUri(absolutePath.toFile());
-	}
-
-	public static URI toUri(IResource resource) {
-		URI adaptedURI = Adapters.adapt(resource, URI.class, true);
-		if (adaptedURI != null) {
-			return adaptedURI;
-		}
-		IPath location = resource.getLocation();
-		if (location != null) {
-			return toUri(location);
-		}
-		return resource.getLocationURI();
-	}
-
-	public static URI toUri(File file) {
-		// URI scheme specified by language server protocol and LSP
-		try {
-			return new URI("file", "", file.getAbsoluteFile().toURI().getPath(), null); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (URISyntaxException e) {
-			LanguageServerPlugin.logError(e);
-			return file.getAbsoluteFile().toURI();
-		}
-	}
-
-	@Nullable public static IFile getFile(IDocument document) {
-		IPath path = toPath(document);
-		if(path == null) {
-			return null;
-		}
-		IFile res = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-		if (res != null && res.exists()) {
-			return res;
-		} else {
-			return null;
-		}
-	}
-
-	@NonNull
-	public static WorkspaceFolder toWorkspaceFolder(@NonNull IProject project) {
-		WorkspaceFolder folder = new WorkspaceFolder();
-		folder.setUri(project.getLocationURI() != null ? project.getLocationURI().toString() : ""); //$NON-NLS-1$
-		folder.setName(project.getName());
-		return folder;
-	}
-
-	@NonNull
-	public static List<IContentType> getFileContentTypes(@NonNull IFile file) {
-		List<IContentType> contentTypes = new ArrayList<>();
-		try (InputStream contents = file.getContents()) {
-			// TODO consider using document as inputstream
-			contentTypes.addAll(
-					Arrays.asList(Platform.getContentTypeManager().findContentTypesFor(contents, file.getName())));
-		} catch (CoreException | IOException e) {
-			LanguageServerPlugin.logError(e);
-		}
-		return contentTypes;
-	}
-
-	@Nullable
-	private static String getFileName(@NonNull IDocument document) {
-		IFile file = getFile(document);
-		if (file != null) {
-			return file.getName();
-		}
-		IPath path = toPath(document);
-		if(path != null) {
-			return path.lastSegment();
-		}
-        return null;
-	}
-
-	@NonNull
-	public static List<IContentType> getDocumentContentTypes(@NonNull IDocument document) {
-		List<IContentType> contentTypes = new ArrayList<>();
-
-		ITextFileBuffer buffer = FileBuffers.getTextFileBufferManager().getTextFileBuffer(document);
-		if (buffer != null) {
-			try {
-				// may be a more specific content-type, relying on some content-type factory and actual content (not just name)
-				IContentType contentType = buffer.getContentType();
-				if (contentType != null) {
-					contentTypes.add(contentType);
-				}
-			} catch (CoreException e) {
-				LanguageServerPlugin.logError("Exception occurred while fetching the content type from the buffer", e); //$NON-NLS-1$;
-			}
-		}
-
-		String fileName = getFileName(document);
-		if (fileName != null) {
-			try (InputStream contents = new DocumentInputStream(document)) {
-				contentTypes
-						.addAll(Arrays.asList(Platform.getContentTypeManager().findContentTypesFor(contents, fileName)));
-			} catch (IOException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		}
-		return contentTypes;
-	}
-
-	/**
-	 * Deprecated because any code that calls this probably needs to be changed
-	 * somehow to be properly aware of markdown content. This method simply returns
-	 * the doc string as a string, regardless of whether it is markdown or
-	 * plaintext.
-	 *
-	 * @deprecated
-	 */
-	@Deprecated
-	public static String getDocString(Either<String, MarkupContent> documentation) {
-		if (documentation != null) {
-			if (documentation.isLeft()) {
-				return documentation.getLeft();
-			} else {
-				return documentation.getRight().getValue();
-			}
-		}
-		return null;
-	}
-
-	public static String getHtmlDocString(Either<String, MarkupContent> documentation) {
-		if (documentation.isLeft()) {
-			return htmlParagraph(documentation.getLeft());
-		} else if (documentation.isRight()) {
-			MarkupContent markupContent = documentation.getRight();
-			if (markupContent.getValue() != null) {
-				if (MARKDOWN.equalsIgnoreCase(markupContent.getKind())
-						|| MD.equalsIgnoreCase(markupContent.getKind())) {
-					try {
-						return MARKDOWN_PARSER.parseToHtml(markupContent.getValue());
-					} catch (Exception e) {
-						LanguageServerPlugin.logError(e);
-						return htmlParagraph(markupContent.getValue());
-					}
-				} else if (HTML.equalsIgnoreCase(markupContent.getKind())) {
-					return markupContent.getValue();
-				} else {
-					return htmlParagraph(markupContent.getValue());
-				}
-			}
-		}
-		return null;
-	}
-
-	private static String htmlParagraph(String text) {
-		StringBuilder sb = new StringBuilder();
-		sb.append("<p>"); //$NON-NLS-1$
-		sb.append(text);
-		sb.append("</p>"); //$NON-NLS-1$
-		return sb.toString();
-	}
-
-	/**
-	 * Convert the given Eclipse <code>rgb</code> instance to a LSP {@link Color}
-	 * instance.
-	 *
-	 * @param rgb
-	 *            the rgb instance to convert
-	 * @return the given Eclipse <code>rgb</code> instance to a LSP {@link Color}
-	 *         instance.
-	 */
-	public static Color toColor(RGB rgb) {
-		return new Color(rgb.red / 255d, rgb.green / 255d, rgb.blue / 255d, 1);
-	}
-
-	/**
-	 * Convert the given LSP <code>color</code> instance to a Eclipse {@link RGBA}
-	 * instance.
-	 *
-	 * @param color
-	 *            the color instance to convert
-	 * @return the given LSP <code>color</code> instance to a Eclipse {@link RGBA}
-	 *         instance.
-	 */
-	public static RGBA toRGBA(Color color) {
-		return new RGBA((int) (color.getRed() * 255), (int) (color.getGreen() * 255), (int) (color.getBlue() * 255),
-				(int) color.getAlpha());
-	}
-
-	public static Set<IEditorReference> findOpenEditorsFor(URI uri) {
-		if (uri == null) {
-			return Collections.emptySet();
-		}
-		return Arrays.stream(PlatformUI.getWorkbench().getWorkbenchWindows())
-			.map(IWorkbenchWindow::getPages)
-			.flatMap(Arrays::stream)
-			.map(IWorkbenchPage::getEditorReferences)
-			.flatMap(Arrays::stream)
-			.filter(ref -> {
-				try {
-					return uri.equals(LSPEclipseUtils.toUri(ref.getEditorInput()));
-				} catch (PartInitException e) {
-					LanguageServerPlugin.logError(e);
-					return false;
-				}
-			})
-			.collect(Collectors.toSet());
-	}
-
-	private static URI toUri(IEditorInput editorInput) {
-		if (editorInput instanceof FileEditorInput) {
-			return LSPEclipseUtils.toUri(((FileEditorInput) editorInput).getFile());
-		}
-		if (editorInput instanceof IURIEditorInput) {
-			return LSPEclipseUtils.toUri(Path.fromPortableString((((IURIEditorInput) editorInput).getURI()).getPath()));
-		}
-		return null;
-	}
-
-	public static URI toUri(String uri) {
-		return LSPEclipseUtils.toUri(Path.fromPortableString(URI.create(uri).getPath()));
-	}
-
-	public static boolean hasCapability(Either<Boolean, ? extends Object> eitherCapability) {
-		if(eitherCapability != null) {
-			if (eitherCapability.isLeft()) {
-				return eitherCapability.getLeft();
-			} else {
-				return eitherCapability.getRight() != null;
-			}
-		} else {
-			return false;
-		}
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageClientImpl.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageClientImpl.java
deleted file mode 100644
index 388e3ec..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageClientImpl.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Miro Spoenemann (TypeFox) - extracted to separate file
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.stream.Collectors;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.lsp4e.operations.diagnostics.LSPDiagnosticsToMarkers;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.lsp4j.ApplyWorkspaceEditParams;
-import org.eclipse.lsp4j.ApplyWorkspaceEditResponse;
-import org.eclipse.lsp4j.MessageActionItem;
-import org.eclipse.lsp4j.MessageParams;
-import org.eclipse.lsp4j.PublishDiagnosticsParams;
-import org.eclipse.lsp4j.RegistrationParams;
-import org.eclipse.lsp4j.ShowMessageRequestParams;
-import org.eclipse.lsp4j.UnregistrationParams;
-import org.eclipse.lsp4j.WorkspaceFolder;
-import org.eclipse.lsp4j.services.LanguageClient;
-import org.eclipse.lsp4j.services.LanguageServer;
-
-public class LanguageClientImpl implements LanguageClient {
-
-	private LSPDiagnosticsToMarkers diagnosticHandler;
-
-	private LanguageServer server;
-	private LanguageServerWrapper wrapper;
-
-	public final void connect(LanguageServer server, LanguageServerWrapper wrapper) {
-		this.server = server;
-		this.wrapper = wrapper;
-		this.diagnosticHandler = new LSPDiagnosticsToMarkers(wrapper.serverDefinition.id);
-	}
-
-	protected final LanguageServer getLanguageServer() {
-		return server;
-	}
-
-	@Override
-	public void telemetryEvent(Object object) {
-		// TODO
-	}
-
-	@Override
-	public final CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
-		return ServerMessageHandler.showMessageRequest(wrapper, requestParams);
-	}
-
-	@Override
-	public final void showMessage(MessageParams messageParams) {
-		ServerMessageHandler.showMessage(wrapper.serverDefinition.label, messageParams);
-	}
-
-	@Override
-	public final void publishDiagnostics(PublishDiagnosticsParams diagnostics) {
-		this.diagnosticHandler.accept(diagnostics);
-	}
-
-	@Override
-	public final void logMessage(MessageParams message) {
-		CompletableFuture.runAsync(() -> ServerMessageHandler.logMessage(wrapper, message));
-	}
-
-	@Override
-	public final CompletableFuture<ApplyWorkspaceEditResponse> applyEdit(ApplyWorkspaceEditParams params) {
-		return CompletableFuture.supplyAsync(() -> {
-			Job job = new Job(Messages.serverEdit) {
-				@Override
-				public IStatus run(IProgressMonitor monitor) {
-					LSPEclipseUtils.applyWorkspaceEdit(params.getEdit());
-					return Status.OK_STATUS;
-				}
-			};
-			job.schedule();
-			try {
-				job.join();
-				return new ApplyWorkspaceEditResponse(true);
-			} catch (InterruptedException e) {
-				LanguageServerPlugin.logError(e);
-				Thread.currentThread().interrupt();
-				return new ApplyWorkspaceEditResponse(Boolean.FALSE);
-			}
-		});
-	}
-
-	@Override
-	public CompletableFuture<Void> registerCapability(RegistrationParams params) {
-		return CompletableFuture.runAsync(() -> wrapper.registerCapability(params));
-	}
-
-	@Override
-	public CompletableFuture<Void> unregisterCapability(UnregistrationParams params) {
-		return CompletableFuture.runAsync(() -> wrapper.unregisterCapability(params));
-	}
-
-	@Override
-	public CompletableFuture<List<WorkspaceFolder>> workspaceFolders() {
-		return CompletableFuture.completedFuture(Arrays.stream(ResourcesPlugin.getWorkspace().getRoot().getProjects()) //
-			.filter(IProject::isAccessible) //
-			.map(LSPEclipseUtils::toWorkspaceFolder) //
-			.collect(Collectors.toList()));
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerPlugin.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerPlugin.java
deleted file mode 100644
index 15aafeb..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerPlugin.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.lsp4e.ui.LSPImages;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-public class LanguageServerPlugin extends AbstractUIPlugin {
-
-	public static final String PLUGIN_ID = "org.eclipse.lsp4e"; //$NON-NLS-1$
-
-	public static final boolean DEBUG = Boolean.parseBoolean(Platform.getDebugOption("org.eclipse.lsp4e/debug")); //$NON-NLS-1$
-
-	// The shared instance
-	private static LanguageServerPlugin plugin;
-
-	public LanguageServerPlugin() {
-	}
-
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		plugin = this;
-	}
-
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 *
-	 * @return the shared instance
-	 */
-	public static LanguageServerPlugin getDefault() {
-		return plugin;
-	}
-
-	@Override
-	protected void initializeImageRegistry(ImageRegistry registry) {
-		LSPImages.initalize(registry);
-	}
-
-	/**
-	 * Utility method to log errors.
-	 *
-	 * @param thr
-	 *            The exception through which we noticed the error
-	 */
-	public static void logError(final Throwable thr) {
-		getDefault().getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, 0, thr.getMessage(), thr));
-	}
-
-	/**
-	 * Utility method to log errors.
-	 *
-	 * @param message
-	 *            User comprehensible message
-	 * @param thr
-	 *            The exception through which we noticed the error
-	 */
-	public static void logError(final String message, final Throwable thr) {
-		getDefault().getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, 0, message, thr));
-	}
-
-	/**
-	 * Log an info message for this plug-in
-	 *
-	 * @param message
-	 */
-	public static void logInfo(final String message) {
-		getDefault().getLog().log(new Status(IStatus.INFO, PLUGIN_ID, 0, message, null));
-	}
-
-	/**
-	 * Utility method to log warnings for this plug-in.
-	 *
-	 * @param message
-	 *            User comprehensible message
-	 * @param thr
-	 *            The exception through which we noticed the warning
-	 */
-	public static void logWarning(final String message, final Throwable thr) {
-		getDefault().getLog().log(new Status(IStatus.WARNING, PLUGIN_ID, 0, message, thr));
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerWrapper.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerWrapper.java
deleted file mode 100644
index 6b573e8..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerWrapper.java
+++ /dev/null
@@ -1,878 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2021 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Miro Spoenemann (TypeFox) - extracted LanguageClientImpl
- *  Jan Koehnlein (TypeFox) - bug 521744
- *  Martin Lippert (Pivotal, Inc.) - bug 531030, 527902, 534637
- *  Kris De Volder (Pivotal, Inc.) - dynamic command registration
- *  Tamas Miklossy (itemis) - bug 571162
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.concurrent.CancellationException;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.function.UnaryOperator;
-import java.util.stream.Collectors;
-
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.filebuffers.IFileBuffer;
-import org.eclipse.core.filebuffers.IFileBufferListener;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.resources.WorkspaceJob;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition;
-import org.eclipse.lsp4e.server.StreamConnectionProvider;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.lsp4j.ClientCapabilities;
-import org.eclipse.lsp4j.CodeActionCapabilities;
-import org.eclipse.lsp4j.CodeActionKind;
-import org.eclipse.lsp4j.CodeActionKindCapabilities;
-import org.eclipse.lsp4j.CodeActionLiteralSupportCapabilities;
-import org.eclipse.lsp4j.CodeActionOptions;
-import org.eclipse.lsp4j.CodeLensCapabilities;
-import org.eclipse.lsp4j.ColorProviderCapabilities;
-import org.eclipse.lsp4j.CompletionCapabilities;
-import org.eclipse.lsp4j.CompletionItemCapabilities;
-import org.eclipse.lsp4j.DefinitionCapabilities;
-import org.eclipse.lsp4j.DidChangeWorkspaceFoldersParams;
-import org.eclipse.lsp4j.DocumentFormattingOptions;
-import org.eclipse.lsp4j.DocumentHighlightCapabilities;
-import org.eclipse.lsp4j.DocumentLinkCapabilities;
-import org.eclipse.lsp4j.DocumentRangeFormattingOptions;
-import org.eclipse.lsp4j.DocumentSymbolCapabilities;
-import org.eclipse.lsp4j.ExecuteCommandCapabilities;
-import org.eclipse.lsp4j.ExecuteCommandOptions;
-import org.eclipse.lsp4j.FailureHandlingKind;
-import org.eclipse.lsp4j.FoldingRangeCapabilities;
-import org.eclipse.lsp4j.FormattingCapabilities;
-import org.eclipse.lsp4j.HoverCapabilities;
-import org.eclipse.lsp4j.InitializeParams;
-import org.eclipse.lsp4j.InitializedParams;
-import org.eclipse.lsp4j.MarkupKind;
-import org.eclipse.lsp4j.RangeFormattingCapabilities;
-import org.eclipse.lsp4j.ReferencesCapabilities;
-import org.eclipse.lsp4j.Registration;
-import org.eclipse.lsp4j.RegistrationParams;
-import org.eclipse.lsp4j.RenameCapabilities;
-import org.eclipse.lsp4j.ResourceOperationKind;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.SignatureHelpCapabilities;
-import org.eclipse.lsp4j.SymbolCapabilities;
-import org.eclipse.lsp4j.SymbolKind;
-import org.eclipse.lsp4j.SymbolKindCapabilities;
-import org.eclipse.lsp4j.SynchronizationCapabilities;
-import org.eclipse.lsp4j.TextDocumentClientCapabilities;
-import org.eclipse.lsp4j.TextDocumentSyncKind;
-import org.eclipse.lsp4j.TextDocumentSyncOptions;
-import org.eclipse.lsp4j.TypeDefinitionCapabilities;
-import org.eclipse.lsp4j.UnregistrationParams;
-import org.eclipse.lsp4j.WorkspaceClientCapabilities;
-import org.eclipse.lsp4j.WorkspaceEditCapabilities;
-import org.eclipse.lsp4j.WorkspaceFoldersChangeEvent;
-import org.eclipse.lsp4j.WorkspaceFoldersOptions;
-import org.eclipse.lsp4j.WorkspaceServerCapabilities;
-import org.eclipse.lsp4j.jsonrpc.Launcher;
-import org.eclipse.lsp4j.jsonrpc.MessageConsumer;
-import org.eclipse.lsp4j.jsonrpc.ResponseErrorException;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.lsp4j.jsonrpc.messages.Message;
-import org.eclipse.lsp4j.jsonrpc.messages.ResponseErrorCode;
-import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PlatformUI;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
-
-public class LanguageServerWrapper {
-
-	private IFileBufferListener fileBufferListener = new FileBufferListenerAdapter() {
-		@Override
-		public void bufferDisposed(IFileBuffer buffer) {
-			disconnect(buffer.getFileStore().toURI());
-		}
-
-		@Override
-		public void dirtyStateChanged(IFileBuffer buffer, boolean isDirty) {
-			if (isDirty) {
-				return;
-			}
-			DocumentContentSynchronizer documentListener = connectedDocuments.get(buffer.getFileStore().toURI());
-			if (documentListener != null && documentListener.getModificationStamp() < buffer.getModificationStamp()) {
-				documentListener.documentSaved(buffer.getModificationStamp());
-			}
-		}
-
-	};
-
-	@NonNull
-	public final LanguageServerDefinition serverDefinition;
-	@Nullable
-	protected final IProject initialProject;
-	@NonNull
-	protected Map<@NonNull URI, @NonNull DocumentContentSynchronizer> connectedDocuments;
-	@Nullable
-	protected final IPath initialPath;
-	protected final InitializeParams initParams = new InitializeParams();
-
-	protected StreamConnectionProvider lspStreamProvider;
-	private Future<?> launcherFuture;
-	private CompletableFuture<Void> initializeFuture;
-	private LanguageServer languageServer;
-	private ServerCapabilities serverCapabilities;
-
-	/**
-	 * Map containing unregistration handlers for dynamic capability registrations.
-	 */
-	private @NonNull Map<@NonNull String, @NonNull Runnable> dynamicRegistrations = new HashMap<>();
-	private boolean initiallySupportsWorkspaceFolders = false;
-	private final @NonNull IResourceChangeListener workspaceFolderUpdater = event -> {
-		WorkspaceFoldersChangeEvent workspaceFolderEvent = toWorkspaceFolderEvent(event);
-		if (workspaceFolderEvent == null || (workspaceFolderEvent.getAdded().isEmpty() && workspaceFolderEvent.getRemoved().isEmpty())) {
-			return;
-		}
-		this.languageServer.getWorkspaceService().didChangeWorkspaceFolders(new DidChangeWorkspaceFoldersParams(workspaceFolderEvent));
-	};
-
-	/* Backwards compatible constructor */
-	public LanguageServerWrapper(@NonNull IProject project, @NonNull LanguageServerDefinition serverDefinition) {
-		this(project, serverDefinition, null);
-	}
-
-	public LanguageServerWrapper(@NonNull LanguageServerDefinition serverDefinition, @Nullable IPath initialPath) {
-		this(null, serverDefinition, initialPath);
-	}
-
-	/** Unified private constructor to set sensible defaults in all cases */
-	private LanguageServerWrapper(@Nullable IProject project, @NonNull LanguageServerDefinition serverDefinition,
-			@Nullable IPath initialPath) {
-		this.initialProject = project;
-		this.initialPath = initialPath;
-		this.serverDefinition = serverDefinition;
-		this.connectedDocuments = new HashMap<>();
-	}
-
-	/**
-	 * Starts a language server and triggers initialization. If language server is
-	 * started and active, does nothing. If language server is inactive, restart it.
-	 *
-	 * @throws IOException
-	 */
-	public synchronized void start() throws IOException {
-		final Map<URI, IDocument> filesToReconnect = new HashMap<>();
-		if (this.languageServer != null) {
-			if (isActive()) {
-				return;
-			} else {
-				for (Entry<URI, DocumentContentSynchronizer> entry : this.connectedDocuments.entrySet()) {
-					filesToReconnect.put(entry.getKey(), entry.getValue().getDocument());
-				}
-				stop();
-			}
-		}
-		if (this.initializeFuture == null ) {
-			this.initializeFuture = CompletableFuture.supplyAsync(() -> {
-				try {
-					if (LoggingStreamConnectionProviderProxy.shouldLog(serverDefinition.id)) {
-						this.lspStreamProvider = new LoggingStreamConnectionProviderProxy(
-								serverDefinition.createConnectionProvider(), serverDefinition.id);
-					} else {
-						this.lspStreamProvider = serverDefinition.createConnectionProvider();
-					}
-					lspStreamProvider.start();
-				} catch (Exception e) {
-					LanguageServerPlugin.logError(e);
-					stop();
-					initializeFuture.completeExceptionally(e);
-				}
-				return null;
-			}).thenApply((server) -> {
-				try {
-					LanguageClientImpl client = serverDefinition.createLanguageClient();
-					ExecutorService executorService = Executors.newCachedThreadPool();
-					initParams.setProcessId((int)ProcessHandle.current().pid());
-
-					URI rootURI = null;
-					IProject project = this.initialProject;
-					if (project != null && project.exists()) {
-						rootURI = LSPEclipseUtils.toUri(this.initialProject);
-						initParams.setRootUri(rootURI.toString());
-						initParams.setRootPath(rootURI.getPath());
-					} else {
-						// This is required due to overzealous static analysis. Dereferencing
-						// this.initialPath directly will trigger a "potential null"
-						// warning/error. Checking for this.initialPath == null is not
-						// enough.
-						final IPath initialPath = this.initialPath;
-						if (initialPath != null) {
-							File projectDirectory = initialPath.toFile();
-							if (projectDirectory.isFile()) {
-								projectDirectory = projectDirectory.getParentFile();
-							}
-							initParams.setRootUri(LSPEclipseUtils.toUri(projectDirectory).toString());
-						} else {
-							initParams.setRootUri(LSPEclipseUtils.toUri(new File("/")).toString()); //$NON-NLS-1$
-						}
-					}
-					UnaryOperator<MessageConsumer> wrapper = consumer -> (message -> {
-						consumer.consume(message);
-						logMessage(message);
-						URI root = initParams.getRootUri() != null ? URI.create(initParams.getRootUri()) : null;
-						final StreamConnectionProvider currentConnectionProvider = this.lspStreamProvider;
-						if (currentConnectionProvider != null && isActive()) {
-							currentConnectionProvider.handleMessage(message, this.languageServer, root);
-						}
-					});
-					initParams.setWorkspaceFolders(Arrays.stream(ResourcesPlugin.getWorkspace().getRoot().getProjects()).filter(IProject::isAccessible).map(LSPEclipseUtils::toWorkspaceFolder).filter(Objects::nonNull).collect(Collectors.toList()));
-					Launcher<LanguageServer> launcher = serverDefinition.createLauncherBuilder()
-							.setLocalService(client)//
-							.setRemoteInterface(serverDefinition.getServerInterface())//
-							.setInput(lspStreamProvider.getInputStream())//
-							.setOutput(lspStreamProvider.getOutputStream())//
-							.setExecutorService(executorService)//
-							.wrapMessages(wrapper)//
-							.create();
-					this.languageServer = launcher.getRemoteProxy();
-					client.connect(languageServer, this);
-					this.launcherFuture = launcher.startListening();
-				} catch (Exception ex) {
-					LanguageServerPlugin.logError(ex);
-					stop();
-					initializeFuture.completeExceptionally(ex);
-				}
-				return null;
-			}).thenCompose(s -> {
-				String name = "Eclipse IDE"; //$NON-NLS-1$
-				if (Platform.getProduct() != null) {
-					name = Platform.getProduct().getName();
-				}
-				WorkspaceClientCapabilities workspaceClientCapabilities = new WorkspaceClientCapabilities();
-				workspaceClientCapabilities.setApplyEdit(Boolean.TRUE);
-				workspaceClientCapabilities.setExecuteCommand(new ExecuteCommandCapabilities(Boolean.TRUE));
-				workspaceClientCapabilities.setSymbol(new SymbolCapabilities(Boolean.TRUE));
-				workspaceClientCapabilities.setWorkspaceFolders(Boolean.TRUE);
-				WorkspaceEditCapabilities editCapabilities = new WorkspaceEditCapabilities();
-				editCapabilities.setDocumentChanges(Boolean.TRUE);
-				editCapabilities.setResourceOperations(Arrays.asList(ResourceOperationKind.Create,
-						ResourceOperationKind.Delete, ResourceOperationKind.Rename));
-				editCapabilities.setFailureHandling(FailureHandlingKind.Undo);
-				workspaceClientCapabilities.setWorkspaceEdit(editCapabilities);
-				TextDocumentClientCapabilities textDocumentClientCapabilities = new TextDocumentClientCapabilities();
-				textDocumentClientCapabilities
-						.setCodeAction(
-								new CodeActionCapabilities(
-										new CodeActionLiteralSupportCapabilities(
-												new CodeActionKindCapabilities(Arrays.asList(CodeActionKind.QuickFix,
-														CodeActionKind.Refactor, CodeActionKind.RefactorExtract,
-														CodeActionKind.RefactorInline, CodeActionKind.RefactorRewrite,
-														CodeActionKind.Source, CodeActionKind.SourceOrganizeImports))),
-										true));
-				textDocumentClientCapabilities.setCodeLens(new CodeLensCapabilities());
-				textDocumentClientCapabilities.setColorProvider(new ColorProviderCapabilities());
-				CompletionItemCapabilities completionItemCapabilities = new CompletionItemCapabilities(Boolean.TRUE);
-				completionItemCapabilities.setDocumentationFormat(Arrays.asList(MarkupKind.MARKDOWN, MarkupKind.PLAINTEXT));
-				textDocumentClientCapabilities
-						.setCompletion(new CompletionCapabilities(completionItemCapabilities));
-				DefinitionCapabilities definitionCapabilities = new DefinitionCapabilities();
-				definitionCapabilities.setLinkSupport(Boolean.TRUE);
-				textDocumentClientCapabilities.setDefinition(definitionCapabilities);
-				TypeDefinitionCapabilities typeDefinitionCapabilities = new TypeDefinitionCapabilities();
-				typeDefinitionCapabilities.setLinkSupport(Boolean.TRUE);
-				textDocumentClientCapabilities.setTypeDefinition(typeDefinitionCapabilities);
-				textDocumentClientCapabilities.setDocumentHighlight(new DocumentHighlightCapabilities());
-				textDocumentClientCapabilities.setDocumentLink(new DocumentLinkCapabilities());
-				DocumentSymbolCapabilities documentSymbol = new DocumentSymbolCapabilities();
-				documentSymbol.setHierarchicalDocumentSymbolSupport(true);
-				documentSymbol.setSymbolKind(new SymbolKindCapabilities(Arrays.asList(SymbolKind.Array, SymbolKind.Boolean,
-						SymbolKind.Class, SymbolKind.Constant, SymbolKind.Constructor, SymbolKind.Enum,
-						SymbolKind.EnumMember, SymbolKind.Event, SymbolKind.Field, SymbolKind.File, SymbolKind.Function,
-						SymbolKind.Interface, SymbolKind.Key, SymbolKind.Method, SymbolKind.Module, SymbolKind.Namespace,
-						SymbolKind.Null, SymbolKind.Number, SymbolKind.Object, SymbolKind.Operator, SymbolKind.Package,
-						SymbolKind.Property, SymbolKind.String, SymbolKind.Struct, SymbolKind.TypeParameter,
-						SymbolKind.Variable)));
-				textDocumentClientCapabilities.setDocumentSymbol(documentSymbol);
-				textDocumentClientCapabilities.setFoldingRange(new FoldingRangeCapabilities());
-				textDocumentClientCapabilities.setFormatting(new FormattingCapabilities(Boolean.TRUE));
-				HoverCapabilities hoverCapabilities = new HoverCapabilities();
-				hoverCapabilities.setContentFormat(Arrays.asList(MarkupKind.MARKDOWN, MarkupKind.PLAINTEXT));
-				textDocumentClientCapabilities.setHover(hoverCapabilities);
-				textDocumentClientCapabilities.setOnTypeFormatting(null); // TODO
-				textDocumentClientCapabilities.setRangeFormatting(new RangeFormattingCapabilities());
-				textDocumentClientCapabilities.setReferences(new ReferencesCapabilities());
-				textDocumentClientCapabilities.setRename(new RenameCapabilities());
-				textDocumentClientCapabilities.setSignatureHelp(new SignatureHelpCapabilities());
-				textDocumentClientCapabilities
-						.setSynchronization(new SynchronizationCapabilities(Boolean.TRUE, Boolean.TRUE, Boolean.TRUE));
-				initParams.setCapabilities(
-						new ClientCapabilities(workspaceClientCapabilities, textDocumentClientCapabilities, lspStreamProvider.getExperimentalFeaturesPOJO()));
-				initParams.setClientName(name);
-
-				URI rootURI = LSPEclipseUtils.toUri(initParams.getRootUri());
-				initParams.setInitializationOptions(this.lspStreamProvider.getInitializationOptions(rootURI));
-				initParams.setTrace(this.lspStreamProvider.getTrace(rootURI));
-
-				// no then...Async future here as we want this chain of operation to be sequential and
-				// "atomic"-ish
-				return languageServer
-						.initialize(initParams);
-			}).thenAccept(res -> {
-				serverCapabilities = res.getCapabilities();
-				this.initiallySupportsWorkspaceFolders = supportsWorkspaceFolders(serverCapabilities);
-			}).thenRun(() -> {
-				this.languageServer.initialized(new InitializedParams());
-			}).thenRun(() -> {
-				final Map<URI, IDocument> toReconnect = filesToReconnect;
-				initializeFuture.thenRunAsync(() -> {
-					watchProjects();
-					for (Entry<URI, IDocument> fileToReconnect : toReconnect.entrySet()) {
-						try {
-							connect(fileToReconnect.getKey(), fileToReconnect.getValue());
-						} catch (IOException e) {
-							LanguageServerPlugin.logError(e);
-							stop();
-							initializeFuture.completeExceptionally(e);
-						}
-					}
-				});
-				FileBuffers.getTextFileBufferManager().addFileBufferListener(fileBufferListener);
-			});
-		}
-	}
-
-	private static boolean supportsWorkspaceFolders(ServerCapabilities serverCapabilities) {
-		return serverCapabilities != null && serverCapabilities.getWorkspace() != null
-				&& serverCapabilities.getWorkspace().getWorkspaceFolders() != null
-				&& Boolean.TRUE.equals(serverCapabilities.getWorkspace().getWorkspaceFolders().getSupported());
-	}
-
-	private void logMessage(Message message) {
-		if (message instanceof ResponseMessage && ((ResponseMessage) message).getError() != null
-				&& ((ResponseMessage) message).getId()
-						.equals(Integer.toString(ResponseErrorCode.RequestCancelled.getValue()))) {
-			ResponseMessage responseMessage = (ResponseMessage) message;
-			LanguageServerPlugin.logError(new ResponseErrorException(responseMessage.getError()));
-		} else if (LanguageServerPlugin.DEBUG) {
-			LanguageServerPlugin.logInfo(message.getClass().getSimpleName() + '\n' + message.toString());
-		}
-	}
-
-	/**
-	 * @return whether the underlying connection to language server is still active
-	 */
-	public boolean isActive() {
-		return this.launcherFuture != null && !this.launcherFuture.isDone() && !this.launcherFuture.isCancelled();
-	}
-
-	synchronized void stop() {
-		if (this.initializeFuture != null) {
-			this.initializeFuture.cancel(true);
-			this.initializeFuture = null;
-		}
-
-		this.serverCapabilities = null;
-		this.dynamicRegistrations.clear();
-
-		final Future<?> serverFuture = this.launcherFuture;
-		final StreamConnectionProvider provider = this.lspStreamProvider;
-		final LanguageServer languageServerInstance = this.languageServer;
-
-		Runnable shutdownKillAndStopFutureAndProvider = () -> {
-			if (languageServerInstance != null) {
-				CompletableFuture<Object> shutdown = languageServerInstance.shutdown();
-				try {
-					shutdown.get(5, TimeUnit.SECONDS);
-				}
-				catch (Exception e) {
-				}
-			}
-
-			if (serverFuture != null) {
-				serverFuture.cancel(true);
-			}
-
-			if (languageServerInstance != null) {
-				languageServerInstance.exit();
-			}
-
-			if (provider != null) {
-				provider.stop();
-			}
-		};
-
-		CompletableFuture.runAsync(shutdownKillAndStopFutureAndProvider);
-
-		this.launcherFuture = null;
-		this.lspStreamProvider = null;
-
-		while (!this.connectedDocuments.isEmpty()) {
-			disconnect(this.connectedDocuments.keySet().iterator().next());
-		}
-		this.languageServer = null;
-
-		FileBuffers.getTextFileBufferManager().removeFileBufferListener(fileBufferListener);
-		ResourcesPlugin.getWorkspace().removeResourceChangeListener(workspaceFolderUpdater);
-	}
-
-	/**
-	 *
-	 * @param file
-	 * @param document
-	 * @return null if not connection has happened, a future tracking the connection state otherwise
-	 * @throws IOException
-	 */
-	public @Nullable CompletableFuture<LanguageServer> connect(@NonNull IFile file, IDocument document) throws IOException {
-		return connect(file.getLocationURI(), document);
-	}
-
-	/**
-	 *
-	 * @param document
-	 * @return null if not connection has happened, a future tracking the connection state otherwise
-	 * @throws IOException
-	 */
-	public @Nullable CompletableFuture<LanguageServer> connect(IDocument document) throws IOException {
-		URI uri = LSPEclipseUtils.toUri(document);
-		if (uri != null) {
-			return connect(uri, document);
-		}
-		return null;
-	}
-
-	private void watchProjects() {
-		if (!supportsWorkspaceFolderCapability()) {
-			return;
-		}
-		final LanguageServer currentLS = this.languageServer;
-		new WorkspaceJob("Setting watch projects on server " + serverDefinition.label) { //$NON-NLS-1$
-			@Override
-			public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
-				WorkspaceFoldersChangeEvent wsFolderEvent = new WorkspaceFoldersChangeEvent();
-				wsFolderEvent.getAdded().addAll(Arrays.stream(ResourcesPlugin.getWorkspace().getRoot().getProjects()).filter(IProject::isAccessible).map(LSPEclipseUtils::toWorkspaceFolder).filter(Objects::nonNull).collect(Collectors.toList()));
-				if (currentLS != null && currentLS == LanguageServerWrapper.this.languageServer) {
-					currentLS.getWorkspaceService().didChangeWorkspaceFolders(new DidChangeWorkspaceFoldersParams(wsFolderEvent));
-				}
-				ResourcesPlugin.getWorkspace().addResourceChangeListener(workspaceFolderUpdater, IResourceChangeEvent.POST_CHANGE);
-				return Status.OK_STATUS;
-			}
-		}.schedule();
-	}
-
-	private static final @Nullable WorkspaceFoldersChangeEvent toWorkspaceFolderEvent(IResourceChangeEvent e) {
-		if (e.getType() != IResourceChangeEvent.POST_CHANGE) {
-			return null;
-		}
-		WorkspaceFoldersChangeEvent wsFolderEvent = new WorkspaceFoldersChangeEvent();
-		try {
-			e.getDelta().accept(delta -> {
-				if (delta.getResource().getType() == IResource.PROJECT) {
-					IProject project = (IProject)delta.getResource();
-					if ((delta.getKind() == IResourceDelta.ADDED || delta.getKind() == IResourceDelta.OPEN) && project.isAccessible()) {
-						wsFolderEvent.getAdded().add(LSPEclipseUtils.toWorkspaceFolder((IProject)delta.getResource()));
-					} else if (delta.getKind() == IResourceDelta.REMOVED || (delta.getKind() == IResourceDelta.OPEN && !project.isAccessible())) {
-						wsFolderEvent.getRemoved().add(LSPEclipseUtils.toWorkspaceFolder((IProject)delta.getResource()));
-					}
-					// TODO: handle renamed/moved (on filesystem)
-				}
-				return delta.getResource().getType() == IResource.ROOT;
-			});
-		} catch (CoreException ex) {
-			LanguageServerPlugin.logError(ex);
-		}
-		if (wsFolderEvent.getAdded().isEmpty() && wsFolderEvent.getRemoved().isEmpty()) {
-			return null;
-		}
-		return wsFolderEvent;
-	}
-
-	/**
-	 * Check whether this LS is suitable for provided project. Starts the LS if not
-	 * already started.
-	 *
-	 * @return whether this language server can operate on the given project
-	 * @since 0.5
-	 */
-	public boolean canOperate(IProject project) {
-		return project.equals(this.initialProject) || serverDefinition.isSingleton || supportsWorkspaceFolderCapability();
-	}
-
-	/**
-	 * @return true, if the server supports multi-root workspaces via workspace
-	 *         folders
-	 * @since 0.6
-	 */
-	private boolean supportsWorkspaceFolderCapability() {
-		if (this.initializeFuture != null) {
-			try {
-				this.initializeFuture.get(1, TimeUnit.SECONDS);
-			} catch (ExecutionException | TimeoutException e) {
-				LanguageServerPlugin.logError(e);
-			} catch (InterruptedException e) {
-				LanguageServerPlugin.logError(e);
-				Thread.currentThread().interrupt();
-			}
-		}
-		return initiallySupportsWorkspaceFolders || supportsWorkspaceFolders(serverCapabilities);
-	}
-
-	/**
-	 * To make public when we support non IFiles
-	 *
-	 * @return null if not connection has happened, a future that completes when file is initialized otherwise
-	 * @noreference internal so far
-	 */
-	private CompletableFuture<LanguageServer> connect(@NonNull URI uri, IDocument document) throws IOException {
-
-		if (this.connectedDocuments.containsKey(uri)) {
-			return CompletableFuture.completedFuture(languageServer);
-		}
-		start();
-		if (this.initializeFuture == null) {
-			return null;
-		}
-		if (document == null) {
-			IFile docFile = (IFile) LSPEclipseUtils.findResourceFor(uri.toString());
-			document = LSPEclipseUtils.getDocument(docFile);
-		}
-		if (document == null) {
-			return null;
-		}
-		final IDocument theDocument = document;
-		return initializeFuture.thenComposeAsync(theVoid -> {
-			synchronized (connectedDocuments) {
-				if (this.connectedDocuments.containsKey(uri)) {
-					return CompletableFuture.completedFuture(null);
-				}
-				Either<TextDocumentSyncKind, TextDocumentSyncOptions> syncOptions = initializeFuture == null ? null
-						: this.serverCapabilities.getTextDocumentSync();
-				TextDocumentSyncKind syncKind = null;
-				if (syncOptions != null) {
-					if (syncOptions.isRight()) {
-						syncKind = syncOptions.getRight().getChange();
-					} else if (syncOptions.isLeft()) {
-						syncKind = syncOptions.getLeft();
-					}
-				}
-				DocumentContentSynchronizer listener = new DocumentContentSynchronizer(this, theDocument, syncKind);
-				theDocument.addDocumentListener(listener);
-				LanguageServerWrapper.this.connectedDocuments.put(uri, listener);
-				return listener.didOpenFuture;
-			}
-		}).thenApply(theVoid -> languageServer);
-	}
-
-	public void disconnect(URI uri) {
-		DocumentContentSynchronizer documentListener = this.connectedDocuments.remove(uri);
-		if (documentListener != null) {
-			documentListener.getDocument().removeDocumentListener(documentListener);
-			documentListener.documentClosed();
-		}
-		if (this.connectedDocuments.isEmpty()) {
-			stop();
-		}
-	}
-
-	public void disconnectContentType(@NonNull IContentType contentType) {
-		List<URI> urisToDisconnect = new ArrayList<>();
-		for (URI uri : connectedDocuments.keySet()) {
-			IFile[] foundFiles = ResourcesPlugin.getWorkspace().getRoot()
-					.findFilesForLocationURI(uri);
-			if (foundFiles.length != 0
-					&& LSPEclipseUtils.getFileContentTypes(foundFiles[0]).stream().anyMatch(contentType::equals)) {
-				urisToDisconnect.add(uri);
-			}
-		}
-		for (URI uri : urisToDisconnect) {
-			disconnect(uri);
-		}
-	}
-
-	/**
-	 * checks if the wrapper is already connected to the document at the given uri
-	 *
-	 * @noreference test only
-	 */
-	public boolean isConnectedTo(URI uri) {
-		return connectedDocuments.containsKey(uri);
-	}
-
-	/**
-	 * Starts and returns the language server, regardless of if it is initialized.
-	 * If not in the UI Thread, will wait to return the initialized server.
-	 *
-	 * @deprecated use {@link #getInitializedServer()} instead.
-	 */
-	@Deprecated
-	@Nullable
-	public LanguageServer getServer() {
-		CompletableFuture<LanguageServer> languagServerFuture = getInitializedServer();
-		if (Display.getCurrent() != null) { // UI Thread
-			return this.languageServer;
-		} else {
-			return languagServerFuture.join();
-		}
-	}
-
-	/**
-	 * Starts the language server and returns a CompletableFuture waiting for the
-	 * server to be initialized. If done in the UI stream, a job will be created
-	 * displaying that the server is being initialized
-	 */
-	@NonNull
-	public CompletableFuture<LanguageServer> getInitializedServer() {
-		try {
-			start();
-		} catch (IOException ex) {
-			LanguageServerPlugin.logError(ex);
-		}
-
-		if (initializeFuture != null && !this.initializeFuture.isDone()) {
-			if (Display.getCurrent() != null) { // UI Thread
-				Job waitForInitialization = new Job(Messages.initializeLanguageServer_job) {
-					@Override
-					protected IStatus run(IProgressMonitor monitor) {
-						initializeFuture.join();
-						return Status.OK_STATUS;
-					}
-				};
-				waitForInitialization.setUser(true);
-				waitForInitialization.setSystem(false);
-				PlatformUI.getWorkbench().getProgressService().showInDialog(
-						PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), waitForInitialization);
-			}
-			return initializeFuture.thenApply(r -> this.languageServer);
-		}
-		return CompletableFuture.completedFuture(this.languageServer);
-	}
-
-	/**
-	 * Warning: this is a long running operation
-	 *
-	 * @return the server capabilities, or null if initialization job didn't
-	 *         complete
-	 */
-	@Nullable
-	public ServerCapabilities getServerCapabilities() {
-		try {
-			getInitializedServer().get(10, TimeUnit.SECONDS);
-		} catch (TimeoutException e) {
-			LanguageServerPlugin.logError("LanguageServer not initialized after 10s", e); //$NON-NLS-1$
-		} catch (ExecutionException e) {
-			LanguageServerPlugin.logError(e);
-		} catch (CancellationException e) {
-			LanguageServerPlugin.logError(e);
-		} catch (InterruptedException e) {
-			LanguageServerPlugin.logError(e);
-			Thread.currentThread().interrupt();
-		}
-
-		return this.serverCapabilities;
-	}
-
-	/**
-	 * @return The language ID that this wrapper is dealing with if defined in the
-	 *         content type mapping for the language server
-	 */
-	@Nullable
-	public String getLanguageId(IContentType[] contentTypes) {
-		for (IContentType contentType : contentTypes) {
-			String languageId = serverDefinition.langugeIdMappings.get(contentType);
-			if (languageId != null) {
-				return languageId;
-			}
-		}
-		return null;
-	}
-
-	void registerCapability(RegistrationParams params) {
-		params.getRegistrations().forEach(reg -> {
-			if ("workspace/didChangeWorkspaceFolders".equals(reg.getMethod())) { //$NON-NLS-1$
-				Assert.isNotNull(serverCapabilities,
-						"Dynamic capability registration failed! Server not yet initialized?"); //$NON-NLS-1$
-				if (initiallySupportsWorkspaceFolders) {
-					// Can treat this as a NOP since nothing can disable it dynamically if it was
-					// enabled on initialization.
-				} else if (supportsWorkspaceFolders(serverCapabilities)) {
-					LanguageServerPlugin.logWarning(
-							"Dynamic registration of 'workspace/didChangeWorkspaceFolders' ignored. It was already enabled before", //$NON-NLS-1$
-							null);
-				} else {
-					addRegistration(reg, () -> setWorkspaceFoldersEnablement(false));
-					setWorkspaceFoldersEnablement(true);
-				}
-			} else if ("workspace/executeCommand".equals(reg.getMethod())) { //$NON-NLS-1$
-				Gson gson = new Gson(); // TODO? retrieve the GSon used by LS
-				ExecuteCommandOptions executeCommandOptions = gson.fromJson((JsonObject) reg.getRegisterOptions(),
-						ExecuteCommandOptions.class);
-				List<String> newCommands = executeCommandOptions.getCommands();
-				if (!newCommands.isEmpty()) {
-					addRegistration(reg, () -> unregisterCommands(newCommands));
-					registerCommands(newCommands);
-				}
-			} else if ("textDocument/formatting".equals(reg.getMethod())) { //$NON-NLS-1$
-				Either<Boolean, DocumentFormattingOptions> documentFormattingProvider = serverCapabilities.getDocumentFormattingProvider();
-				if (documentFormattingProvider == null || documentFormattingProvider.isLeft()) {
-					serverCapabilities.setDocumentFormattingProvider(Boolean.TRUE);
-					addRegistration(reg, () -> serverCapabilities.setDocumentFormattingProvider(documentFormattingProvider));
-				} else {
-					serverCapabilities.setDocumentFormattingProvider(documentFormattingProvider.getRight());
-					addRegistration(reg, () -> serverCapabilities.setDocumentFormattingProvider(documentFormattingProvider));
-				}
-			} else if ("textDocument/rangeFormatting".equals(reg.getMethod())) { //$NON-NLS-1$
-				Either<Boolean, DocumentRangeFormattingOptions> documentRangeFormattingProvider = serverCapabilities.getDocumentRangeFormattingProvider();
-				if (documentRangeFormattingProvider == null || documentRangeFormattingProvider.isLeft()) {
-					serverCapabilities.setDocumentRangeFormattingProvider(Boolean.TRUE);
-					addRegistration(reg, () -> serverCapabilities.setDocumentRangeFormattingProvider(documentRangeFormattingProvider));
-				} else {
-					serverCapabilities.setDocumentRangeFormattingProvider(documentRangeFormattingProvider.getRight());
-					addRegistration(reg, () -> serverCapabilities.setDocumentRangeFormattingProvider(documentRangeFormattingProvider));
-				}
-			} else if ("textDocument/codeAction".equals(reg.getMethod())){ //$NON-NLS-1$
-				final Either<Boolean, CodeActionOptions> beforeRegistration = serverCapabilities.getCodeActionProvider();
-				serverCapabilities.setCodeActionProvider(Boolean.TRUE);
-				addRegistration(reg, () -> serverCapabilities.setCodeActionProvider(beforeRegistration));
-			}
-		});
-	}
-
-	private void addRegistration(@NonNull Registration reg, @NonNull Runnable unregistrationHandler) {
-		String regId = reg.getId();
-		synchronized (dynamicRegistrations) {
-			Assert.isLegal(!dynamicRegistrations.containsKey(regId), "Registration id is not unique"); //$NON-NLS-1$
-			dynamicRegistrations.put(regId, unregistrationHandler);
-		}
-	}
-
-	synchronized void setWorkspaceFoldersEnablement(boolean enable) {
-		if (enable == supportsWorkspaceFolderCapability()) {
-			return;
-		}
-		if (serverCapabilities == null) {
-			this.serverCapabilities = new ServerCapabilities();
-		}
-		WorkspaceServerCapabilities workspace = serverCapabilities.getWorkspace();
-		if (workspace == null) {
-			workspace = new WorkspaceServerCapabilities();
-			serverCapabilities.setWorkspace(workspace);
-		}
-		WorkspaceFoldersOptions folders = workspace.getWorkspaceFolders();
-		if (folders == null) {
-			folders = new WorkspaceFoldersOptions();
-			workspace.setWorkspaceFolders(folders);
-		}
-		folders.setSupported(enable);
-		if (enable) {
-			watchProjects();
-		}
-	}
-
-	synchronized void registerCommands(List<String> newCommands) {
-		ServerCapabilities caps = this.getServerCapabilities();
-		if (caps != null) {
-			ExecuteCommandOptions commandProvider = caps.getExecuteCommandProvider();
-			if (commandProvider == null) {
-				commandProvider = new ExecuteCommandOptions(new ArrayList<>());
-				caps.setExecuteCommandProvider(commandProvider);
-			}
-			List<String> existingCommands = commandProvider.getCommands();
-			for (String newCmd : newCommands) {
-				Assert.isLegal(!existingCommands.contains(newCmd), "Command already registered '" + newCmd + "'"); //$NON-NLS-1$ //$NON-NLS-2$
-				existingCommands.add(newCmd);
-			}
-		} else {
-			throw new IllegalStateException("Dynamic command registration failed! Server not yet initialized?"); //$NON-NLS-1$
-		}
-	}
-
-	void unregisterCapability(UnregistrationParams params) {
-		params.getUnregisterations().forEach(reg -> {
-			String id = reg.getId();
-			Runnable unregistrator;
-			synchronized (dynamicRegistrations) {
-				unregistrator = dynamicRegistrations.get(id);
-				dynamicRegistrations.remove(id);
-			}
-			if (unregistrator != null) {
-				unregistrator.run();
-			}
-		});
-	}
-
-	void unregisterCommands(List<String> cmds) {
-		ServerCapabilities caps = this.getServerCapabilities();
-		if (caps != null) {
-			ExecuteCommandOptions commandProvider = caps.getExecuteCommandProvider();
-			if (commandProvider != null) {
-				List<String> existingCommands = commandProvider.getCommands();
-				existingCommands.removeAll(cmds);
-			}
-		}
-	}
-
-	int getVersion(URI uri) {
-		DocumentContentSynchronizer documentContentSynchronizer = connectedDocuments.get(uri);
-		if (documentContentSynchronizer != null) {
-			return documentContentSynchronizer.getVersion();
-		}
-		return -1;
-	}
-
-	public boolean canOperate(@NonNull IDocument document) {
-		URI documentUri = LSPEclipseUtils.toUri(document);
-		if (documentUri == null) {
-			return false;
-		}
-		if (this.isConnectedTo(documentUri)) {
-			return true;
-		}
-		if (this.initialProject == null && this.connectedDocuments.isEmpty()) {
-			return true;
-		}
-		IFile file = LSPEclipseUtils.getFile(document);
-		if (file != null && file.exists() && canOperate(file.getProject())) {
-			return true;
-		}
-		return serverDefinition.isSingleton || supportsWorkspaceFolderCapability();
-	}
-
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServersRegistry.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServersRegistry.java
deleted file mode 100644
index 287ab31..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServersRegistry.java
+++ /dev/null
@@ -1,427 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2020 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Miro Spoenemann (TypeFox) - added clientImpl and serverInterface attributes
- *  Alexander Fedorov (ArSysOp) - added parent context to evaluation
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
-
-import org.eclipse.core.expressions.ExpressionConverter;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.preference.IPersistentPreferenceStore;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.lsp4e.enablement.EnablementTester;
-import org.eclipse.lsp4e.server.StreamConnectionProvider;
-import org.eclipse.lsp4j.jsonrpc.Launcher;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.osgi.framework.Bundle;
-
-/**
- * This registry aims at providing a good language server connection (as {@link StreamConnectionProvider}
- * for a given input.
- * At the moment, registry content are hardcoded but we'll very soon need a way
- * to contribute to it via plugin.xml (for plugin developers) and from Preferences
- * (for end-users to directly register a new server).
- *
- */
-public class LanguageServersRegistry {
-
-	private static final String CONTENT_TYPE_TO_LSP_LAUNCH_PREF_KEY = "contentTypeToLSPLauch"; //$NON-NLS-1$
-
-	private static final String EXTENSION_POINT_ID = LanguageServerPlugin.PLUGIN_ID + ".languageServer"; //$NON-NLS-1$
-
-	private static final String LS_ELEMENT = "server"; //$NON-NLS-1$
-	private static final String MAPPING_ELEMENT = "contentTypeMapping"; //$NON-NLS-1$
-
-	private static final String ID_ATTRIBUTE = "id"; //$NON-NLS-1$
-	private static final String SINGLETON_ATTRIBUTE = "singleton"; //$NON-NLS-1$
-	private static final String CONTENT_TYPE_ATTRIBUTE = "contentType"; //$NON-NLS-1$
-	private static final String LANGUAGE_ID_ATTRIBUTE = "languageId"; //$NON-NLS-1$
-	private static final String CLASS_ATTRIBUTE = "class"; //$NON-NLS-1$
-	private static final String CLIENT_IMPL_ATTRIBUTE = "clientImpl"; //$NON-NLS-1$
-	private static final String SERVER_INTERFACE_ATTRIBUTE = "serverInterface"; //$NON-NLS-1$
-	private static final String LAUNCHER_BUILDER_ATTRIBUTE = "launcherBuilder"; //$NON-NLS-1$
-	private static final String LABEL_ATTRIBUTE = "label"; //$NON-NLS-1$
-	private static final String ENABLED_WHEN_ATTRIBUTE = "enabledWhen"; //$NON-NLS-1$
-	private static final String ENABLED_WHEN_DESC = "description"; //$NON-NLS-1$
-
-	public abstract static class LanguageServerDefinition {
-		public final @NonNull String id;
-		public final @NonNull String label;
-		public final boolean isSingleton;
-		public final @NonNull Map<IContentType, String> langugeIdMappings;
-
-		public LanguageServerDefinition(@NonNull String id, @NonNull String label, boolean isSingleton) {
-			this.id = id;
-			this.label = label;
-			this.isSingleton = isSingleton;
-			this.langugeIdMappings = new ConcurrentHashMap<>();
-		}
-
-		public void registerAssociation(@NonNull IContentType contentType, @NonNull String languageId) {
-			this.langugeIdMappings.put(contentType, languageId);
-		}
-
-		public abstract StreamConnectionProvider createConnectionProvider();
-
-		public LanguageClientImpl createLanguageClient() {
-			return new LanguageClientImpl();
-		}
-
-		public Class<? extends LanguageServer> getServerInterface() {
-			return LanguageServer.class;
-		}
-
-		public <S extends LanguageServer> Launcher.Builder<S> createLauncherBuilder() {
-			return new Launcher.Builder<S>();
-		}
-
-	}
-
-	static class ExtensionLanguageServerDefinition extends LanguageServerDefinition {
-		private IConfigurationElement extension;
-
-		public ExtensionLanguageServerDefinition(IConfigurationElement element) {
-			super(element.getAttribute(ID_ATTRIBUTE), element.getAttribute(LABEL_ATTRIBUTE), Boolean.parseBoolean(element.getAttribute(SINGLETON_ATTRIBUTE)));
-			this.extension = element;
-		}
-
-		@Override
-		public StreamConnectionProvider createConnectionProvider() {
-			try {
-				return (StreamConnectionProvider) extension.createExecutableExtension(CLASS_ATTRIBUTE);
-			} catch (CoreException e) {
-				StatusManager.getManager().handle(e, LanguageServerPlugin.PLUGIN_ID);
-				throw new RuntimeException(
-						"Exception occurred while creating an instance of the stream connection provider", e); //$NON-NLS-1$
-			}
-		}
-
-		@Override
-		public LanguageClientImpl createLanguageClient() {
-			String clientImpl = extension.getAttribute(CLIENT_IMPL_ATTRIBUTE);
-			if (clientImpl != null && !clientImpl.isEmpty()) {
-				try {
-					return (LanguageClientImpl) extension.createExecutableExtension(CLIENT_IMPL_ATTRIBUTE);
-				} catch (CoreException e) {
-					StatusManager.getManager().handle(e, LanguageServerPlugin.PLUGIN_ID);
-				}
-			}
-			return super.createLanguageClient();
-		}
-
-		@SuppressWarnings("unchecked")
-		@Override
-		public Class<? extends LanguageServer> getServerInterface() {
-			String serverInterface = extension.getAttribute(SERVER_INTERFACE_ATTRIBUTE);
-			if (serverInterface != null && !serverInterface.isEmpty()) {
-				Bundle bundle = Platform.getBundle(extension.getContributor().getName());
-				if (bundle != null) {
-					try {
-						return (Class<? extends LanguageServer>) bundle.loadClass(serverInterface);
-					} catch (ClassNotFoundException exception) {
-						StatusManager.getManager().handle(new Status(IStatus.ERROR, LanguageServerPlugin.PLUGIN_ID,
-								exception.getMessage(), exception));
-					}
-				}
-			}
-			return super.getServerInterface();
-		}
-
-		@SuppressWarnings("unchecked")
-		@Override
-		public <S extends LanguageServer> Launcher.Builder<S> createLauncherBuilder() {
-			String launcherSupplier = extension.getAttribute(LAUNCHER_BUILDER_ATTRIBUTE);
-			if (launcherSupplier != null && !launcherSupplier.isEmpty()) {
-				try {
-					return (Launcher.Builder<S>) extension.createExecutableExtension(LAUNCHER_BUILDER_ATTRIBUTE);
-				} catch (CoreException e) {
-					StatusManager.getManager().handle(e, LanguageServerPlugin.PLUGIN_ID);
-				}
-			}
-			return super.createLauncherBuilder();
-		}
-
-	}
-
-	static class LaunchConfigurationLanguageServerDefinition extends LanguageServerDefinition {
-		final ILaunchConfiguration launchConfiguration;
-		final Set<String> launchModes;
-
-		public LaunchConfigurationLanguageServerDefinition(ILaunchConfiguration launchConfiguration,
-				Set<String> launchModes) {
-			super(launchConfiguration.getName(), launchConfiguration.getName(), false);
-			this.launchConfiguration = launchConfiguration;
-			this.launchModes = launchModes;
-		}
-
-		@Override
-		public StreamConnectionProvider createConnectionProvider() {
-			return new LaunchConfigurationStreamProvider(this.launchConfiguration, launchModes);
-		}
-	}
-
-	private static LanguageServersRegistry INSTANCE = null;
-	public static LanguageServersRegistry getInstance() {
-		if (INSTANCE == null) {
-			INSTANCE = new LanguageServersRegistry();
-		}
-		return INSTANCE;
-	}
-
-	private List<ContentTypeToLanguageServerDefinition> connections = new ArrayList<>();
-	private IPreferenceStore preferenceStore;
-
-	private LanguageServersRegistry() {
-		this.preferenceStore = LanguageServerPlugin.getDefault().getPreferenceStore();
-		initialize();
-	}
-
-	private void initialize() {
-		String prefs = preferenceStore.getString(CONTENT_TYPE_TO_LSP_LAUNCH_PREF_KEY);
-		if (prefs != null && !prefs.isEmpty()) {
-			String[] entries = prefs.split(","); //$NON-NLS-1$
-			for (String entry : entries) {
-				ContentTypeToLSPLaunchConfigEntry mapping = ContentTypeToLSPLaunchConfigEntry.readFromPreference(entry);
-				if (mapping != null) {
-					connections.add(mapping);
-				}
-			}
-		}
-
-		Map<String, LanguageServerDefinition> servers = new HashMap<>();
-		List<ContentTypeMapping> contentTypes = new ArrayList<>();
-		for (IConfigurationElement extension : Platform.getExtensionRegistry().getConfigurationElementsFor(EXTENSION_POINT_ID)) {
-			String id = extension.getAttribute(ID_ATTRIBUTE);
-			if (id != null && !id.isEmpty()) {
-				if (extension.getName().equals(LS_ELEMENT)) {
-					servers.put(id, new ExtensionLanguageServerDefinition(extension));
-				} else if (extension.getName().equals(MAPPING_ELEMENT)) {
-					IContentType contentType = Platform.getContentTypeManager().getContentType(extension.getAttribute(CONTENT_TYPE_ATTRIBUTE));
-					String languageId = extension.getAttribute(LANGUAGE_ID_ATTRIBUTE);
-					EnablementTester expression = null;
-					if (extension.getChildren(ENABLED_WHEN_ATTRIBUTE) != null) {
-						IConfigurationElement[] enabledWhenElements = extension.getChildren(ENABLED_WHEN_ATTRIBUTE);
-						if (enabledWhenElements.length == 1) {
-							IConfigurationElement enabledWhen = enabledWhenElements[0];
-							IConfigurationElement[] enabledWhenChildren = enabledWhen.getChildren();
-							if (enabledWhenChildren.length == 1) {
-								try {
-									String description = enabledWhen.getAttribute(ENABLED_WHEN_DESC);
-									expression = new EnablementTester(this::evaluationContext,
-											ExpressionConverter.getDefault().perform(enabledWhenChildren[0]),
-											description);
-								} catch (CoreException e) {
-									LanguageServerPlugin.logWarning(e.getMessage(), e);
-								}
-							}
-						}
-					}
-					if (contentType != null) {
-						contentTypes.add(new ContentTypeMapping(contentType, id, languageId, expression));
-					}
-				}
-			}
-		}
-
-		for (ContentTypeMapping mapping : contentTypes) {
-			LanguageServerDefinition lsDefinition = servers.get(mapping.id);
-			if (lsDefinition != null) {
-				registerAssociation(mapping.contentType, lsDefinition, mapping.languageId, mapping.enablement);
-			} else {
-				LanguageServerPlugin.logWarning("server '" + mapping.id + "' not available", null); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	private IEvaluationContext evaluationContext() {
-		return Optional.ofNullable(PlatformUI.getWorkbench().getService(IHandlerService.class))//
-				.map(IHandlerService::getCurrentState)//
-				.orElse(null);
-	}
-
-	private void persistContentTypeToLaunchConfigurationMapping() {
-		StringBuilder builder = new StringBuilder();
-		for (ContentTypeToLSPLaunchConfigEntry entry : getContentTypeToLSPLaunches()) {
-			entry.appendPreferenceTo(builder);
-			builder.append(',');
-		}
-		if (builder.length() > 0) {
-			builder.deleteCharAt(builder.length() - 1);
-		}
-		this.preferenceStore.setValue(CONTENT_TYPE_TO_LSP_LAUNCH_PREF_KEY, builder.toString());
-		if (this.preferenceStore instanceof IPersistentPreferenceStore) {
-			try {
-				((IPersistentPreferenceStore) this.preferenceStore).save();
-			} catch (IOException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		}
-	}
-
-	/**
-	 * @param contentType
-	 * @return the {@link LanguageServerDefinition}s <strong>directly</strong> associated to the given content-type.
-	 * This does <strong>not</strong> include the one that match transitively as per content-type hierarchy
-	 */
-	List<ContentTypeToLanguageServerDefinition> findProviderFor(final @NonNull IContentType contentType) {
-		return connections.stream()
-			.filter(entry -> entry.getKey().equals(contentType))
-			.sorted((mapping1, mapping2) -> {
-				// this sort should make that the content-type hierarchy is respected
-				// and the most specialized content-type are placed before the more generic ones
-				if (mapping1.getKey().isKindOf(mapping2.getKey())) {
-					return -1;
-				} else if (mapping2.getKey().isKindOf(mapping1.getKey())) {
-					return +1;
-				}
-				// TODO support "priority" attribute, but it's not made public
-				return mapping1.getKey().getId().compareTo(mapping2.getKey().getId());
-			})
-			.collect(Collectors.toList());
-	}
-
-	public void registerAssociation(@NonNull IContentType contentType, @NonNull ILaunchConfiguration launchConfig, @NonNull Set<String> launchMode) {
-		ContentTypeToLSPLaunchConfigEntry mapping = new ContentTypeToLSPLaunchConfigEntry(contentType, launchConfig,
-				launchMode);
-		connections.add(mapping);
-		persistContentTypeToLaunchConfigurationMapping();
-	}
-
-	public void registerAssociation(@NonNull IContentType contentType,
-			@NonNull LanguageServerDefinition serverDefinition, @Nullable String languageId,
-			EnablementTester enablement) {
-		if (languageId != null) {
-			serverDefinition.registerAssociation(contentType, languageId);
-		}
-
-		connections.add(new ContentTypeToLanguageServerDefinition(contentType, serverDefinition, enablement));
-	}
-
-	public void setAssociations(List<ContentTypeToLSPLaunchConfigEntry> wc) {
-		this.connections.removeIf(ContentTypeToLSPLaunchConfigEntry.class::isInstance);
-		this.connections.addAll(wc);
-		persistContentTypeToLaunchConfigurationMapping();
-	}
-
-	public List<ContentTypeToLSPLaunchConfigEntry> getContentTypeToLSPLaunches() {
-		return this.connections.stream().filter(ContentTypeToLSPLaunchConfigEntry.class::isInstance).map(ContentTypeToLSPLaunchConfigEntry.class::cast).collect(Collectors.toList());
-	}
-
-	public List<ContentTypeToLanguageServerDefinition> getContentTypeToLSPExtensions() {
-		return this.connections.stream().filter(mapping -> mapping.getValue() instanceof ExtensionLanguageServerDefinition).collect(Collectors.toList());
-	}
-
-	public @Nullable LanguageServerDefinition getDefinition(@NonNull String languageServerId) {
-		for (ContentTypeToLanguageServerDefinition mapping : this.connections) {
-			if (mapping.getValue().id.equals(languageServerId)) {
-				return mapping.getValue();
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * internal class to capture content-type mappings for language servers
-	 */
-	private static class ContentTypeMapping {
-
-		@NonNull public final String id;
-		@NonNull public final IContentType contentType;
-		@Nullable public final String languageId;
-		@Nullable
-		public final EnablementTester enablement;
-
-		public ContentTypeMapping(@NonNull IContentType contentType, @NonNull String id, @Nullable String languageId,
-				@Nullable EnablementTester enablement) {
-			this.contentType = contentType;
-			this.id = id;
-			this.languageId = languageId;
-			this.enablement = enablement;
-		}
-
-	}
-
-	/**
-	 * @param file
-	 * @param serverDefinition
-	 * @return whether the given serverDefinition is suitable for the file
-	 */
-	public boolean matches(@NonNull IFile file, @NonNull LanguageServerDefinition serverDefinition) {
-		return getAvailableLSFor(LSPEclipseUtils.getFileContentTypes(file)).contains(serverDefinition);
-	}
-
-	/**
-	 * @param document
-	 * @param serverDefinition
-	 * @return whether the given serverDefinition is suitable for the file
-	 */
-	public boolean matches(@NonNull IDocument document, @NonNull LanguageServerDefinition serverDefinition) {
-		return getAvailableLSFor(LSPEclipseUtils.getDocumentContentTypes(document)).contains(serverDefinition);
-	}
-
-	public boolean canUseLanguageServer(@NonNull IEditorInput editorInput) {
-		return !getAvailableLSFor(
-				Arrays.asList(Platform.getContentTypeManager().findContentTypesFor(editorInput.getName()))).isEmpty();
-	}
-
-	public boolean canUseLanguageServer(@NonNull IDocument document) {
-		List<IContentType> contentTypes = LSPEclipseUtils.getDocumentContentTypes(document);
-
-		if (contentTypes.isEmpty()) {
-			return false;
-		}
-
-		return !getAvailableLSFor(contentTypes).isEmpty();
-	}
-
-	public boolean canUseLanguageServer(@NonNull IFile file) {
-		return !getAvailableLSFor(LSPEclipseUtils.getFileContentTypes(file)).isEmpty();
-	}
-
-	private Set<LanguageServerDefinition> getAvailableLSFor(Collection<IContentType> contentTypes) {
-		Set<LanguageServerDefinition> res = new HashSet<>();
-		for (ContentTypeToLanguageServerDefinition mapping : this.connections) {
-			if (mapping.isEnabled() && contentTypes.contains(mapping.getKey())) {
-				res.add(mapping.getValue());
-			}
-		}
-		return res;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServiceAccessor.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServiceAccessor.java
deleted file mode 100644
index 4a40979..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServiceAccessor.java
+++ /dev/null
@@ -1,621 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Lucas Bullen (Red Hat Inc.) - [Bug 517428] Requests sent before initialization
- *  Martin Lippert (Pivotal Inc.) - bug 531167, 531670, 536258
- *  Kris De Volder (Pivotal Inc.) - Get language servers by capability predicate.
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Queue;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition;
-import org.eclipse.lsp4e.server.StreamConnectionProvider;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.part.FileEditorInput;
-
-/**
- * The entry-point to retrieve a Language Server for a given resource/project.
- * Deals with instantiations and caching of underlying
- * {@link LanguageServerWrapper}.
- *
- */
-public class LanguageServiceAccessor {
-
-	private LanguageServiceAccessor() {
-		// this class shouldn't be instantiated
-	}
-
-	private static Set<LanguageServerWrapper> startedServers = new HashSet<>();
-	private static Map<StreamConnectionProvider, LanguageServerDefinition> providersToLSDefinitions = new HashMap<>();
-
-	/**
-	 * This is meant for test code to clear state that might have leaked from other
-	 * tests. It isn't meant to be used in production code.
-	 */
-	public static void clearStartedServers() {
-		synchronized (startedServers) {
-			startedServers.forEach(LanguageServerWrapper::stop);
-			startedServers.clear();
-		}
-	}
-
-	/**
-	 * A bean storing association of a Document/File with a language server.
-	 */
-	public static class LSPDocumentInfo {
-
-		private final @NonNull URI fileUri;
-		private final @NonNull IDocument document;
-		private final @NonNull LanguageServerWrapper wrapper;
-
-		private LSPDocumentInfo(@NonNull URI fileUri, @NonNull IDocument document,
-				@NonNull LanguageServerWrapper wrapper) {
-			this.fileUri = fileUri;
-			this.document = document;
-			this.wrapper = wrapper;
-		}
-
-		public @NonNull IDocument getDocument() {
-			return this.document;
-		}
-
-		/**
-		 * TODO consider directly returning a {@link TextDocumentIdentifier}
-		 * @return
-		 */
-		public @NonNull URI getFileUri() {
-			return this.fileUri;
-		}
-
-		/**
-		 * Returns the language server, regardless of if it is initialized.
-		 *
-		 * @deprecated use {@link #getInitializedLanguageClient()} instead.
-		 */
-		@Deprecated
-		public LanguageServer getLanguageClient() {
-			try {
-				return this.wrapper.getInitializedServer().get();
-			} catch (ExecutionException e) {
-				LanguageServerPlugin.logError(e);
-				return this.wrapper.getServer();
-			} catch (InterruptedException e) {
-				LanguageServerPlugin.logError(e);
-				Thread.currentThread().interrupt();
-				return this.wrapper.getServer();
-			}
-		}
-
-		public int getVersion() {
-			return wrapper.getVersion(fileUri);
-		}
-
-		public CompletableFuture<LanguageServer> getInitializedLanguageClient() {
-			return this.wrapper.getInitializedServer();
-		}
-
-		public @Nullable ServerCapabilities getCapabilites() {
-			return this.wrapper.getServerCapabilities();
-		}
-
-		public boolean isActive() {
-			return this.wrapper.isActive();
-		}
-	}
-
-
-	public static @NonNull List<CompletableFuture<LanguageServer>> getInitializedLanguageServers(@NonNull IFile file,
-			@Nullable Predicate<ServerCapabilities> request) throws IOException {
-		synchronized (startedServers) {
-			Collection<LanguageServerWrapper> wrappers = getLSWrappers(file, request);
-			return wrappers.stream().map(wrapper -> wrapper.getInitializedServer().thenApplyAsync(server -> {
-				try {
-					wrapper.connect(file, null);
-				} catch (IOException e) {
-					LanguageServerPlugin.logError(e);
-				}
-				return server;
-			})).collect(Collectors.toList());
-		}
-	}
-
-	public static void disableLanguageServerContentType(
-			@NonNull ContentTypeToLanguageServerDefinition contentTypeToLSDefinition) {
-		Optional<LanguageServerWrapper> result = startedServers.stream()
-				.filter(server -> server.serverDefinition.equals(contentTypeToLSDefinition.getValue())).findFirst();
-		if (result.isPresent()) {
-			IContentType contentType = contentTypeToLSDefinition.getKey();
-			if (contentType != null) {
-				result.get().disconnectContentType(contentType);
-			}
-		}
-
-	}
-
-	public static void enableLanguageServerContentType(
-			@NonNull ContentTypeToLanguageServerDefinition contentTypeToLSDefinition,
-			@NonNull IEditorReference[] editors) {
-		for (IEditorReference editor : editors) {
-			try {
-				if (editor.getEditorInput() instanceof FileEditorInput) {
-					IFile editorFile = ((FileEditorInput) editor.getEditorInput()).getFile();
-					IContentType contentType = contentTypeToLSDefinition.getKey();
-					LanguageServerDefinition lsDefinition = contentTypeToLSDefinition.getValue();
-					IContentDescription contentDesc = editorFile.getContentDescription();
-					if (contentTypeToLSDefinition.isEnabled() && contentType != null && contentDesc != null
-							&& contentType.equals(contentDesc.getContentType())
-							&& lsDefinition != null) {
-						try {
-							getInitializedLanguageServer(editorFile, lsDefinition, capabilities -> true);
-						} catch (IOException e) {
-							LanguageServerPlugin.logError(e);
-						}
-					}
-				}
-			} catch (CoreException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		}
-
-	}
-
-	/**
-	 * Get the requested language server instance for the given file. Starts the language server if not already started.
-	 * @param file
-	 * @param lsDefinition
-	 * @param capabilitiesPredicate a predicate to check capabilities
-	 * @return a LanguageServer for the given file, which is defined with provided server ID and conforms to specified request
-	 * @deprecated use {@link #getInitializedLanguageServer(IFile, LanguageServerDefinition, Predicate)} instead.
-	 */
-	@Deprecated
-	public static LanguageServer getLanguageServer(@NonNull IFile file, @NonNull LanguageServerDefinition lsDefinition,
-			Predicate<ServerCapabilities> capabilitiesPredicate)
-			throws IOException {
-		LanguageServerWrapper wrapper = getLSWrapperForConnection(file.getProject(), lsDefinition, file.getFullPath());
-		if (capabilitiesComply(wrapper, capabilitiesPredicate)) {
-			wrapper.connect(file, null);
-			return wrapper.getServer();
-		}
-		return null;
-	}
-
-	/**
-	 * Get the requested language server instance for the given file. Starts the language server if not already started.
-	 * @param file
-	 * @param lsDefinition
-	 * @param capabilitiesPredicate a predicate to check capabilities
-	 * @return a LanguageServer for the given file, which is defined with provided server ID and conforms to specified request.
-	 *  If {@code capabilitesPredicate} does not test positive for the server's capabilities, {@code null} is returned.
-	 */
-	public static CompletableFuture<LanguageServer> getInitializedLanguageServer(@NonNull IFile file,
-			@NonNull LanguageServerDefinition lsDefinition,
-			Predicate<ServerCapabilities> capabilitiesPredicate)
-			throws IOException {
-		LanguageServerWrapper wrapper = getLSWrapperForConnection(file.getProject(), lsDefinition, file.getFullPath());
-		if (capabilitiesComply(wrapper, capabilitiesPredicate)) {
-			wrapper.connect(file, null);
-			return wrapper.getInitializedServer();
-		}
-		return null;
-	}
-
-	/**
-	 * Get the requested language server instance for the given document. Starts the
-	 * language server if not already started.
-	 *
-	 * @param document the document for which the initialized LanguageServer shall be returned
-	 * @param lsDefinition the ID of the LanguageServer to be returned
-	 * @param capabilitiesPredicate
-	 *            a predicate to check capabilities
-	 * @return a LanguageServer for the given file, which is defined with provided
-	 *         server ID and conforms to specified request. If
-	 *         {@code capabilitesPredicate} does not test positive for the server's
-	 *         capabilities, {@code null} is returned.
-	 */
-	public static CompletableFuture<LanguageServer> getInitializedLanguageServer(@NonNull IDocument document,
-			@NonNull LanguageServerDefinition lsDefinition, Predicate<ServerCapabilities> capabilitiesPredicate)
-			throws IOException {
-		IPath initialPath = LSPEclipseUtils.toPath(document);
-		LanguageServerWrapper wrapper = getLSWrapperForConnection(document, lsDefinition, initialPath);
-		if (capabilitiesComply(wrapper, capabilitiesPredicate)) {
-			wrapper.connect(document);
-			return wrapper.getInitializedServer();
-		}
-		return null;
-	}
-
-	/**
-	 * Checks if the given {@code wrapper}'s capabilities comply with the given
-	 * {@code capabilitiesPredicate}.
-	 *
-	 * @param wrapper
-	 *            the server that's capabilities are tested with
-	 *            {@code capabilitiesPredicate}
-	 * @param capabilitiesPredicate
-	 *            predicate testing the capabilities of {@code wrapper}.
-	 * @return The result of applying the capabilities of {@code wrapper} to
-	 *         {@code capabilitiesPredicate}, or {@code false} if
-	 *         {@code capabilitiesPredicate == null} or
-	 *         {@code wrapper.getServerCapabilities() == null}
-	 */
-	private static boolean capabilitiesComply(LanguageServerWrapper wrapper,
-			Predicate<ServerCapabilities> capabilitiesPredicate) {
-		return capabilitiesPredicate == null
-				|| wrapper.getServerCapabilities() == null /* null check is workaround for https://github.com/TypeFox/ls-api/issues/47 */
-				|| capabilitiesPredicate.test(wrapper.getServerCapabilities());
-	}
-
-
-	/**
-	 * TODO we need a similar method for generic IDocument (enabling non-IFiles)
-	 *
-	 * @param file
-	 * @param request
-	 * @return
-	 * @throws IOException
-	 * @noreference This method is currently internal and should only be referenced
-	 *              for testing
-	 */
-	@NonNull
-	public static Collection<LanguageServerWrapper> getLSWrappers(@NonNull IFile file,
-			@Nullable Predicate<ServerCapabilities> request) throws IOException {
-		LinkedHashSet<LanguageServerWrapper> res = new LinkedHashSet<>();
-		IProject project = file.getProject();
-		if (project == null) {
-			return res;
-		}
-
-		res.addAll(getMatchingStartedWrappers(file, request));
-
-		// look for running language servers via content-type
-		Queue<IContentType> contentTypes = new LinkedList<>();
-		Set<IContentType> addedContentTypes = new HashSet<>();
-		contentTypes.addAll(LSPEclipseUtils.getFileContentTypes(file));
-		addedContentTypes.addAll(contentTypes);
-
-		while (!contentTypes.isEmpty()) {
-			IContentType contentType = contentTypes.poll();
-			if (contentType == null) {
-				continue;
-			}
-			for (ContentTypeToLanguageServerDefinition mapping : LanguageServersRegistry.getInstance().findProviderFor(contentType)) {
-				if (mapping != null && mapping.getValue() != null && mapping.isEnabled()) {
-					LanguageServerWrapper wrapper = getLSWrapperForConnection(project, mapping.getValue(), file.getFullPath());
-					if (capabilitiesComply(wrapper, request)) {
-						res.add(wrapper);
-					}
-				}
-			}
-			if (contentType.getBaseType() != null && !addedContentTypes.contains(contentType.getBaseType())) {
-				addedContentTypes.add(contentType.getBaseType());
-				contentTypes.add(contentType.getBaseType());
-			}
-		}
-		return res;
-	}
-
-	@NonNull
-	private static Collection<LanguageServerWrapper> getLSWrappers(@NonNull IDocument document) {
-		LinkedHashSet<LanguageServerWrapper> res = new LinkedHashSet<>();
-		IFile file = LSPEclipseUtils.getFile(document);
-		URI uri = LSPEclipseUtils.toUri(document);
-		if (uri == null) {
-			return Collections.emptyList();
-		}
-		IPath path = new Path(uri.getPath());
-
-		// look for running language servers via content-type
-		Queue<IContentType> contentTypes = new LinkedList<>();
-		Set<IContentType> processedContentTypes = new HashSet<>();
-		contentTypes.addAll(LSPEclipseUtils.getDocumentContentTypes(document));
-
-		synchronized (startedServers) {
-			// already started compatible servers that fit request
-			res.addAll(startedServers.stream()
-					.filter(wrapper -> {
-						try {
-							return wrapper.isConnectedTo(uri) || LanguageServersRegistry.getInstance().matches(document, wrapper.serverDefinition);
-						} catch (Exception e) {
-							LanguageServerPlugin.logError(e);
-							return false;
-						}
-					})
-					.filter(wrapper -> wrapper.canOperate(document))
-					.collect(Collectors.toList()));
-
-			while (!contentTypes.isEmpty()) {
-				IContentType contentType = contentTypes.poll();
-				if (contentType == null || processedContentTypes.contains(contentType)) {
-					continue;
-				}
-				for (ContentTypeToLanguageServerDefinition mapping : LanguageServersRegistry.getInstance()
-						.findProviderFor(contentType)) {
-					if (mapping == null || !mapping.isEnabled()) {
-						continue;
-					}
-					LanguageServerDefinition serverDefinition = mapping.getValue();
-					if (serverDefinition == null) {
-						continue;
-					}
-					if (startedServers.stream().anyMatch(wrapper -> wrapper.serverDefinition.equals(serverDefinition)
-							&& wrapper.canOperate(document))) {
-						// we already checked a compatible LS with this definition
-						continue;
-					}
-					final IProject fileProject = file != null ? file.getProject() : null;
-					LanguageServerWrapper wrapper = fileProject != null ? new LanguageServerWrapper(fileProject, serverDefinition) :
-						new LanguageServerWrapper(serverDefinition, path);
-					startedServers.add(wrapper);
-					res.add(wrapper);
-				}
-				if (contentType.getBaseType() != null) {
-					contentTypes.add(contentType.getBaseType());
-				}
-				processedContentTypes.add(contentType);
-			}
-			return res;
-		}
-	}
-
-	/**
-	 * Return existing {@link LanguageServerWrapper} for the given connection. If
-	 * not found, create a new one with the given connection and register it for
-	 * this project/content-type.
-	 *
-	 * @param project
-	 * @param serverDefinition
-	 * @return
-	 * @throws IOException
-	 * @Deprecated will be made private soon
-	 * @noreference will be made private soon
-	 * @deprecated
-	 */
-	@Deprecated
-	public static LanguageServerWrapper getLSWrapperForConnection(@NonNull IProject project,
-			@NonNull LanguageServerDefinition serverDefinition) throws IOException {
-		return 	getLSWrapperForConnection(project, serverDefinition, null);
-	}
-
-	@Deprecated
-	private static LanguageServerWrapper getLSWrapperForConnection(@NonNull IProject project,
-			@NonNull LanguageServerDefinition serverDefinition, @Nullable IPath initialPath) throws IOException {
-		LanguageServerWrapper wrapper = null;
-
-		synchronized (startedServers) {
-			for (LanguageServerWrapper startedWrapper : getStartedLSWrappers(project)) {
-				if (startedWrapper.serverDefinition.equals(serverDefinition)) {
-					wrapper = startedWrapper;
-					break;
-				}
-			}
-			if (wrapper == null) {
-				wrapper = project != null ? new LanguageServerWrapper(project, serverDefinition) :
-					new LanguageServerWrapper(serverDefinition, initialPath);
-				wrapper.start();
-			}
-
-			startedServers.add(wrapper);
-		}
-		return wrapper;
-	}
-
-	private static LanguageServerWrapper getLSWrapperForConnection(@NonNull IDocument document,
-			@NonNull LanguageServerDefinition serverDefinition, @Nullable IPath initialPath) throws IOException {
-		LanguageServerWrapper wrapper = null;
-
-		synchronized (startedServers) {
-			for (LanguageServerWrapper startedWrapper : getStartedLSWrappers(document)) {
-				if (startedWrapper.serverDefinition.equals(serverDefinition)) {
-					wrapper = startedWrapper;
-					break;
-				}
-			}
-			if (wrapper == null) {
-				wrapper = new LanguageServerWrapper(serverDefinition, initialPath);
-				wrapper.start();
-			}
-
-			startedServers.add(wrapper);
-		}
-		return wrapper;
-	}
-
-	/**
-	 * Interface to be used for passing lambdas to {@link LanguageServiceAccessor#addStartedServerSynchronized(ServerSupplier)}.
-	 */
-	@FunctionalInterface
-	private static interface ServerSupplier {
-		LanguageServerWrapper get() throws IOException;
-	}
-
-	private static @NonNull List<LanguageServerWrapper> getStartedLSWrappers(
-			@NonNull IProject project) {
-		return getStartedLSWrappers(wrapper -> wrapper.canOperate(project));
-	}
-
-	private static @NonNull List<LanguageServerWrapper> getStartedLSWrappers(
-			@NonNull IDocument document) {
-		return getStartedLSWrappers(wrapper -> wrapper.canOperate(document));
-	}
-
-	private static  @NonNull List<LanguageServerWrapper> getStartedLSWrappers(@NonNull Predicate<LanguageServerWrapper> predicate) {
-		return startedServers.stream().filter(predicate)
-				.collect(Collectors.toList());
-			// TODO multi-root: also return servers which support multi-root?
-	}
-
-	private static Collection<LanguageServerWrapper> getMatchingStartedWrappers(@NonNull IFile file,
-			@Nullable Predicate<ServerCapabilities> request) {
-		synchronized (startedServers) {
-			return startedServers.stream().filter(wrapper -> wrapper.isActive() && wrapper.isConnectedTo(file.getLocationURI())
-					|| (LanguageServersRegistry.getInstance().matches(file, wrapper.serverDefinition)
-							&& wrapper.canOperate(file.getProject()))).filter(wrapper -> request == null
-					|| (wrapper.getServerCapabilities() == null || request.test(wrapper.getServerCapabilities())))
-					.collect(Collectors.toList());
-		}
-	}
-
-	/**
-	 * Gets list of running LS satisfying a capability predicate. This does not
-	 * start any matching language servers, it returns the already running ones.
-	 *
-	 * @param request
-	 * @return list of Language Servers
-	 */
-	@NonNull
-	public static List<@NonNull LanguageServer> getActiveLanguageServers(Predicate<ServerCapabilities> request) {
-		return getLanguageServers(null, request, true);
-	}
-
-	/**
-	 * Gets list of LS initialized for given project.
-	 *
-	 * @param project
-	 * @param request
-	 * @return list of Language Servers
-	 */
-	@NonNull
-	public static List<@NonNull LanguageServer> getLanguageServers(@NonNull IProject project,
-			Predicate<ServerCapabilities> request) {
-		return getLanguageServers(project, request, false);
-	}
-
-	/**
-	 * Gets list of LS initialized for given project
-	 *
-	 * @param onlyActiveLS
-	 *            true if this method should return only the already running
-	 *            language servers, otherwise previously started language servers
-	 *            will be re-activated
-	 * @return list of Language Servers
-	 */
-	@NonNull
-	public static List<@NonNull LanguageServer> getLanguageServers(@Nullable IProject project,
-			Predicate<ServerCapabilities> request, boolean onlyActiveLS) {
-		List<@NonNull LanguageServer> serverInfos = new ArrayList<>();
-		for (LanguageServerWrapper wrapper : startedServers) {
-			if ((!onlyActiveLS || wrapper.isActive()) && (project == null || wrapper.canOperate(project))) {
-				@Nullable
-				LanguageServer server = wrapper.getServer();
-				if (server == null) {
-					continue;
-				}
-				if (capabilitiesComply(wrapper, request)) {
-					serverInfos.add(server);
-				}
-			}
-		}
-		return serverInfos;
-	}
-
-	protected static LanguageServerDefinition getLSDefinition(@NonNull StreamConnectionProvider provider) {
-		return providersToLSDefinitions.get(provider);
-	}
-
-	@NonNull public static List<@NonNull LSPDocumentInfo> getLSPDocumentInfosFor(@NonNull IDocument document, @NonNull Predicate<ServerCapabilities> capabilityRequest) {
-		URI fileUri = LSPEclipseUtils.toUri(document);
-		List<LSPDocumentInfo> res = new ArrayList<>();
-		try {
-			getLSWrappers(document).stream().filter(wrapper -> wrapper.getServerCapabilities() == null
-					|| capabilityRequest.test(wrapper.getServerCapabilities())).forEach(wrapper -> {
-						try {
-							wrapper.connect(document);
-						} catch (IOException e) {
-							LanguageServerPlugin.logError(e);
-						}
-						res.add(new LSPDocumentInfo(fileUri, document, wrapper));
-					});
-		} catch (final Exception e) {
-			LanguageServerPlugin.logError(e);
-		}
-		return res;
-	}
-
-	/**
-	 *
-	 * @param document
-	 * @param filter
-	 * @return
-	 * @since 0.9
-	 */
-	@NonNull
-	public static CompletableFuture<List<@NonNull LanguageServer>> getLanguageServers(@NonNull IDocument document,
-			Predicate<ServerCapabilities> filter) {
-		URI uri = LSPEclipseUtils.toUri(document);
-		if (uri == null) {
-			return CompletableFuture.completedFuture(Collections.emptyList());
-		}
-		final List<@NonNull LanguageServer> res = Collections.synchronizedList(new ArrayList<>());
-		try {
-			return CompletableFuture.allOf(getLSWrappers(document).stream().map(wrapper ->
-						wrapper.getInitializedServer().thenComposeAsync(server -> {
-							if (server != null && (filter == null || filter.test(wrapper.getServerCapabilities()))) {
-								try {
-									return wrapper.connect(document);
-								} catch (IOException ex) {
-									LanguageServerPlugin.logError(ex);
-								}
-							}
-							return CompletableFuture.completedFuture(null);
-						}).thenAccept(server -> {
-							if (server != null) {
-								res.add(server);
-							}
-						})).toArray(CompletableFuture[]::new)).thenApply(theVoid -> res);
-		} catch (final Exception e) {
-			LanguageServerPlugin.logError(e);
-		}
-		return CompletableFuture.completedFuture(Collections.emptyList());
-
-
-	}
-
-	public static boolean checkCapability(LanguageServer languageServer, Predicate<ServerCapabilities> condition) {
-		return startedServers.stream().filter(wrapper -> wrapper.isActive() && wrapper.getServer() == languageServer)
-				.anyMatch(wrapper -> condition.test(wrapper.getServerCapabilities()));
-	}
-
-	public static Optional<LanguageServerDefinition> resolveServerDefinition(LanguageServer languageServer) {
-		synchronized (startedServers) {
-			return startedServers.stream().filter(wrapper -> languageServer.equals(wrapper.getServer())).findFirst().map(wrapper -> wrapper.serverDefinition);
-		}
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LaunchConfigurationStreamProvider.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LaunchConfigurationStreamProvider.java
deleted file mode 100644
index 1818355..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LaunchConfigurationStreamProvider.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.reflect.Method;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.core.IStreamListener;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.model.IStreamMonitor;
-import org.eclipse.debug.core.model.RuntimeProcess;
-import org.eclipse.debug.internal.core.IInternalDebugCoreConstants;
-import org.eclipse.debug.internal.core.Preferences;
-import org.eclipse.lsp4e.server.StreamConnectionProvider;
-
-/**
- * Access and control IO streams from a Launch Configuration to connect
- * them to language server protocol client.
- */
-public class LaunchConfigurationStreamProvider implements StreamConnectionProvider  {
-
-	private StreamProxyInputStream inputStream;
-	private StreamProxyInputStream errorStream;
-	private OutputStream outputStream;
-	private ILaunch launch;
-	private IProcess process;
-	private ILaunchConfiguration launchConfiguration;
-	private Set<String> launchModes;
-
-	protected static class StreamProxyInputStream extends InputStream implements IStreamListener {
-
-		private ConcurrentLinkedQueue<Byte> queue = new ConcurrentLinkedQueue<>();
-		private IProcess process;
-
-		public StreamProxyInputStream(IProcess process) {
-			this.process = process;
-		}
-
-		@Override
-		public void streamAppended(String text, IStreamMonitor monitor) {
-			byte[] bytes = text.getBytes(Charset.defaultCharset());
-			List<Byte> bytesAsList = new ArrayList<>(bytes.length);
-			for (byte b : bytes) {
-				bytesAsList.add(b);
-			}
-			queue.addAll(bytesAsList);
-		}
-
-		@Override
-		public int read() throws IOException {
-			while (queue.isEmpty()) {
-				if (this.process.isTerminated()) {
-					return -1;
-				}
-				try {
-					Thread.sleep(5, 0);
-				} catch (InterruptedException e) {
-					LanguageServerPlugin.logError(e);
-					Thread.currentThread().interrupt();
-				}
-			}
-			return queue.poll();
-		}
-
-		@Override
-		public int available() throws IOException {
-			return queue.size();
-		}
-
-	}
-
-	public LaunchConfigurationStreamProvider(ILaunchConfiguration launchConfig, Set<String> launchModes) {
-		super();
-		Assert.isNotNull(launchConfig);
-		this.launchConfiguration = launchConfig;
-		if (launchModes != null) {
-			this.launchModes = launchModes;
-		} else {
-			this.launchModes = Collections.singleton(ILaunchManager.RUN_MODE);
-		}
-	}
-
-	@Override
-	public boolean equals(Object obj) {
-		if (obj == null) {
-			return false;
-		}
-		if (!(obj instanceof LaunchConfigurationStreamProvider)) {
-			return false;
-		}
-		LaunchConfigurationStreamProvider other = (LaunchConfigurationStreamProvider)obj;
-		return this.launchConfiguration.equals(other.launchConfiguration) && this.launchModes.equals(other.launchModes);
-	}
-
-	@Override
-	public int hashCode() {
-		return this.launchConfiguration.hashCode() ^ this.launchModes.hashCode();
-	}
-
-	public static ILaunchConfiguration findLaunchConfiguration(String typeId, String name) {
-		ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
-		ILaunchConfigurationType type = manager.getLaunchConfigurationType(typeId);
-		ILaunchConfiguration res = null;
-		try {
-			for (ILaunchConfiguration launch : manager.getLaunchConfigurations(type)) {
-				if (launch.getName().equals(name)) {
-					res = launch;
-				}
-			}
-		} catch (CoreException e) {
-			LanguageServerPlugin.logError(e);
-		}
-		return res;
-	}
-
-	@Override
-	public void start() throws IOException {
-		// Disable status handler to avoid starting launch in an UI Thread which freezes
-		// the IDE when Outline is displayed.
-		boolean statusHandlerToUpdate = disableStatusHandler();
-		try {
-			this.launch = this.launchConfiguration.launch(this.launchModes.iterator().next(), new NullProgressMonitor(),
-					false);
-			long initialTimestamp = System.currentTimeMillis();
-			while (this.launch.getProcesses().length == 0 && System.currentTimeMillis() - initialTimestamp < 5000) {
-				try {
-					Thread.sleep(50);
-				} catch (InterruptedException e) {
-					LanguageServerPlugin.logError(e);
-					Thread.currentThread().interrupt();
-				}
-			}
-			if (this.launch.getProcesses().length > 0) {
-				this.process = this.launch.getProcesses()[0];
-				this.inputStream = new StreamProxyInputStream(process);
-				process.getStreamsProxy().getOutputStreamMonitor().addListener(this.inputStream);
-				// TODO: Ugly hack, find something better to retrieve stream!
-				try {
-					Method systemProcessGetter = RuntimeProcess.class.getDeclaredMethod("getSystemProcess"); //$NON-NLS-1$
-					systemProcessGetter.setAccessible(true);
-					Process systemProcess = (Process) systemProcessGetter.invoke(process);
-					this.outputStream = systemProcess.getOutputStream();
-				} catch (ReflectiveOperationException ex) {
-					LanguageServerPlugin.logError(ex);
-				}
-				this.errorStream = new StreamProxyInputStream(process);
-				process.getStreamsProxy().getErrorStreamMonitor().addListener(this.errorStream);
-			}
-		} catch (Exception e) {
-			LanguageServerPlugin.logError(e);
-		}
-		finally {
-			if (statusHandlerToUpdate) {
-				setStatusHandler(true);
-			}
-		}
-	}
-
-	/**
-	 * Disable status handler while launch is done.
-	 *
-	 * @return true if the status handler preferences was <code>enabled</code> and
-	 *         <code>false</code> otherwise.
-	 */
-	private boolean disableStatusHandler() {
-		boolean enabled = Platform.getPreferencesService().getBoolean(DebugPlugin.getUniqueIdentifier(),
-				IInternalDebugCoreConstants.PREF_ENABLE_STATUS_HANDLERS, false, null);
-		if (enabled) {
-			setStatusHandler(false);
-		}
-		return enabled;
-	}
-
-	/**
-	 * Update the the status handler preferences
-	 *
-	 * @param enabled
-	 *            the status handler preferences
-	 */
-	private void setStatusHandler(boolean enabled) {
-		Preferences.setBoolean(DebugPlugin.getUniqueIdentifier(),
-				IInternalDebugCoreConstants.PREF_ENABLE_STATUS_HANDLERS, enabled, null);
-	}
-
-	@Override
-	public InputStream getInputStream() {
-		return this.inputStream;
-	}
-
-	@Override
-	public OutputStream getOutputStream() {
-		return this.outputStream;
-	}
-
-	@Override
-	public InputStream getErrorStream() {
-		return this.errorStream;
-	}
-
-	@Override
-	public void stop() {
-		if (this.launch == null) {
-			return;
-		}
-		try {
-			this.launch.terminate();
-			for (IProcess p : this.launch.getProcesses()) {
-				p.terminate();
-			}
-		} catch (DebugException e1) {
-			LanguageServerPlugin.logError(e1);
-		}
-		this.launch = null;
-		this.process = null;
-		try {
-			if (this.inputStream != null) {
-				this.inputStream.close();
-			}
-		} catch (IOException e) {
-			LanguageServerPlugin.logError(e);
-		}
-		try {
-			if (this.errorStream != null) {
-				this.errorStream.close();
-			}
-		} catch (IOException e) {
-			LanguageServerPlugin.logError(e);
-		}
-		this.inputStream = null;
-		this.outputStream = null;
-		this.errorStream = null;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LoggingStreamConnectionProviderProxy.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LoggingStreamConnectionProviderProxy.java
deleted file mode 100644
index 017e08c..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LoggingStreamConnectionProviderProxy.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Lucas Bullen (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.io.File;
-import java.io.FilterInputStream;
-import java.io.FilterOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URI;
-import java.nio.file.Files;
-import java.nio.file.StandardOpenOption;
-
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.lsp4e.server.StreamConnectionProvider;
-import org.eclipse.lsp4j.jsonrpc.messages.Message;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.ui.console.ConsolePlugin;
-import org.eclipse.ui.console.IConsole;
-import org.eclipse.ui.console.IConsoleManager;
-import org.eclipse.ui.console.MessageConsole;
-import org.eclipse.ui.console.MessageConsoleStream;
-
-public class LoggingStreamConnectionProviderProxy implements StreamConnectionProvider {
-
-	public static File getLogDirectory() {
-		IPath root = ResourcesPlugin.getWorkspace().getRoot().getLocation();
-		if (root == null) {
-			return null;
-		}
-		File logFolder = new File(root.addTrailingSeparator().toPortableString(), "languageServers-log"); //$NON-NLS-1$
-		if (!(logFolder.exists() || logFolder.mkdirs()) || !logFolder.isDirectory() || !logFolder.canWrite()) {
-			return null;
-		}
-		return logFolder;
-	}
-
-	private static final String FILE_KEY = "file.logging.enabled"; //$NON-NLS-1$
-	private static final String STDERR_KEY = "stderr.logging.enabled"; //$NON-NLS-1$
-
-	private StreamConnectionProvider provider;
-	private InputStream inputStream;
-	private OutputStream outputStream;
-	private InputStream errorStream;
-	private String id;
-	private final File logFile;
-	private boolean logToFile;
-	private boolean logToConsole;
-
-	/**
-	 * Converts a language server ID to the preference ID for logging communications
-	 * to file from the language server
-	 *
-	 * @return language server's preference ID for file logging
-	 */
-	public static String lsToFileLoggingId(String serverId) {
-		return serverId + "." + FILE_KEY;//$NON-NLS-1$
-	}
-
-	/**
-	 * Converts a language server ID to the preference ID for logging communications
-	 * to console from the language server
-	 *
-	 * @return language server's preference ID for console logging
-	 */
-	public static String lsToConsoleLoggingId(String serverId) {
-		return serverId + "." + STDERR_KEY;//$NON-NLS-1$
-	}
-
-	/**
-	 * Returns whether currently created connections should be logged to file or the
-	 * standard error stream.
-	 *
-	 * @return If connections should be logged
-	 */
-	public static boolean shouldLog(String serverId) {
-		IPreferenceStore store = LanguageServerPlugin.getDefault().getPreferenceStore();
-		return store.getBoolean(lsToFileLoggingId(serverId)) || store.getBoolean(lsToConsoleLoggingId(serverId));
-	}
-
-	public LoggingStreamConnectionProviderProxy(StreamConnectionProvider provider, String serverId) {
-		this.id = serverId;
-		this.provider = provider;
-
-		IPreferenceStore store = LanguageServerPlugin.getDefault().getPreferenceStore();
-		logToFile = store.getBoolean(lsToFileLoggingId(serverId));
-		logToConsole = store.getBoolean(lsToConsoleLoggingId(serverId));
-		store.addPropertyChangeListener(event -> {
-			if (event.getProperty().equals(FILE_KEY)) {
-				logToFile = (boolean) event.getNewValue();
-			} else if (event.getProperty().equals(STDERR_KEY)) {
-				logToConsole = (boolean) event.getNewValue();
-			}
-		});
-		this.logFile = getLogFile();
-	}
-
-	@Override
-	public InputStream getInputStream() {
-		if (inputStream != null) {
-			return inputStream;
-		}
-		if (provider.getInputStream() != null) {
-			inputStream = new FilterInputStream(provider.getInputStream()) {
-				@Override
-				public int read(byte[] b, int off, int len) throws IOException {
-					int bytes = super.read(b, off, len);
-					byte[] payload = new byte[bytes];
-					System.arraycopy(b, off, payload, 0, bytes);
-					if (logToConsole || logToFile) {
-						String s = "\n[t=" + System.currentTimeMillis() + "] " + id + " to LSP4E:\n" + new String(payload); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-						if (logToConsole) {
-							logToConsole(s);
-						}
-						if (logToFile) {
-							logToFile(s);
-						}
-					}
-					return bytes;
-				}
-			};
-		}
-		return inputStream;
-	}
-
-	@Override
-	public InputStream getErrorStream() {
-		if (errorStream != null) {
-			return errorStream;
-		}
-		if (provider.getErrorStream() != null) {
-			errorStream = new FilterInputStream(provider.getErrorStream()) {
-				@Override
-				public int read(byte[] b, int off, int len) throws IOException {
-					int bytes = super.read(b, off, len);
-					byte[] payload = new byte[bytes];
-					System.arraycopy(b, off, payload, 0, bytes);
-					if (logToConsole || logToFile) {
-						String s = "\n[t=" + System.currentTimeMillis() + "] Error from " + id + ":\n" + new String(payload); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-						if (logToConsole) {
-							logToConsole(s);
-						}
-						if (logToFile) {
-							logToFile(s);
-						}
-					}
-					return bytes;
-				}
-			};
-		}
-		return errorStream;
-	}
-
-	@Override
-	public OutputStream getOutputStream() {
-		if (outputStream != null) {
-			return outputStream;
-		}
-		if (provider.getOutputStream() != null) {
-			outputStream = new FilterOutputStream(provider.getOutputStream()) {
-				@Override
-				public void write(byte[] b) throws IOException {
-					if (logToConsole || logToFile) {
-						String s = "\n[t=" + System.currentTimeMillis() + "] LSP4E to " + id + ":\n" + new String(b);  //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-						if (logToConsole) {
-							logToConsole(s);
-						}
-						if (logToFile) {
-							logToFile(s);
-						}
-					}
-					super.write(b);
-				}
-			};
-		}
-		return outputStream;
-	}
-
-	@Override
-	public void start() throws IOException {
-		provider.start();
-	}
-
-	@Override
-	public InputStream forwardCopyTo(InputStream input, OutputStream output) {
-		return provider.forwardCopyTo(input, output);
-	}
-
-	@Override
-	public Object getInitializationOptions(URI rootUri) {
-		return provider.getInitializationOptions(rootUri);
-	}
-
-	@Override
-	public String getTrace(URI rootUri) {
-		return provider.getTrace(rootUri);
-	}
-
-	@Override
-	public void handleMessage(Message message, LanguageServer languageServer, URI rootURI) {
-		provider.handleMessage(message, languageServer, rootURI);
-	}
-
-	@Override
-	public void stop() {
-		provider.stop();
-		try {
-			if (outputStream != null) {
-				outputStream.close();
-				outputStream = null;
-			}
-			if (inputStream != null) {
-				inputStream.close();
-				inputStream = null;
-			}
-			if (errorStream != null) {
-				errorStream.close();
-				errorStream = null;
-			}
-		} catch (IOException e) {
-			LanguageServerPlugin.logError(e);
-		}
-	}
-
-	private void logToConsole(String string) {
-		if (consoleStream == null || consoleStream.isClosed()) {
-			consoleStream = findConsole().newMessageStream();
-		}
-		consoleStream.println(string);
-	}
-
-	private MessageConsoleStream consoleStream;
-	private MessageConsole findConsole() {
-		ConsolePlugin plugin = ConsolePlugin.getDefault();
-		IConsoleManager conMan = plugin.getConsoleManager();
-		IConsole[] existing = conMan.getConsoles();
-		for (int i = 0; i < existing.length; i++)
-			if (LanguageServerPlugin.PLUGIN_ID.equals(existing[i].getName()))
-				return (MessageConsole) existing[i];
-		// no console found, so create a new one
-		MessageConsole myConsole = new MessageConsole(LanguageServerPlugin.PLUGIN_ID, null);
-		conMan.addConsoles(new IConsole[] { myConsole });
-		return myConsole;
-	}
-
-	private void logToFile(String string) {
-		if (logFile == null) {
-			return;
-		}
-		if (!logFile.exists()) {
-			try {
-				if (!logFile.createNewFile()) {
-					throw new IOException(String.format("Failed to create file %s", logFile.toString())); //$NON-NLS-1$
-				}
-			} catch (IOException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		}
-		try {
-			Files.write(logFile.toPath(), string.getBytes(), StandardOpenOption.APPEND);
-		} catch (IOException e) {
-			LanguageServerPlugin.logError(e);
-		}
-	}
-
-	private File getLogFile() {
-		if (logFile != null) {
-			return logFile;
-		}
-		File logFolder = getLogDirectory();
-		if (logFolder == null) {
-			return null;
-		}
-		File file = new File(logFolder, id + ".log"); //$NON-NLS-1$
-		if (file.exists() && !(file.isFile() && file.canWrite())) {
-			return null;
-		}
-		return file;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ServerMessageHandler.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ServerMessageHandler.java
deleted file mode 100644
index 06ae0a6..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ServerMessageHandler.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2021 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.notifications.AbstractNotificationPopup;
-import org.eclipse.lsp4j.MessageActionItem;
-import org.eclipse.lsp4j.MessageParams;
-import org.eclipse.lsp4j.ShowMessageRequestParams;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-
-public class ServerMessageHandler {
-
-	private ServerMessageHandler() {
-		// this class shouldn't be instantiated
-	}
-
-	private static class LSPNotification extends AbstractNotificationPopup {
-
-		private final String label;
-		private final MessageParams messageParams;
-
-		public LSPNotification(String label, MessageParams messageParams) {
-			super(Display.getCurrent());
-			setParentShell(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
-			this.label = label;
-			this.messageParams = messageParams;
-		}
-
-		@Override
-		public String getPopupShellTitle() {
-			return label;
-		}
-
-		@Override
-		protected void createContentArea(Composite parent) {
-			Label label = new Label(parent, SWT.WRAP);
-			label.setText(messageParams.getMessage());
-		}
-
-		@Override
-		public Image getPopupShellImage(int maximumHeight) {
-			switch (messageParams.getType()) {
-			case Error:
-				return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
-			case Warning:
-				return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK);
-			case Info:
-				return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_INFO_TSK);
-			default:
-				return null;
-			}
-		}
-
-	}
-
-	public static void logMessage(LanguageServerWrapper wrapper, MessageParams params) {
-		StringBuilder log = new StringBuilder();
-		log.append('[');
-		log.append(params.getType().toString());
-		log.append(']');
-		log.append('\t');
-		log.append(params.getMessage());
-
-		switch(params.getType()) {
-		case Error:
-			LanguageServerPlugin.logError(log.toString(), null);
-			break;
-		case Warning:
-			LanguageServerPlugin.logWarning(log.toString(), null);
-			break;
-		default:
-			LanguageServerPlugin.logInfo(log.toString());
-		}
-	}
-
-	public static void showMessage(String title, MessageParams params) {
-		Display.getDefault().asyncExec(() -> {
-			AbstractNotificationPopup notification = new LSPNotification(String.format("LSP (%s)", title), //$NON-NLS-1$
-					params);
-			notification.open();
-		});
-	}
-
-	public static CompletableFuture<MessageActionItem> showMessageRequest(LanguageServerWrapper wrapper, ShowMessageRequestParams params) {
-		String options[] = params.getActions().stream().map(MessageActionItem::getTitle).toArray(String[]::new);
-		CompletableFuture<MessageActionItem> future = new CompletableFuture<>();
-
-		Display.getDefault().asyncExec(() -> {
-			Shell shell = new Shell(Display.getCurrent());
-			MessageDialog dialog = new MessageDialog(shell, wrapper.serverDefinition.label,
-					null, params.getMessage(), MessageDialog.INFORMATION, 0, options);
-			MessageActionItem result = new MessageActionItem();
-			int dialogResult = dialog.open();
-			if (dialogResult != SWT.DEFAULT) { // the dialog was not dismissed without pressing a button (ESC key, close box, etc.)
-				result.setTitle(options[dialogResult]);
-			}
-			// according to https://github.com/Microsoft/language-server-protocol/issues/230
-			// the right thing to do is to return the res
-			future.complete(result);
-		});
-		return future;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/CommandExecutor.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/CommandExecutor.java
deleted file mode 100644
index f9fb5ff..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/CommandExecutor.java
+++ /dev/null
@@ -1,314 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019, 2020 Fraunhofer FOKUS and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.command;
-
-import static org.eclipse.lsp4e.command.LSPCommandHandler.LSP_COMMAND_PARAMETER_ID;
-import static org.eclipse.lsp4e.command.LSPCommandHandler.LSP_PATH_PARAMETER_ID;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.function.Predicate;
-
-import org.eclipse.core.commands.Category;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.IParameter;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.ParameterType;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServersRegistry;
-import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.command.internal.CommandEventParameter;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.ExecuteCommandOptions;
-import org.eclipse.lsp4j.ExecuteCommandParams;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.WorkspaceEdit;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonPrimitive;
-
-/**
- * This class provides methods to execute {@link Command} instances.
- * <p>
- * This class is deprecated and will likely be removed in the future,
- * when the LSP protocol provides standardized support for `client/executeCommand`
- * messages. See https://github.com/microsoft/language-server-protocol/pull/1119
- */
-@Deprecated
-public class CommandExecutor {
-
-	private static final String LSP_COMMAND_CATEGORY_ID = "org.eclipse.lsp4e.commandCategory"; //$NON-NLS-1$
-	private static final String LSP_COMMAND_PARAMETER_TYPE_ID = "org.eclipse.lsp4e.commandParameterType"; //$NON-NLS-1$
-	private static final String LSP_PATH_PARAMETER_TYPE_ID = "org.eclipse.lsp4e.pathParameterType"; //$NON-NLS-1$
-
-	/**
-	 * Will execute the given {@code command} either on a language server,
-	 * supporting the command, or on the client, if an {@link IHandler} is
-	 * registered for the ID of the command (see {@link LSPCommandHandler}). If
-	 * {@code command} is {@code null}, then this method will do nothing (returning null).
-	 * If neither the server, nor the client are able to handle the command explicitly, a
-	 * heuristic method will try to interpret the command locally.
-	 *
-	 * @param command
-	 *            the LSP Command to be executed. If {@code null} this method will
-	 *            do nothing.
-	 * @param document
-	 *            optional document for which the command was created
-	 * @param languageServerId
-	 *            the ID of the language server for which the {@code command} is
-	 *            applicable. If {@code null}, the command will not be executed on
-	 *            the language server.
-	 * @return A CompletableFuture<Object> or null. A null return value means that
-	 *      'there is no known way to handle the command'. A non-null value means 'the command
-	 *      is being handled'. Therefore it is possible for a caller to determine synchronously
-	 *      whether the callee is handling the command or not (by checking whether the return value is not null).
-	 */
-	public static CompletableFuture<Object> executeCommand(@Nullable Command command, @Nullable IDocument document,
-			@Nullable String languageServerId) {
-		if (command == null) {
-			return null;
-		}
-		CompletableFuture<Object> r = executeCommandServerSide(command, languageServerId, document);
-		if (r!=null) {
-			return r;
-		}
-		r = executeCommandClientSide(command, document);
-		if (r!=null) {
-			return r;
-		}
-		// tentative fallback
-		if (command.getArguments() != null) {
-			WorkspaceEdit edit = createWorkspaceEdit(command.getArguments(), document);
-			LSPEclipseUtils.applyWorkspaceEdit(edit);
-			return CompletableFuture.completedFuture(null);
-		}
-		return null;
-	}
-
-	private static CompletableFuture<Object> executeCommandServerSide(@NonNull Command command, @Nullable String languageServerId,
-			@Nullable IDocument document) {
-		@Nullable LanguageServerDefinition languageServerDefinition = languageServerId == null ? null : LanguageServersRegistry.getInstance()
-				.getDefinition(languageServerId);
-		try {
-			CompletableFuture<LanguageServer> languageServerFuture = getLanguageServerForCommand(command, document,
-					languageServerDefinition);
-			if (languageServerFuture == null) {
-				return null;
-			}
-			// Server can handle command
-			return languageServerFuture.thenApplyAsync(server -> {
-				ExecuteCommandParams params = new ExecuteCommandParams();
-				params.setCommand(command.getCommand());
-				params.setArguments(command.getArguments());
-				return server.getWorkspaceService().executeCommand(params);
-			});
-		} catch (IOException e) {
-			// log and let the code fall through for LSPEclipseUtils to handle
-			LanguageServerPlugin.logError(e);
-			return null;
-		}
-	}
-
-	private static CompletableFuture<LanguageServer> getLanguageServerForCommand(@NonNull Command command,
-			@Nullable IDocument document, @Nullable LanguageServerDefinition languageServerDefinition) throws IOException {
-		if (document!=null && languageServerDefinition!=null) {
-			return LanguageServiceAccessor
-					.getInitializedLanguageServer(document, languageServerDefinition, serverCapabilities -> {
-						ExecuteCommandOptions provider = serverCapabilities.getExecuteCommandProvider();
-						return provider != null && provider.getCommands().contains(command.getCommand());
-					});
-		} else {
-			String id = command.getCommand();
-			List<LanguageServer> commandHandlers = LanguageServiceAccessor.getActiveLanguageServers(handlesCommand(id));
-			if (commandHandlers != null && !commandHandlers.isEmpty()) {
-				if (commandHandlers.size() == 1) {
-					return CompletableFuture.completedFuture(commandHandlers.get(0));
-				} else if (commandHandlers.size() > 1) {
-					throw new IllegalStateException("Multiple language servers have registered to handle command '"+id+"'"); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-			}
-		}
-		return null;
-	}
-
-	private static Predicate<ServerCapabilities> handlesCommand(String id) {
-		return (serverCaps) -> {
-			ExecuteCommandOptions executeCommandProvider = serverCaps.getExecuteCommandProvider();
-			if (executeCommandProvider != null) {
-				return executeCommandProvider.getCommands().contains(id);
-			}
-			return false;
-		};
-	}
-
-	@SuppressWarnings("unused") // ECJ compiler for some reason thinks handlerService == null is always false
-	private static CompletableFuture<Object> executeCommandClientSide(@NonNull Command command, @Nullable IDocument document) {
-		IWorkbench workbench = PlatformUI.getWorkbench();
-		if (workbench == null) {
-			return null;
-		}
-		IPath context = document==null
-				? ResourcesPlugin.getWorkspace().getRoot().getLocation()
-				: LSPEclipseUtils.toPath(document);
-		ParameterizedCommand parameterizedCommand = createEclipseCoreCommand(command, context, workbench);
-		@Nullable
-		IHandlerService handlerService = workbench.getService(IHandlerService.class);
-		if (handlerService == null) {
-			return null;
-		}
-		if (parameterizedCommand == null) {
-			return null;
-		}
-		try {
-			return CompletableFuture.completedFuture(handlerService.executeCommand(parameterizedCommand, null));
-		} catch (ExecutionException | NotDefinedException e) {
-			LanguageServerPlugin.logError(e);
-			return null;
-		} catch (NotEnabledException | NotHandledException e2) {
-			return null;
-		}
-	}
-
-	private static ParameterizedCommand createEclipseCoreCommand(@NonNull Command command, IPath context,
-			@NonNull IWorkbench workbench) {
-		// Usually commands are defined via extension point, but we synthesize one on
-		// the fly for the command ID, since we do not want downstream users
-		// having to define them.
-		String commandId = command.getCommand();
-		@Nullable
-		ICommandService commandService = workbench.getService(ICommandService.class);
-		org.eclipse.core.commands.Command coreCommand = commandService.getCommand(commandId);
-		if (!coreCommand.isDefined()) {
-			ParameterType commandParamType = commandService.getParameterType(LSP_COMMAND_PARAMETER_TYPE_ID);
-			ParameterType pathParamType = commandService.getParameterType(LSP_PATH_PARAMETER_TYPE_ID);
-			Category category = commandService.getCategory(LSP_COMMAND_CATEGORY_ID);
-			IParameter[] parameters = {
-					new CommandEventParameter(commandParamType, command.getTitle(), LSP_COMMAND_PARAMETER_ID),
-					new CommandEventParameter(pathParamType, command.getTitle(), LSP_PATH_PARAMETER_ID)};
-			coreCommand.define(commandId, null, category, parameters);
-		}
-
-		Map<Object, Object> parameters = new HashMap<>();
-		parameters.put(LSP_COMMAND_PARAMETER_ID, command);
-		parameters.put(LSP_PATH_PARAMETER_ID, context);
-		ParameterizedCommand parameterizedCommand = ParameterizedCommand.generateCommand(coreCommand, parameters);
-		return parameterizedCommand;
-	}
-
-	// TODO consider using Entry/SimpleEntry instead
-	private static final class Pair<K, V> {
-		K key;
-		V value;
-
-		Pair(K key, V value) {
-			this.key = key;
-			this.value = value;
-		}
-	}
-
-	// this method may be turned public if needed elsewhere
-	/**
-	 * Very empirical and unsafe heuristic to turn unknown command arguments into a
-	 * workspace edit...
-	 */
-	private static WorkspaceEdit createWorkspaceEdit(List<Object> commandArguments, IDocument document) {
-		WorkspaceEdit res = new WorkspaceEdit();
-		Map<String, List<TextEdit>> changes = new HashMap<>();
-		res.setChanges(changes);
-		URI initialUri = LSPEclipseUtils.toUri(document);
-		Pair<URI, List<TextEdit>> currentEntry = new Pair<>(initialUri, new ArrayList<>());
-		commandArguments.stream().flatMap(item -> {
-			if (item instanceof List) {
-				return ((List<?>) item).stream();
-			} else {
-				return Collections.singleton(item).stream();
-			}
-		}).forEach(arg -> {
-			if (arg instanceof String) {
-				changes.put(currentEntry.key.toString(), currentEntry.value);
-				IResource resource = LSPEclipseUtils.findResourceFor((String) arg);
-				if (resource != null) {
-					currentEntry.key = resource.getLocationURI();
-					currentEntry.value = new ArrayList<>();
-				}
-			} else if (arg instanceof WorkspaceEdit) {
-				changes.putAll(((WorkspaceEdit) arg).getChanges());
-			} else if (arg instanceof TextEdit) {
-				currentEntry.value.add((TextEdit) arg);
-			} else if (arg instanceof Map) {
-				Gson gson = new Gson(); // TODO? retrieve the GSon used by LS
-				TextEdit edit = gson.fromJson(gson.toJson(arg), TextEdit.class);
-				if (edit != null) {
-					currentEntry.value.add(edit);
-				}
-			} else if (arg instanceof JsonPrimitive) {
-				JsonPrimitive json = (JsonPrimitive) arg;
-				if (json.isString()) {
-					changes.put(currentEntry.key.toString(), currentEntry.value);
-					IResource resource = LSPEclipseUtils.findResourceFor(json.getAsString());
-					if (resource != null) {
-						currentEntry.key = resource.getLocationURI();
-						currentEntry.value = new ArrayList<>();
-					}
-				}
-			} else if (arg instanceof JsonArray) {
-				Gson gson = new Gson(); // TODO? retrieve the GSon used by LS
-				JsonArray array = (JsonArray) arg;
-				array.forEach(elt -> {
-					TextEdit edit = gson.fromJson(gson.toJson(elt), TextEdit.class);
-					if (edit != null) {
-						currentEntry.value.add(edit);
-					}
-				});
-			} else if (arg instanceof JsonObject) {
-				Gson gson = new Gson(); // TODO? retrieve the GSon used by LS
-				WorkspaceEdit wEdit = gson.fromJson((JsonObject) arg, WorkspaceEdit.class);
-				Map<String, List<TextEdit>> entries = wEdit.getChanges();
-				if (wEdit != null && !entries.isEmpty()) {
-					changes.putAll(entries);
-				} else {
-					TextEdit edit = gson.fromJson((JsonObject) arg, TextEdit.class);
-					if (edit != null && edit.getRange() != null) {
-						currentEntry.value.add(edit);
-					}
-				}
-			}
-		});
-		if (!currentEntry.value.isEmpty()) {
-			changes.put(currentEntry.key.toString(), currentEntry.value);
-		}
-		return res;
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/LSPCommandHandler.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/LSPCommandHandler.java
deleted file mode 100644
index 944ec2c..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/LSPCommandHandler.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Fraunhofer FOKUS and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Max Bureck (Fraunhofer FOKUS) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.command;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.ui.handlers.IHandlerService;
-
-/**
- * This class provides a way to handle LSP {@link Command}s on client side, if
- * the server cannot handle a command. Sub-classes of this class can be
- * registered using the {@code org.eclipse.ui.handlers} extension point or
- * registered programmatically via {@link IHandlerService}. The handler has to
- * be registered under the {@code commandId} that equals the
- * {@link Command#getCommand()} string.</br>
- * </br>
- * This class is a shortcut for implementing an {@link IHandler} and in the
- * {@link IHandler#execute(ExecutionEvent)} method get the Command by calling:
- * {@code (Command)event.getObjectParameterForExecution(LSPCommandHandler.LSP_COMMAND_PARAMETER_ID)} and
- * {@code (IPath)event.getObjectParameterForExecution(LSPCommandHandler.LSP_PATH_PARAMETER_ID)}.
- */
-public abstract class LSPCommandHandler extends AbstractHandler {
-
-	/**
-	 * ID of the {@link Command} parameter in a handled {@link ExecutionEvent}. Can
-	 * be used to access a Command via
-	 * {@link ExecutionEvent#getObjectParameterForExecution(String)}.
-	 */
-	public static final String LSP_COMMAND_PARAMETER_ID = "org.eclipse.lsp4e.command.param"; //$NON-NLS-1$
-
-	/**
-	 * ID of the {@link IPath} parameter in a handled {@linkplain ExecutionEvent}.
-	 * Can be used to access the
-	 * {@link ExecutionEvent#getObjectParameterForExecution(String)}.
-	 */
-	public static final String LSP_PATH_PARAMETER_ID = "org.eclipse.lsp4e.path.param"; //$NON-NLS-1$
-
-	@Override
-	public final Object execute(ExecutionEvent event) throws ExecutionException {
-		Command command = (Command) event.getObjectParameterForExecution(LSP_COMMAND_PARAMETER_ID);
-		if (command == null) {
-			return null;
-		}
-		IPath path = (IPath) event.getObjectParameterForExecution(LSP_PATH_PARAMETER_ID);
-		if (path == null) {
-			return null;
-		}
-		return execute(event, command, path);
-	}
-
-	/**
-	 * Can be overridden to execute {@code Command}s on the client side.
-	 *
-	 * @param event
-	 *            An event containing all the information about the current state of
-	 *            the application; must not be null.
-	 * @param command
-	 *            The Command to be executed on client side.
-	 * @param path
-	 *            The path to a resource that is the context for the command to be
-	 *            executed. This can either be a resource in the workspace or a file
-	 *            system path.
-	 * @return The result of the execution. Reserved for future use, must be null.
-	 * @throws ExecutionException
-	 *             if an exception occurred during execution.
-	 */
-	public abstract Object execute(ExecutionEvent event, @NonNull Command command, IPath path)
-			throws ExecutionException;
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/internal/CommandConverter.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/internal/CommandConverter.java
deleted file mode 100644
index 16c5a0b..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/internal/CommandConverter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Fraunhofer FOKUS and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.command.internal;
-
-import org.eclipse.core.commands.AbstractParameterValueConverter;
-import org.eclipse.core.commands.ParameterValueConversionException;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.lsp4j.Command;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-/**
- * This converter can be used to serialize/deserailize instances of LSP {@link Command}s.
- */
-public class CommandConverter extends AbstractParameterValueConverter {
-
-	private final Gson gson;
-
-	public CommandConverter() {
-		this.gson = new GsonBuilder().create();
-	}
-
-	@Override
-	public @Nullable Object convertToObject(String parameterValue) throws ParameterValueConversionException {
-		return gson.fromJson(parameterValue, Command.class);
-	}
-
-	@Override
-	public String convertToString(Object parameterValue) throws ParameterValueConversionException {
-		return gson.toJson(parameterValue);
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/internal/CommandEventParameter.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/internal/CommandEventParameter.java
deleted file mode 100644
index 14ce534..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/internal/CommandEventParameter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Fraunhofer FOKUS and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.command.internal;
-
-import java.util.Collections;
-
-import org.eclipse.core.commands.IParameter;
-import org.eclipse.core.commands.IParameterValues;
-import org.eclipse.core.commands.ITypedParameter;
-import org.eclipse.core.commands.ParameterType;
-import org.eclipse.core.commands.ParameterValuesException;
-
-/**
- * This parameter class is needed for defining an Eclipse command (a handler can
- * be registered for) for an LSP Command.
- */
-public class CommandEventParameter implements IParameter, ITypedParameter {
-
-	private final ParameterType paramType;
-	private final String name;
-	private String id;
-
-	public CommandEventParameter(ParameterType paramType, String name, String id) {
-		super();
-		this.paramType = paramType;
-		this.name = name;
-		this.id = id;
-	}
-
-	@Override
-	public ParameterType getParameterType() {
-		return paramType;
-	}
-
-	@Override
-	public String getId() {
-		return id;
-	}
-
-	@Override
-	public String getName() {
-		return name;
-	}
-
-	@Override
-	public IParameterValues getValues() throws ParameterValuesException {
-		return Collections::emptyMap;
-	}
-
-	@Override
-	public boolean isOptional() {
-		return false;
-	}
-
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/internal/PathConverter.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/internal/PathConverter.java
deleted file mode 100644
index a0646dc..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/command/internal/PathConverter.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Fraunhofer FOKUS and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.command.internal;
-
-import java.util.Objects;
-
-import org.eclipse.core.commands.AbstractParameterValueConverter;
-import org.eclipse.core.commands.ParameterValueConversionException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-
-/**
- * Serializes {@link IPath} instances and de-serializes them to {@link Path} instances.
- */
-public class PathConverter extends AbstractParameterValueConverter {
-
-	@Override
-	public Object convertToObject(String parameterValue) throws ParameterValueConversionException {
-		return new Path(parameterValue);
-	}
-
-	@Override
-	public String convertToString(Object parameterValue) throws ParameterValueConversionException {
-		return Objects.toString(parameterValue);
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/enablement/EnablementTester.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/enablement/EnablementTester.java
deleted file mode 100644
index b29a9c1..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/enablement/EnablementTester.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018, 2020 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Rastislav Wagner (Red Hat Inc.) - initial implementation
- *  Alexander Fedorov (ArSysOp) - added parent context to evaluation
- *******************************************************************************/
-package org.eclipse.lsp4e.enablement;
-
-import java.util.function.Supplier;
-
-import org.eclipse.core.expressions.EvaluationContext;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-
-/**
- * Represents enabledWhen element from plugin.xml
- *
- * @author rawagner
- *
- */
-public final class EnablementTester {
-
-	private final Expression expression;
-	private final String description;
-	private final Supplier<IEvaluationContext> parent;
-
-	public EnablementTester(Expression expression, String description) {
-		this(() -> null, expression, description);
-	}
-
-	public EnablementTester(Supplier<IEvaluationContext> parent, Expression expression, String description) {
-		this.description = description;
-		this.expression = expression;
-		this.parent = parent;
-	}
-
-	/**
-	 *
-	 * @return enablement test description
-	 */
-	public String getDescription() {
-		return description;
-	}
-
-	/**
-	 * Evaluates enablement expression
-	 *
-	 * @return true if expression evaluates to true, false otherwise
-	 */
-	public boolean evaluate() {
-		try {
-			EvaluationContext context = new EvaluationContext(parent.get(), new Object());
-			context.setAllowPluginActivation(true);
-			return expression.evaluate(context).equals(EvaluationResult.TRUE);
-		} catch (CoreException e) {
-			LanguageServerPlugin.logError("Error occured during evaluation of enablement expression", e); //$NON-NLS-1$
-		}
-		return false;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/CodeActionCompletionProposal.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/CodeActionCompletionProposal.java
deleted file mode 100644
index 9c2e739..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/CodeActionCompletionProposal.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Andrew Obuchowicz (Red Hat Inc.)
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.codeactions;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.contentassist.ContextInformation;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.contentassist.IContextInformation;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.lsp4j.CodeAction;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.ExecuteCommandOptions;
-import org.eclipse.lsp4j.ExecuteCommandParams;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-
-public class CodeActionCompletionProposal implements ICompletionProposal {
-
-	private CodeAction fcodeAction;
-	private Command fcommand;
-	private String fdisplayString;
-	private LSPDocumentInfo finfo;
-
-	public CodeActionCompletionProposal(Either<Command, CodeAction> command, LSPDocumentInfo info) {
-		this.finfo = info;
-		if (command.isLeft()) {
-			fcommand = command.getLeft();
-			fdisplayString = fcommand.getTitle();
-		} else if (command.isRight()) {
-			fcodeAction = command.getRight();
-			fdisplayString = fcodeAction.getTitle();
-		}
-	}
-
-	@Override
-	public void apply(IDocument document) {
-		if (fcodeAction != null) {
-			if (fcodeAction.getEdit() != null) {
-				LSPEclipseUtils.applyWorkspaceEdit(fcodeAction.getEdit());
-			}
-			if (fcodeAction.getCommand() != null) {
-				executeCommand(fcodeAction.getCommand());
-			}
-
-		} else if (fcommand != null) {
-			executeCommand(fcommand);
-		} else {
-			// Should never get here
-		}
-	}
-
-	@Override
-	public Point getSelection(IDocument document) {
-		return null;
-	}
-
-	@Override
-	public String getAdditionalProposalInfo() {
-		return ""; //$NON-NLS-1$
-	}
-
-	@Override
-	public String getDisplayString() {
-		return this.fdisplayString;
-	}
-
-	@Override
-	public Image getImage() {
-		return null;
-	}
-
-	@Override
-	public IContextInformation getContextInformation() {
-		return new ContextInformation("some context display string", "some information display string"); //$NON-NLS-1$//$NON-NLS-2$
-	}
-
-	private void executeCommand(Command command) {
-		ServerCapabilities capabilities = this.finfo.getCapabilites();
-		if (capabilities != null) {
-			ExecuteCommandOptions provider = capabilities.getExecuteCommandProvider();
-			if (provider != null && provider.getCommands().contains(command.getCommand())) {
-				ExecuteCommandParams params = new ExecuteCommandParams();
-				params.setCommand(command.getCommand());
-				params.setArguments(command.getArguments());
-				this.finfo.getInitializedLanguageClient()
-						.thenAcceptAsync(ls -> ls.getWorkspaceService().executeCommand(params));
-			}
-		}
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/CodeActionMarkerResolution.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/CodeActionMarkerResolution.java
deleted file mode 100644
index 165daef..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/CodeActionMarkerResolution.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Max Bureck (Fraunhofer FOKUS) - integeration with CommandExecutor
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.codeactions;
-
-import java.util.Arrays;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.command.CommandExecutor;
-import org.eclipse.lsp4e.operations.diagnostics.LSPDiagnosticsToMarkers;
-import org.eclipse.lsp4j.CodeAction;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IMarkerResolution;
-import org.eclipse.ui.views.markers.WorkbenchMarkerResolution;
-
-public class CodeActionMarkerResolution extends WorkbenchMarkerResolution implements IMarkerResolution {
-
-	private CodeAction codeAction;
-
-	public CodeActionMarkerResolution(CodeAction codeAction) {
-		this.codeAction = codeAction;
-	}
-
-	@Override
-	public String getDescription() {
-		return codeAction.getTitle();
-	}
-
-	@Override
-	public Image getImage() {
-		return null;
-	}
-
-	@Override
-	public String getLabel() {
-		return codeAction.getTitle();
-	}
-
-	@Override
-	public void run(IMarker marker) {
-		if (codeAction.getEdit() != null) {
-			LSPEclipseUtils.applyWorkspaceEdit(codeAction.getEdit());
-		}
-		if (codeAction.getCommand() != null) {
-			IResource resource = marker.getResource();
-			IDocument document = LSPEclipseUtils.getDocument(resource);
-			if (document != null) {
-				String languageServerId = marker.getAttribute(LSPDiagnosticsToMarkers.LANGUAGE_SERVER_ID, null);
-				CommandExecutor.executeCommand(codeAction.getCommand(), document, languageServerId);
-			}
-		}
-	}
-
-	@Override
-	public IMarker[] findOtherMarkers(IMarker[] markers) {
-		if (markers == null) {
-			return new IMarker[0];
-		}
-		return Arrays.stream(markers).filter(marker -> {
-			try {
-				return codeAction.getDiagnostics()
-						.contains(marker.getAttribute(LSPDiagnosticsToMarkers.LSP_DIAGNOSTIC));
-			} catch (CoreException e) {
-				LanguageServerPlugin.logError(e);
-				return false;
-			}
-		}).toArray(IMarker[]::new);
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/CommandMarkerResolution.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/CommandMarkerResolution.java
deleted file mode 100644
index 9aa0755..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/CommandMarkerResolution.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Max Bureck (Fraunhofer FOKUS) - Moved command execution to CommandExecutor
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.codeactions;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.command.CommandExecutor;
-import org.eclipse.lsp4e.operations.diagnostics.LSPDiagnosticsToMarkers;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IMarkerResolution;
-import org.eclipse.ui.views.markers.WorkbenchMarkerResolution;
-
-public class CommandMarkerResolution extends WorkbenchMarkerResolution implements IMarkerResolution {
-
-	private @NonNull Command command;
-
-	public CommandMarkerResolution(@NonNull Command command) {
-		this.command = command;
-	}
-
-	@Override
-	public String getLabel() {
-		return this.command.getTitle();
-	}
-
-	@Override
-	public void run(IMarker marker) {
-		IResource resource = marker.getResource();
-		IDocument document = LSPEclipseUtils.getDocument(resource);
-		String languageServerId = marker.getAttribute(LSPDiagnosticsToMarkers.LANGUAGE_SERVER_ID, null);
-		if(document != null) {
-			CommandExecutor.executeCommand(command, document, languageServerId);
-		}
-	}
-
-	@Override
-	public String getDescription() {
-		return command.getTitle();
-	}
-
-	@Override
-	public Image getImage() {
-		return null;
-	}
-
-	@Override
-	public IMarker[] findOtherMarkers(IMarker[] markers) {
-		return new IMarker[0];
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/LSPCodeActionMarkerResolution.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/LSPCodeActionMarkerResolution.java
deleted file mode 100644
index eb07fd5..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/LSPCodeActionMarkerResolution.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016-2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.codeactions;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServersRegistry;
-import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.operations.diagnostics.LSPDiagnosticsToMarkers;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.lsp4j.CodeAction;
-import org.eclipse.lsp4j.CodeActionContext;
-import org.eclipse.lsp4j.CodeActionOptions;
-import org.eclipse.lsp4j.CodeActionParams;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.Diagnostic;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IMarkerResolution;
-import org.eclipse.ui.IMarkerResolution2;
-import org.eclipse.ui.IMarkerResolutionGenerator2;
-import org.eclipse.ui.internal.progress.ProgressInfoItem;
-
-public class LSPCodeActionMarkerResolution implements IMarkerResolutionGenerator2 {
-
-	private static final String LSP_REMEDIATION = "lspCodeActions"; //$NON-NLS-1$
-
-	private static final IMarkerResolution2 COMPUTING = new IMarkerResolution2() {
-
-		@Override
-		public void run(IMarker marker) {
-			// join on Future?
-		}
-
-		@Override
-		public String getLabel() {
-			return Messages.computing;
-		}
-
-		@Override
-		public Image getImage() {
-			// load class so image is loaded
-			return JFaceResources.getImage(ProgressInfoItem.class.getPackage().getName() + ".PROGRESS_DEFAULT"); //$NON-NLS-1$
-		}
-
-		@Override
-		public String getDescription() {
-			return Messages.computing;
-		}
-	};
-
-	@Override
-	public IMarkerResolution[] getResolutions(IMarker marker) {
-		Object att;
-		try {
-			checkMarkerResoultion(marker);
-			att = marker.getAttribute(LSP_REMEDIATION);
-		} catch (IOException | CoreException | ExecutionException | TimeoutException e) {
-			LanguageServerPlugin.logError(e);
-			return new IMarkerResolution[0];
-		} catch (InterruptedException e) {
-			LanguageServerPlugin.logError(e);
-			Thread.currentThread().interrupt();
-			return new IMarkerResolution[0];
-		}
-		if (att == COMPUTING) {
-			return new IMarkerResolution[] { COMPUTING };
-		}
-		List<Either<Command, CodeAction>> commands = (List<Either<Command, CodeAction>>) att;
-		if (commands == null) {
-			return new IMarkerResolution[0];
-		}
-		List<IMarkerResolution> res = new ArrayList<>(commands.size());
-		for (Either<Command, CodeAction> command : commands) {
-			if (command != null) {
-				if (command.isLeft()) {
-					res.add(new CommandMarkerResolution(command.getLeft()));
-				} else {
-					res.add(new CodeActionMarkerResolution(command.getRight()));
-				}
-			}
-		}
-		return res.toArray(new IMarkerResolution[res.size()]);
-	}
-
-	private void checkMarkerResoultion(IMarker marker) throws IOException, CoreException, InterruptedException, ExecutionException, TimeoutException {
-		if (marker.getAttribute(LSP_REMEDIATION) == null) {
-			IResource res = marker.getResource();
-			if (res != null && res.getType() == IResource.FILE) {
-				IFile file = (IFile)res;
-				String languageServerId = marker.getAttribute(LSPDiagnosticsToMarkers.LANGUAGE_SERVER_ID, null);
-				List<CompletableFuture<LanguageServer>> languageServerFutures = new ArrayList<>();
-				if (languageServerId != null) { // try to use same LS as the one that created the marker
-					LanguageServerDefinition definition = LanguageServersRegistry.getInstance().getDefinition(languageServerId);
-					if (definition != null) {
-						CompletableFuture<LanguageServer> serverFuture = LanguageServiceAccessor
-								.getInitializedLanguageServer(file, definition,
-										serverCapabilities -> serverCapabilities == null
-												|| providesCodeActions(serverCapabilities));
-						if (serverFuture != null) {
-							languageServerFutures.add(serverFuture);
-						}
-					}
-				}
-				if (languageServerFutures.isEmpty()) { // if it's not there, try any other server
-					languageServerFutures.addAll(LanguageServiceAccessor.getInitializedLanguageServers(file,
-							capabilities -> {
-								Either<Boolean, CodeActionOptions> codeActionProvider = capabilities
-										.getCodeActionProvider();
-								if (codeActionProvider == null) {
-									return false;
-								} else if (codeActionProvider.isLeft()) {
-									return Boolean.TRUE.equals(codeActionProvider.getLeft());
-								} else if (codeActionProvider.isRight()) {
-									return true;
-								}
-								return false;
-							}));
-				}
-				List<CompletableFuture<?>> futures = new ArrayList<>();
-				for (CompletableFuture<LanguageServer> lsf : languageServerFutures) {
-					marker.setAttribute(LSP_REMEDIATION, COMPUTING);
-					Diagnostic diagnostic = (Diagnostic)marker.getAttribute(LSPDiagnosticsToMarkers.LSP_DIAGNOSTIC);
-					CodeActionContext context = new CodeActionContext(Collections.singletonList(diagnostic));
-					CodeActionParams params = new CodeActionParams();
-					params.setContext(context);
-					params.setTextDocument(new TextDocumentIdentifier(LSPEclipseUtils.toUri(marker.getResource()).toString()));
-					params.setRange(diagnostic.getRange());
-					CompletableFuture<List<Either<Command, CodeAction>>> codeAction = lsf
-							.thenComposeAsync(ls -> ls.getTextDocumentService().codeAction(params));
-					futures.add(codeAction);
-					codeAction.thenAcceptAsync(actions -> {
-						try {
-							marker.setAttribute(LSP_REMEDIATION, actions);
-						} catch (CoreException e) {
-							LanguageServerPlugin.logError(e);
-						}
-					});
-				}
-				// wait a bit to avoid showing too much "Computing" without looking like a freeze
-				CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()])).get(300, TimeUnit.MILLISECONDS);
-			}
-		}
-	}
-
-	static boolean providesCodeActions(@NonNull ServerCapabilities serverCapabilities) {
-		Either<Boolean, CodeActionOptions> codeActionProvider = serverCapabilities.getCodeActionProvider();
-		if (codeActionProvider == null) {
-			return false;
-		}
-		if (codeActionProvider.isLeft()) {
-			return codeActionProvider.getLeft() != null && codeActionProvider.getLeft();
-		}
-		if (codeActionProvider.isRight()) {
-			return codeActionProvider.getRight() != null;
-		}
-		return false;
-	}
-
-	@Override
-	public boolean hasResolutions(IMarker marker) {
-		try {
-			checkMarkerResoultion(marker);
-			Object remediation = marker.getAttribute(LSP_REMEDIATION);
-			return remediation == COMPUTING || (remediation instanceof Collection && !((Collection<?>)remediation).isEmpty());
-		} catch (Exception ex) {
-			LanguageServerPlugin.logError(ex);
-		}
-		return false;
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/LSPCodeActionQuickAssistProcessor.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/LSPCodeActionQuickAssistProcessor.java
deleted file mode 100644
index 40e66b9..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/LSPCodeActionQuickAssistProcessor.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Andrew Obuchowicz (Red Hat Inc.)
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.codeactions;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.stream.Collectors;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.text.contentassist.CompletionProposal;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.contentassist.IContextInformation;
-import org.eclipse.jface.text.quickassist.IQuickAssistInvocationContext;
-import org.eclipse.jface.text.quickassist.IQuickAssistProcessor;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.lsp4j.CodeAction;
-import org.eclipse.lsp4j.CodeActionContext;
-import org.eclipse.lsp4j.CodeActionParams;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.internal.progress.ProgressInfoItem;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-public class LSPCodeActionQuickAssistProcessor implements IQuickAssistProcessor {
-
-	private List<LSPDocumentInfo> infos;
-	private Range range;
-	List<ICompletionProposal> proposals = Collections.synchronizedList(new ArrayList<>());
-
-	private static final ICompletionProposal COMPUTING = new ICompletionProposal() {
-
-		@Override
-		public void apply(IDocument document) {
-			// Placeholder proposal so nothing to do here
-		}
-
-		@Override
-		public Point getSelection(IDocument document) {
-			return null;
-		}
-
-		@Override
-		public String getAdditionalProposalInfo() {
-			return null;
-		}
-
-		@Override
-		public String getDisplayString() {
-			return Messages.computing;
-		}
-
-		@Override
-		public Image getImage() {
-			return JFaceResources.getImage(ProgressInfoItem.class.getPackage().getName() + ".PROGRESS_DEFAULT"); //$NON-NLS-1$
-		}
-
-		@Override
-		public IContextInformation getContextInformation() {
-			return null;
-		}
-
-	};
-
-	CompletionProposal[] NO_PROPOSALS = {};
-
-	@Override
-	public String getErrorMessage() {
-		return "CodeActions not implemented on this Language Server"; //$NON-NLS-1$
-	}
-
-	@Override
-	public boolean canFix(Annotation annotation) {
-		return true;
-	}
-
-	@Override
-	public boolean canAssist(IQuickAssistInvocationContext invocationContext) {
-		if (this.infos == null || this.infos.isEmpty()) {
-			infos = getLSPDocumentInfos();
-			if (infos.isEmpty()) {
-				return false;
-			}
-		}
-
-		CodeActionParams params = prepareCodeActionParams(infos);
-		List<Either<Command, CodeAction>> possibleProposals = Collections.synchronizedList(new ArrayList<>());
-		List<CompletableFuture<Void>> futures = infos.stream()
-				.map(info -> info.getInitializedLanguageClient()
-						.thenComposeAsync(ls -> ls.getTextDocumentService().codeAction(params).thenAcceptAsync(
-								actions -> actions.stream().filter(Objects::nonNull).forEach(possibleProposals::add))))
-				.collect(Collectors.toList());
-
-		CompletableFuture<?> aggregateFutures = CompletableFuture
-				.allOf(futures.toArray(new CompletableFuture[futures.size()]));
-		try {
-			aggregateFutures.get(200, TimeUnit.MILLISECONDS);
-			if (possibleProposals.isEmpty()) {
-				return false;
-			}
-		} catch (InterruptedException | ExecutionException | TimeoutException e) {
-			LanguageServerPlugin.logError(e);
-			return false;
-		}
-
-		return true;
-	}
-
-	@Override
-	public ICompletionProposal[] computeQuickAssistProposals(IQuickAssistInvocationContext invocationContext) {
-		if (this.infos == null || this.infos.isEmpty()) {
-			infos = getLSPDocumentInfos();
-			if (infos.isEmpty()) {
-				return NO_PROPOSALS;
-			}
-		}
-
-		// Get the codeActions
-		CodeActionParams params = prepareCodeActionParams(this.infos);
-		List<CompletableFuture<Void>> futures = Collections.emptyList();
-		try {
-			// Prevent infinite recursion by only computing proposals if there aren't any
-			if (proposals.contains(COMPUTING) || proposals.isEmpty()) {
-				proposals.clear();
-				futures = infos.stream()
-						.map(info -> info.getInitializedLanguageClient()
-								.thenComposeAsync(ls -> ls.getTextDocumentService().codeAction(params)
-										.thenAcceptAsync(actions -> actions.stream().filter(Objects::nonNull)
-												.map(action -> new CodeActionCompletionProposal(action, info))
-												.forEach(proposals::add))))
-								.collect(Collectors.toList());
-
-				CompletableFuture<?> aggregateFutures = CompletableFuture
-						.allOf(futures.toArray(new CompletableFuture[futures.size()]));
-				aggregateFutures.get(200, TimeUnit.MILLISECONDS);
-			}
-		} catch (InterruptedException | ExecutionException e) {
-			LanguageServerPlugin.logError(e);
-		} catch (TimeoutException e) {
-			for (CompletableFuture<Void> future : futures) {
-				future.whenComplete((r, t) -> this.refreshProposals(invocationContext));
-			}
-			proposals.add(COMPUTING);
-		}
-
-		return proposals.toArray(new ICompletionProposal[proposals.size()]);
-	}
-
-	private List<LSPDocumentInfo> getLSPDocumentInfos() {
-		IEditorPart editor = LSPEclipseUtils.getActiveTextEditor();
-		if (editor != null) {
-			ITextEditor textEditor = (ITextEditor) editor;
-			IDocument document = LSPEclipseUtils.getDocument(textEditor);
-			if (document == null) {
-				return Collections.emptyList();
-			}
-			infos = LanguageServiceAccessor.getLSPDocumentInfosFor(document,
-					LSPCodeActionMarkerResolution::providesCodeActions);
-			ITextSelection selection = (ITextSelection) textEditor.getSelectionProvider().getSelection();
-			try {
-				this.range = new Range(LSPEclipseUtils.toPosition(selection.getOffset(), document),
-						LSPEclipseUtils.toPosition(selection.getOffset() + selection.getLength(), document));
-			} catch (BadLocationException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		}
-		return infos;
-	}
-
-	/**
-	 * Reinvokes the quickAssist in order to refresh the list of completion
-	 * proposals
-	 *
-	 * @param invocationContext
-	 *            The invocation context
-	 */
-	private void refreshProposals(IQuickAssistInvocationContext invocationContext) {
-		invocationContext.getSourceViewer().getTextWidget().getDisplay().asyncExec(() -> invocationContext
-				.getSourceViewer().getTextOperationTarget().doOperation(ISourceViewer.QUICK_ASSIST));
-	}
-
-	private CodeActionParams prepareCodeActionParams(List<LSPDocumentInfo> infos) {
-		CodeActionContext context = new CodeActionContext(Collections.emptyList());
-		CodeActionParams params = new CodeActionParams();
-		params.setTextDocument(new TextDocumentIdentifier(infos.get(0).getFileUri().toString()));
-		params.setRange(this.range);
-		params.setContext(context);
-		return params;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/LSPCodeActionsMenu.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/LSPCodeActionsMenu.java
deleted file mode 100644
index 3b02adb..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codeactions/LSPCodeActionsMenu.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Lucas Bullen (Red Hat Inc.) - [Bug 517428] Requests sent before initialization
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.codeactions;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.lsp4j.CodeAction;
-import org.eclipse.lsp4j.CodeActionContext;
-import org.eclipse.lsp4j.CodeActionParams;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.ExecuteCommandOptions;
-import org.eclipse.lsp4j.ExecuteCommandParams;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.menus.IWorkbenchContribution;
-import org.eclipse.ui.progress.UIJob;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-public class LSPCodeActionsMenu extends ContributionItem implements IWorkbenchContribution {
-
-	private List<LSPDocumentInfo> infos;
-	private Range range;
-
-	@Override
-	public void initialize(IServiceLocator serviceLocator) {
-		IEditorPart editor = LSPEclipseUtils.getActiveTextEditor();
-		if (editor != null) {
-			ITextEditor textEditor = (ITextEditor) editor;
-			IDocument document = LSPEclipseUtils.getDocument(textEditor);
-			if (document == null) {
-				return;
-			}
-			infos = LanguageServiceAccessor.getLSPDocumentInfosFor(document,
-					LSPCodeActionMarkerResolution::providesCodeActions);
-			ITextSelection selection = (ITextSelection) textEditor.getSelectionProvider().getSelection();
-			try {
-				this.range = new Range(LSPEclipseUtils.toPosition(selection.getOffset(), document),
-						LSPEclipseUtils.toPosition(selection.getOffset() + selection.getLength(), document));
-			} catch (BadLocationException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		}
-	}
-
-	@Override
-	public void fill(final Menu menu, int index) {
-		final MenuItem item = new MenuItem(menu, SWT.NONE, index);
-		item.setEnabled(false);
-		if (infos.isEmpty()) {
-			item.setText(Messages.notImplemented);
-			return;
-		}
-
-		item.setText(Messages.computing);
-		CodeActionContext context = new CodeActionContext(Collections.emptyList());
-		CodeActionParams params = new CodeActionParams();
-		params.setTextDocument(new TextDocumentIdentifier(infos.get(0).getFileUri().toString()));
-		params.setRange(this.range);
-		params.setContext(context);
-		Set<CompletableFuture<?>> runningFutures = new HashSet<>();
-		for (LSPDocumentInfo info : this.infos) {
-			final CompletableFuture<List<Either<Command, CodeAction>>> codeActions = info.getInitializedLanguageClient()
-					.thenComposeAsync(languageServer -> languageServer.getTextDocumentService().codeAction(params));
-			runningFutures.add(codeActions);
-			codeActions.whenComplete((t, u) -> {
-				runningFutures.remove(codeActions);
-				UIJob job = new UIJob(menu.getDisplay(), Messages.updateCodeActions_menu) {
-					@Override
-					public IStatus runInUIThread(IProgressMonitor monitor) {
-						if (u != null) {
-							final MenuItem item = new MenuItem(menu, SWT.NONE, index);
-							item.setText(u.getMessage());
-							item.setImage(PlatformUI.getWorkbench().getSharedImages()
-									.getImage(ISharedImages.IMG_DEC_FIELD_ERROR));
-							item.setEnabled(false);
-						} else if (t != null) {
-							for (Either<Command, CodeAction> command : t) {
-								if (command != null) {
-									if (command.isLeft()) {
-										final MenuItem item = new MenuItem(menu, SWT.NONE, index);
-										item.setText(command.getLeft().getTitle());
-										item.addSelectionListener(new SelectionAdapter() {
-											@Override
-											public void widgetSelected(SelectionEvent e) {
-												executeCommand(info, command.getLeft());
-											}
-										});
-									} else if (command.isRight()) {
-										CodeAction codeAction = command.getRight();
-										final MenuItem item = new MenuItem(menu, SWT.NONE, index);
-										item.setText(codeAction.getTitle());
-										item.addSelectionListener(new SelectionAdapter() {
-											@Override
-											public void widgetSelected(SelectionEvent e) {
-												if (codeAction.getEdit() != null) {
-													LSPEclipseUtils.applyWorkspaceEdit(codeAction.getEdit());
-												}
-												if (codeAction.getCommand() != null) {
-													executeCommand(info, codeAction.getCommand());
-												}
-											}
-										});
-									}
-								}
-							}
-						}
-						if (menu.getItemCount() == 1) {
-							item.setText(Messages.codeActions_emptyMenu);
-						} else {
-							item.dispose();
-						}
-						return Status.OK_STATUS;
-					}
-				};
-				job.schedule();
-			});
-		}
-		super.fill(menu, index);
-	}
-
-	private void executeCommand(LSPDocumentInfo info, Command command) {
-		ServerCapabilities capabilities = info.getCapabilites();
-		if (capabilities != null) {
-			ExecuteCommandOptions provider = capabilities.getExecuteCommandProvider();
-			if (provider != null && provider.getCommands().contains(command.getCommand())) {
-				ExecuteCommandParams params = new ExecuteCommandParams();
-				params.setCommand(command.getCommand());
-				params.setArguments(command.getArguments());
-				info.getInitializedLanguageClient()
-						.thenAcceptAsync(ls -> ls.getWorkspaceService().executeCommand(params));
-			}
-		}
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codelens/CodeLensProvider.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codelens/CodeLensProvider.java
deleted file mode 100644
index bac8833..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codelens/CodeLensProvider.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.codelens;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.codemining.AbstractCodeMiningProvider;
-import org.eclipse.jface.text.codemining.ICodeMining;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4j.CodeLens;
-import org.eclipse.lsp4j.CodeLensParams;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.services.LanguageServer;
-
-public class CodeLensProvider extends AbstractCodeMiningProvider {
-
-	private CompletableFuture<List<? extends ICodeMining>> provideCodeMinings(@NonNull IDocument document) {
-		URI docURI = LSPEclipseUtils.toUri(document);
-		if (docURI != null) {
-			CodeLensParams param = new CodeLensParams(new TextDocumentIdentifier(docURI.toString()));
-			List<LSPCodeMining> codeLensResults = Collections.synchronizedList(new ArrayList<>());
-			return LanguageServiceAccessor
-					.getLanguageServers(document, capabilities -> capabilities.getCodeLensProvider() != null)
-					.thenComposeAsync(languageServers -> CompletableFuture.allOf(languageServers.stream()
-							.map(languageServer -> languageServer.getTextDocumentService().codeLens(param)
-									.thenAcceptAsync(codeLenses -> {
-										// textDocument/codeLens may return null
-										if (codeLenses != null) {
-											codeLenses.stream().filter(Objects::nonNull)
-													.map(codeLens -> toCodeMining(document, languageServer, codeLens))
-													.filter(Objects::nonNull).forEach(codeLensResults::add);
-										}
-									}))
-							.toArray(CompletableFuture[]::new)))
-					.thenApplyAsync(theVoid -> codeLensResults);
-		}
-		else {
-			return null;
-		}
-	}
-
-	private LSPCodeMining toCodeMining(IDocument document, LanguageServer languageServer, CodeLens codeLens) {
-		try {
-			return new LSPCodeMining(codeLens, document, languageServer, LanguageServiceAccessor.resolveServerDefinition(languageServer).orElse(null), CodeLensProvider.this);
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-			return null;
-		}
-	}
-
-	@Override
-	public CompletableFuture<List<? extends ICodeMining>> provideCodeMinings(ITextViewer viewer,
-			IProgressMonitor monitor) {
-		IDocument document = viewer.getDocument();
-		return document != null ? provideCodeMinings(document) : null;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codelens/LSPCodeMining.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codelens/LSPCodeMining.java
deleted file mode 100644
index 689f3cb..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/codelens/LSPCodeMining.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.codelens;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.function.Consumer;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.codemining.LineHeaderCodeMining;
-import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.command.CommandExecutor;
-import org.eclipse.lsp4j.CodeLens;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.events.MouseEvent;
-
-public class LSPCodeMining extends LineHeaderCodeMining {
-	private CodeLens codeLens;
-	private final LanguageServer languageServer;
-	private final LanguageServerDefinition languageServerDefinition;
-	private final @Nullable IDocument document;
-
-	public LSPCodeMining(CodeLens codeLens, IDocument document, LanguageServer languageServer, LanguageServerDefinition languageServerDefinition,
-			CodeLensProvider provider) throws BadLocationException {
-		super(codeLens.getRange().getStart().getLine(), document, provider, null);
-		this.codeLens = codeLens;
-		this.languageServer = languageServer;
-		this.languageServerDefinition = languageServerDefinition;
-		this.document = document;
-		setLabel(getCodeLensString(codeLens));
-	}
-
-	protected static @Nullable String getCodeLensString(@NonNull CodeLens codeLens) {
-		Command command = codeLens.getCommand();
-		if (command == null || command.getTitle().isEmpty()) {
-			return null;
-		}
-		return command.getTitle();
-	}
-
-	@Override
-	protected CompletableFuture<Void> doResolve(ITextViewer viewer, IProgressMonitor monitor) {
-		if (!LanguageServiceAccessor.checkCapability(languageServer,
-				capabilites -> capabilites.getCodeLensProvider().getResolveProvider())) {
-			return CompletableFuture.completedFuture(null);
-		}
-		return languageServer.getTextDocumentService().resolveCodeLens(this.codeLens)
-				.thenAcceptAsync(resolvedCodeLens -> {
-					codeLens = resolvedCodeLens;
-					setLabel(getCodeLensString(resolvedCodeLens));
-				});
-	}
-
-	@Override
-	public final Consumer<MouseEvent> getAction() {
-		final Command command = codeLens.getCommand();
-		if(command != null && command.getCommand() != null) {
-			return this::performAction;
-		} else {
-			return null;
-		}
-	}
-
-	private void performAction(MouseEvent mouseEvent) {
-		IDocument document = this.document;
-		if(document != null) {
-			CommandExecutor.executeCommand(codeLens.getCommand(), document, languageServerDefinition.id);
-		}
-	}
-
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/color/ColorInformationMining.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/color/ColorInformationMining.java
deleted file mode 100644
index 3f1e0c6..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/color/ColorInformationMining.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Angelo Zerr and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Angelo Zerr <angelo.zerr@gmail.com> - [code mining] Support 'textDocument/documentColor' with CodeMining - Bug 533322
- */
-package org.eclipse.lsp4e.operations.color;
-
-import java.util.function.Consumer;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.codemining.LineContentCodeMining;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4j.ColorInformation;
-import org.eclipse.lsp4j.ColorPresentationParams;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.RGBA;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.ColorDialog;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Draw the LSP color information with a colorized square.
- *
- */
-public class ColorInformationMining extends LineContentCodeMining {
-
-	private final RGBA rgba;
-	private final DocumentColorProvider colorProvider;
-
-	/**
-	 * Click on colorized square opens a color dialog to pick a color and update
-	 * text color declaration.
-	 *
-	 */
-	private static class UpdateColorWithDialog implements Consumer<MouseEvent> {
-
-		private final TextDocumentIdentifier textDocumentIdentifier;
-		private final ColorInformation colorInformation;
-		private final LanguageServer languageServer;
-		private final IDocument document;
-
-		public UpdateColorWithDialog(TextDocumentIdentifier textDocumentIdentifier, ColorInformation colorInformation,
-				LanguageServer languageServer, IDocument document) {
-			this.textDocumentIdentifier = textDocumentIdentifier;
-			this.colorInformation = colorInformation;
-			this.languageServer = languageServer;
-			this.document = document;
-		}
-
-		@Override
-		public void accept(MouseEvent event) {
-			StyledText styledText = (StyledText) event.widget;
-			Shell shell = new Shell(styledText.getDisplay());
-			Rectangle location = Geometry.toDisplay(styledText, new Rectangle(event.x, event.y, 1, 1));
-			shell.setLocation(location.x, location.y);
-			// Open color dialog
-			ColorDialog dialog = new ColorDialog(shell);
-			dialog.setRGB(LSPEclipseUtils.toRGBA(colorInformation.getColor()).rgb);
-			RGB rgb = dialog.open();
-			if (rgb != null) {
-				// get LSP color presentation list for the picked color
-				ColorPresentationParams params = new ColorPresentationParams(textDocumentIdentifier,
-						LSPEclipseUtils.toColor(rgb), colorInformation.getRange());
-				this.languageServer.getTextDocumentService().colorPresentation(params).thenAcceptAsync(presentations -> {
-					if (presentations.isEmpty()) {
-						return;
-					}
-					// As ColorDialog cannot be customized (to choose the color presentation (rgb,
-					// hexa, ....) we pick the first color presentation.
-					try {
-						TextEdit textEdit = presentations.get(0).getTextEdit();
-						LSPEclipseUtils.applyEdit(textEdit, document);
-					} catch (BadLocationException e) {
-						LanguageServerPlugin.logError(e);
-					}
-				});
-			}
-		}
-
-	}
-
-	public ColorInformationMining(ColorInformation colorInformation, @NonNull IDocument document,
-			TextDocumentIdentifier textDocumentIdentifier, LanguageServer languageServer,
-			DocumentColorProvider colorProvider) throws BadLocationException {
-		super(toPosition(colorInformation.getRange(), document), colorProvider,
-				new UpdateColorWithDialog(textDocumentIdentifier, colorInformation, languageServer, document));
-		this.rgba = LSPEclipseUtils.toRGBA(colorInformation.getColor());
-		this.colorProvider = colorProvider;
-		// set label with space to mark the mining as resolved.
-		super.setLabel(" "); //$NON-NLS-1$
-	}
-
-	@Override
-	public Point draw(GC gc, StyledText textWidget, Color color, int x, int y) {
-		FontMetrics fontMetrics = gc.getFontMetrics();
-		// Compute position and size of the color square
-		int size = getSquareSize(fontMetrics);
-		x += fontMetrics.getLeading();
-		y += fontMetrics.getDescent();
-		Rectangle rect = new Rectangle(x, y, size, size);
-		// Fill square
-		gc.setBackground(colorProvider.getColor(this.rgba, textWidget.getDisplay()));
-		gc.fillRectangle(rect);
-		// Draw square box
-		gc.setForeground(textWidget.getForeground());
-		gc.drawRectangle(rect);
-		return new Point(getSquareWidth(fontMetrics), size);
-	}
-
-	/**
-	 * Returns the colorized square size.
-	 *
-	 * @param fontMetrics
-	 * @return the colorized square size.
-	 */
-	private static int getSquareSize(FontMetrics fontMetrics) {
-		return fontMetrics.getHeight() - 2 * fontMetrics.getDescent();
-	}
-
-	/**
-	 * Compute width of square
-	 *
-	 * @param styledText
-	 * @return the width of square
-	 */
-	private static int getSquareWidth(FontMetrics fontMetrics) {
-		// width = 1 space + size width of square
-		int width = (int) fontMetrics.getAverageCharacterWidth() + getSquareSize(fontMetrics);
-		return width;
-	}
-
-	/**
-	 * Returns the Eclipse position from the given LSP range.
-	 *
-	 * @param range
-	 *                     the LSP range to convert
-	 * @param document
-	 * @return the Eclipse position from the given LSP range.
-	 * @throws BadLocationException
-	 */
-	private static Position toPosition(Range range, IDocument document) throws BadLocationException {
-		int start = LSPEclipseUtils.toOffset(range.getStart(), document);
-		int end = LSPEclipseUtils.toOffset(range.getEnd(), document);
-		return new Position(start, end - start);
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/color/DocumentColorProvider.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/color/DocumentColorProvider.java
deleted file mode 100644
index 443455e..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/color/DocumentColorProvider.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018, 2021 Angelo Zerr and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Angelo Zerr <angelo.zerr@gmail.com> - [code mining] Support 'textDocument/documentColor' with CodeMining - Bug 533322
- */
-package org.eclipse.lsp4e.operations.color;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.codemining.AbstractCodeMiningProvider;
-import org.eclipse.jface.text.codemining.ICodeMining;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4j.DocumentColorParams;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.RGBA;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * Consume the 'textDocument/documentColor' request to decorate color references
- * in the editor.
- *
- */
-public class DocumentColorProvider extends AbstractCodeMiningProvider {
-
-	private final Map<RGBA, Color> colorTable;
-
-	public DocumentColorProvider() {
-		colorTable = new HashMap<>();
-	}
-
-	private CompletableFuture<List<? extends ICodeMining>> provideCodeMinings(@NonNull IDocument document) {
-		URI docURI = LSPEclipseUtils.toUri(document);
-
-		if (docURI != null) {
-			TextDocumentIdentifier textDocumentIdentifier = new TextDocumentIdentifier(docURI.toString());
-			DocumentColorParams param = new DocumentColorParams(textDocumentIdentifier);
-			final List<ColorInformationMining> colorResults = Collections.synchronizedList(new ArrayList<>());
-			return LanguageServiceAccessor.getLanguageServers(document, DocumentColorProvider::isColorProvider)
-					.thenComposeAsync(languageServers -> CompletableFuture
-							.allOf(languageServers.stream().map(languageServer -> languageServer
-									.getTextDocumentService().documentColor(param).thenAcceptAsync(colors -> {
-										if (colors != null) {
-											colors.stream().filter(Objects::nonNull).map(color -> {
-												ColorInformationMining mining = null;
-												try {
-													mining = new ColorInformationMining(color, document,
-															textDocumentIdentifier, languageServer,
-															DocumentColorProvider.this);
-												} catch (BadLocationException e) {
-													LanguageServerPlugin.logError(e);
-												}
-												return mining;
-											}).filter(Objects::nonNull).forEach(colorResults::add);
-										}
-									})).toArray(CompletableFuture[]::new)))
-					.thenApplyAsync(theVoid -> colorResults);
-		} else {
-			return null;
-		}
-	}
-
-	@Override
-	public CompletableFuture<List<? extends ICodeMining>> provideCodeMinings(ITextViewer viewer,
-			IProgressMonitor monitor) {
-		IDocument document = viewer.getDocument();
-		return document != null ? provideCodeMinings(document) : null;
-	}
-
-	/**
-	 * Returns the color from the given rgba.
-	 *
-	 * @param rgba
-	 *            the rgba declaration
-	 * @param display
-	 *            the display to use to create a color instance
-	 * @return the color from the given rgba.
-	 */
-	public Color getColor(RGBA rgba, Display display) {
-		return colorTable.computeIfAbsent(rgba, key -> new Color(display, rgba));
-	}
-
-	private static boolean isColorProvider(ServerCapabilities capabilities) {
-		return capabilities.getColorProvider() != null
-				&& ((capabilities.getColorProvider().getLeft() != null && capabilities.getColorProvider().getLeft())
-						|| capabilities.getColorProvider().getRight() != null);
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/CompletionProposalTools.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/CompletionProposalTools.java
deleted file mode 100644
index b9c7197..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/CompletionProposalTools.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Lucas Bullen (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.completion;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-
-public final class CompletionProposalTools {
-
-	private CompletionProposalTools() {
-		// to avoid instances, requested by sonar
-	}
-
-	/**
-	 * The portion of the document leading up to the cursor that is being used as a
-	 * filter for requesting completion assist
-	 *
-	 * @param document
-	 * @param cursorOffset
-	 * @param completionItemFilter
-	 * @param completionInsertionOffset
-	 * @return The longest prefix to the current cursor position that is found
-	 *         within the completion's filter regardless of character spacing
-	 * @throws BadLocationException
-	 */
-	public static String getFilterFromDocument(IDocument document, int cursorOffset, String completionItemFilter,
-			int completionInsertionOffset) throws BadLocationException {
-		if (completionInsertionOffset >= cursorOffset) {
-			return ""; //$NON-NLS-1$
-		}
-		int prefixToCursorLength = cursorOffset - completionInsertionOffset;
-		String prefixToCursor = document.get(completionInsertionOffset, prefixToCursorLength);
-		int i;
-		for (i = 0; i < prefixToCursor.length(); i++) {
-			if (!isSubstringFoundOrderedInString(
-					prefixToCursor.substring(prefixToCursorLength - i - 1, prefixToCursorLength),
-					completionItemFilter)) {
-				break;
-			}
-		}
-		return prefixToCursor.substring(prefixToCursor.length() - i);
-	}
-
-	/**
-	 * If each of the character in the subString are within the given string in
-	 * order
-	 *
-	 * @param subString
-	 * @param string
-	 */
-	public static boolean isSubstringFoundOrderedInString(String subString, String string) {
-		int lastIndex = 0;
-		subString = subString.toLowerCase();
-		string = string.toLowerCase();
-		for (Character c : subString.toCharArray()) {
-			int index = string.indexOf(c, lastIndex);
-			if (index < 0) {
-				return false;
-			} else {
-				lastIndex = index + 1;
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Uses the document's filter and the completion's filter to decided which
-	 * category the match is.<br>
-	 * Category 1:<br>
-	 * The full completion filter is found within the document filter without a word
-	 * characters as it's prefix or suffix<br>
-	 * Category 2:<br>
-	 * The full completion filter is found within the document filter without a word
-	 * characters as it's prefix<br>
-	 * Category 3:<br>
-	 * The full completion filter is found within the document filter<br>
-	 * Category 4:<br>
-	 * {@link #isSubstringFoundOrderedInString(String, String)}(documentFilter, completionFilter) ==
-	 * true<br>
-	 * Category 5:<br>
-	 * Catch all case, usually when all the document's filter's characters are not
-	 * found within the completion filter
-	 *
-	 * @param documentFilter
-	 * @param completionFilter
-	 * @return the category integer
-	 */
-	public static int getCategoryOfFilterMatch(String documentFilter, String completionFilter) {
-		if (documentFilter.isEmpty()) {
-			return 5;
-		}
-		documentFilter = documentFilter.toLowerCase();
-		completionFilter = completionFilter.toLowerCase();
-		int subIndex = completionFilter.indexOf(documentFilter);
-		int topCategory = 5;
-		if (subIndex == -1) {
-			return isSubstringFoundOrderedInString(documentFilter, completionFilter) ? 4 : 5;
-		}
-		while (subIndex != -1) {
-			if (subIndex > 0 && Character.isLetterOrDigit(completionFilter.charAt(subIndex - 1))) {
-				topCategory = Math.min(topCategory, 3);
-			} else if (subIndex + documentFilter.length() < completionFilter.length() - 1
-					&& Character.isLetterOrDigit(completionFilter.charAt(subIndex + documentFilter.length() + 1))) {
-				topCategory = Math.min(topCategory, 2);
-			} else {
-				topCategory = 1;
-			}
-			if (topCategory == 1) {
-				break;
-			}
-			subIndex = completionFilter.indexOf(documentFilter, subIndex + 1);
-		}
-		return topCategory;
-	}
-
-	/**
-	 * Uses the document's filter and the completion's filter to decided how
-	 * successful the match is and gives it a score.<br>
-	 * The score is decided by the number of character that prefix each of the
-	 * document's filter's characters locations in the competion's filter excluding
-	 * document filter characters that follow other document filter characters.<br>
-	 * <br>
-	 * ex.<br>
-	 * documentFilter: abc<br>
-	 * completionFilter: xaxxbc<br>
-	 * result: 5<br>
-	 * logic:<br>
-	 * There is 1 character before the 'a' and there is 4 charachters before the
-	 * 'b', because the 'c' is directly after the 'b', it's prefix is ignored,<br>
-	 * 1+4=5
-	 *
-	 * @param documentFilter
-	 * @param completionFilter
-	 * @return score of the match where the lower the number, the better the score
-	 *         and -1 mean there was no match
-	 */
-	public static int getScoreOfFilterMatch(String documentFilter, String completionFilter) {
-		documentFilter = documentFilter.toLowerCase();
-		completionFilter = completionFilter.toLowerCase();
-		return getScoreOfFilterMatchHelper(0, documentFilter, completionFilter);
-	}
-
-	private static int getScoreOfFilterMatchHelper(int prefixLength, String documentFilter, String completionFilter) {
-		if (documentFilter == null || documentFilter.isEmpty()) {
-			return 0;
-		}
-		char searchChar = documentFilter.charAt(0);
-		int i = completionFilter.indexOf(searchChar);
-		if (i == -1) {
-			return -1;
-		}
-		if (documentFilter.length() == 1) {
-			return i + prefixLength;
-		}
-
-		int matchLength = lengthOfPrefixMatch(documentFilter, completionFilter.substring(i));
-		if (matchLength == documentFilter.length()) {
-			return i + prefixLength;
-		}
-		int bestScore = i + getScoreOfFilterMatchHelper(prefixLength + i + matchLength,
-				documentFilter.substring(matchLength),
-				completionFilter.substring(i + matchLength));
-
-		i = completionFilter.indexOf(searchChar, i + 1);
-		while (i != -1) {
-			matchLength = lengthOfPrefixMatch(documentFilter, completionFilter.substring(i));
-			if (matchLength == documentFilter.length()) {
-				return i + prefixLength;
-			}
-			int score = i + getScoreOfFilterMatchHelper(prefixLength + i + matchLength,
-					documentFilter.substring(matchLength),
-					completionFilter.substring(i + matchLength));
-			if (score == i - 1) {
-				break;
-			}
-			bestScore = Math.min(bestScore, score);
-			i = completionFilter.indexOf(searchChar, i + 1);
-		}
-		return prefixLength + bestScore;
-	}
-
-	private static int lengthOfPrefixMatch(String first, String second) {
-		int i;
-		for (i = 0; i < Math.min(first.length(), second.length()); i++) {
-			if (first.charAt(i) != second.charAt(i))
-				break;
-		}
-		return i;
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSCompletionProposal.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSCompletionProposal.java
deleted file mode 100644
index 5aad117..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSCompletionProposal.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Mickael Istria (Red Hat Inc.) - initial implementation
- *   Michał Niewrzał (Rogue Wave Software Inc.)
- *   Lucas Bullen (Red Hat Inc.) - Refactored for incomplete completion lists
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.completion;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.contentassist.ICompletionProposalExtension;
-import org.eclipse.jface.text.contentassist.ICompletionProposalExtension2;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4j.CompletionItem;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.SWT;
-
-public class LSCompletionProposal extends LSIncompleteCompletionProposal
-		implements ICompletionProposalExtension, ICompletionProposalExtension2 {
-
-	public LSCompletionProposal(IDocument document, int offset, @NonNull CompletionItem item,
-			LanguageServer languageServer) {
-		super(document, offset, item, languageServer);
-	}
-
-	@Override
-	public boolean isValidFor(IDocument document, int offset) {
-		return validate(document, offset, null);
-	}
-
-	@Override
-	public void selected(ITextViewer viewer, boolean smartToggle) {
-		this.viewer = viewer;
-	}
-
-	@Override
-	public void unselected(ITextViewer viewer) {
-	}
-
-	@Override
-	public boolean validate(IDocument document, int offset, DocumentEvent event) {
-		if (item.getLabel() == null || item.getLabel().isEmpty()) {
-			return false;
-		}
-		if (offset < this.bestOffset) {
-			return false;
-		}
-		try {
-			String documentFilter = getDocumentFilter(offset);
-			if (!documentFilter.isEmpty()) {
-				return CompletionProposalTools.isSubstringFoundOrderedInString(documentFilter, getFilterString());
-			} else if (item.getTextEdit() != null) {
-				if(item.getTextEdit().isLeft()) {
-					return offset == LSPEclipseUtils.toOffset(item.getTextEdit().getLeft().getRange().getStart(), document);
-				} else {
-					return offset == LSPEclipseUtils.toOffset(item.getTextEdit().getRight().getInsert().getStart(), document);
-				}
-			}
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-		}
-		return true;
-	}
-
-	@Override
-	public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) {
-		this.viewer = viewer;
-		apply(viewer.getDocument(), trigger, stateMask, offset);
-	}
-
-	@Override
-	public void apply(IDocument document, char trigger, int offset) {
-		apply(document, trigger, 0, offset);
-	}
-
-	@Override
-	public void apply(IDocument document) {
-		apply(document, Character.MIN_VALUE, 0, this.bestOffset);
-	}
-
-	@Override
-	public char[] getTriggerCharacters() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public int getContextInformationPosition() {
-		return SWT.RIGHT;
-	}
-
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSCompletionProposalComparator.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSCompletionProposalComparator.java
deleted file mode 100644
index d8036ad..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSCompletionProposalComparator.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Mickael Istria (Red Hat Inc.) - initial implementation
- *   Michał Niewrzał (Rogue Wave Software Inc.)
- *   Lucas Bullen (Red Hat Inc.) - Refactored for incomplete completion lists
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.completion;
-
-import java.util.Comparator;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-
-final class LSCompletionProposalComparator implements Comparator<LSCompletionProposal> {
-	@Override
-	public int compare(LSCompletionProposal o1, LSCompletionProposal o2) {
-		try {
-			int docFilterLen1 = o1.getDocumentFilter().length();
-			int docFilterLen2 = o2.getDocumentFilter().length();
-			if (docFilterLen1 > docFilterLen2) {
-				return -1;
-			} else if (docFilterLen1 < docFilterLen2) {
-				return +1;
-			}
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-		}
-		if (o1.getRankCategory() < o2.getRankCategory()) {
-			return -1;
-		} else if (o1.getRankCategory() > o2.getRankCategory()) {
-			return +1;
-		}
-		if ((o1.getRankCategory() < 5 && o2.getRankCategory() < 5)
-				&& (!(o1.getRankScore() == -1 && o2.getRankScore() == -1))) {
-			if (o2.getRankScore() == -1 || o1.getRankScore() < o2.getRankScore()) {
-				return -1;
-			} else if (o1.getRankScore() == -1 || o1.getRankScore() > o2.getRankScore()) {
-				return +1;
-			}
-		}
-		String c1 = o1.getSortText();
-		String c2 = o2.getSortText();
-		if (c1 == null) {
-			return -1;
-		}
-		return c1.compareToIgnoreCase(c2);
-	}
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSContentAssistProcessor.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSContentAssistProcessor.java
deleted file mode 100644
index 063882b..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSContentAssistProcessor.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2020 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Lucas Bullen (Red Hat Inc.) - Bug 520700 - TextEditors within FormEditors are not supported *   Lucas Bullen (Red Hat Inc.) - Refactored for incomplete completion lists
- *								- Refactored for incomplete completion lists
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.completion;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CancellationException;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.contentassist.CompletionProposal;
-import org.eclipse.jface.text.contentassist.ContextInformation;
-import org.eclipse.jface.text.contentassist.ContextInformationValidator;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
-import org.eclipse.jface.text.contentassist.IContextInformation;
-import org.eclipse.jface.text.contentassist.IContextInformationValidator;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.lsp4j.CompletionItem;
-import org.eclipse.lsp4j.CompletionList;
-import org.eclipse.lsp4j.CompletionOptions;
-import org.eclipse.lsp4j.CompletionParams;
-import org.eclipse.lsp4j.SignatureHelpOptions;
-import org.eclipse.lsp4j.SignatureHelpParams;
-import org.eclipse.lsp4j.SignatureInformation;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-import com.google.common.base.Strings;
-
-public class LSContentAssistProcessor implements IContentAssistProcessor {
-
-	private static final long TRIGGERS_TIMEOUT = 50;
-	private static final long CONTEXT_INFORMATION_TIMEOUT = 1000;
-	private IDocument currentDocument;
-	private String errorMessage;
-	private boolean errorAsCompletionItem;
-	private CompletableFuture<List<@NonNull LanguageServer>> completionLanguageServersFuture;
-	private final Object completionTriggerCharsSemaphore = new Object();
-	private char[] completionTriggerChars = new char[0];
-	private CompletableFuture<List<@NonNull LanguageServer>> contextInformationLanguageServersFuture;
-	private final Object contextTriggerCharsSemaphore = new Object();
-	private char[] contextTriggerChars = new char[0];
-
-	public LSContentAssistProcessor() {
-		this(true);
-	}
-
-	public LSContentAssistProcessor(boolean errorAsCompletionItem) {
-		this.errorAsCompletionItem = errorAsCompletionItem;
-	}
-
-	private Comparator<LSCompletionProposal> proposalComparator = new LSCompletionProposalComparator();
-
-	@Override
-	public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) {
-		IDocument document = viewer.getDocument();
-		initiateLanguageServers(document);
-		CompletionParams param;
-
-		try {
-			param = LSPEclipseUtils.toCompletionParams(LSPEclipseUtils.toUri(document), offset, document);
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-			this.errorMessage = createErrorMessage(offset, e);
-			return createErrorProposal(offset, e);
-		}
-
-		List<ICompletionProposal> proposals = Collections.synchronizedList(new ArrayList<>());
-		try {
-			this.completionLanguageServersFuture
-					.thenComposeAsync(languageServers -> CompletableFuture.allOf(languageServers.stream()
-							.map(languageServer -> languageServer.getTextDocumentService().completion(param)
-									.thenAcceptAsync(completion -> proposals
-											.addAll(toProposals(document, offset, completion, languageServer))))
-							.toArray(CompletableFuture[]::new)))
-					.get();
-		} catch (ExecutionException e) {
-			LanguageServerPlugin.logError(e);
-			this.errorMessage = createErrorMessage(offset, e);
-			return createErrorProposal(offset, e);
-		} catch (InterruptedException e) {
-			LanguageServerPlugin.logError(e);
-			this.errorMessage = createErrorMessage(offset, e);
-			Thread.currentThread().interrupt();
-			return createErrorProposal(offset, e);
-		}
-
-		LSCompletionProposal[] completeProposals = new LSCompletionProposal[proposals.size()];
-		int i = 0;
-		for (ICompletionProposal proposal : proposals) {
-			if (proposal instanceof LSCompletionProposal) {
-				completeProposals[i] = (LSCompletionProposal) proposal;
-				i++;
-			} else {
-				return proposals.toArray(new ICompletionProposal[proposals.size()]);
-			}
-		}
-		Arrays.sort(completeProposals, proposalComparator);
-		return completeProposals;
-	}
-
-	private ICompletionProposal[] createErrorProposal(int offset, Exception ex) {
-		if (errorAsCompletionItem) {
-			return new ICompletionProposal[] {new CompletionProposal("", offset, 0, 0, null, Messages.completionError, null, ex.getMessage())}; //$NON-NLS-1$
-		}
-		else {
-			return new ICompletionProposal[0];
-		}
-	}
-
-	private String createErrorMessage(int offset, Exception ex) {
-		return Messages.completionError + " : " + ex.getMessage(); //$NON-NLS-1$
-	}
-
-	private void initiateLanguageServers(@NonNull IDocument document) {
-		if (currentDocument != document) {
-			this.currentDocument = document;
-			if (this.completionLanguageServersFuture != null) {
-				try {
-					this.completionLanguageServersFuture.cancel(true);
-				} catch (CancellationException ex) {
-					// nothing
-				}
-			}
-			if (this.contextInformationLanguageServersFuture != null) {
-				try {
-					this.contextInformationLanguageServersFuture.cancel(true);
-				} catch (CancellationException ex) {
-					// nothing
-				}
-			}
-			this.completionTriggerChars = new char[0];
-			this.contextTriggerChars = new char[0];
-
-			this.completionLanguageServersFuture = LanguageServiceAccessor.getLanguageServers(document,
-					capabilities -> {
-						CompletionOptions provider = capabilities.getCompletionProvider();
-						if (provider != null) {
-							synchronized (this.completionTriggerCharsSemaphore) {
-								this.completionTriggerChars = mergeTriggers(this.completionTriggerChars,
-										provider.getTriggerCharacters());
-							}
-							return true;
-						}
-						return false;
-					});
-			this.contextInformationLanguageServersFuture = LanguageServiceAccessor.getLanguageServers(document,
-					capabilities -> {
-						SignatureHelpOptions provider = capabilities.getSignatureHelpProvider();
-						if (provider != null) {
-							synchronized (this.contextTriggerCharsSemaphore) {
-								this.contextTriggerChars = mergeTriggers(this.contextTriggerChars,
-										provider.getTriggerCharacters());
-							}
-							return true;
-						}
-						return false;
-					});
-		}
-
-	}
-
-	private static List<ICompletionProposal> toProposals(IDocument document,
-			int offset, Either<List<CompletionItem>, CompletionList> completionList, LanguageServer languageServer) {
-		if (completionList == null) {
-			return Collections.emptyList();
-		}
-		List<CompletionItem> items = Collections.emptyList();
-		boolean isIncomplete = false;
-		if (completionList.isLeft()) {
-			items = completionList.getLeft();
-		} else if (completionList.isRight()) {
-			isIncomplete = completionList.getRight().isIncomplete();
-			items = completionList.getRight().getItems();
-		}
-		List<ICompletionProposal> proposals = new ArrayList<>();
-		for (CompletionItem item : items) {
-			if (item != null) {
-				if (isIncomplete) {
-					ICompletionProposal proposal = new LSIncompleteCompletionProposal(document, offset, item,
-							languageServer);
-					proposals.add(proposal);
-				} else {
-					ICompletionProposal proposal = new LSCompletionProposal(document, offset, item, languageServer);
-					if (((LSCompletionProposal) proposal).validate(document, offset, null)) {
-						proposals.add(proposal);
-					}
-				}
-			}
-		}
-		return proposals;
-	}
-
-	@Override
-	public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) {
-		initiateLanguageServers(viewer.getDocument());
-		SignatureHelpParams param;
-		try {
-			param = LSPEclipseUtils.toSignatureHelpParams(offset, viewer.getDocument());
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-			return new IContextInformation[] { /* TODO? show error in context information */ };
-		}
-		List<IContextInformation> contextInformations = Collections.synchronizedList(new ArrayList<>());
-		try {
-			contextInformationLanguageServersFuture
-					.thenComposeAsync(languageServers -> CompletableFuture.allOf(languageServers.stream()
-							.map(languageServer -> languageServer.getTextDocumentService().signatureHelp(param))
-							.map(signatureHelpFuture -> signatureHelpFuture.thenAcceptAsync(signatureHelp -> {
-								if (signatureHelp != null) {
-									signatureHelp.getSignatures().stream().map(LSContentAssistProcessor::toContextInformation)
-										.forEach(contextInformations::add);
-								}
-							})).toArray(CompletableFuture[]::new)))
-					.get(CONTEXT_INFORMATION_TIMEOUT, TimeUnit.MILLISECONDS);
-		} catch (ExecutionException | TimeoutException e) {
-			LanguageServerPlugin.logError(e);
-			return new IContextInformation[] { /* TODO? show error in context information */ };
-		} catch (InterruptedException e) {
-			LanguageServerPlugin.logError(e);
-			Thread.currentThread().interrupt();
-			return new IContextInformation[] { /* TODO? show error in context information */ };
-		}
-		return contextInformations.toArray(new IContextInformation[0]);
-	}
-
-	private static IContextInformation toContextInformation(SignatureInformation information) {
-		StringBuilder signature = new StringBuilder(information.getLabel());
-		String docString = LSPEclipseUtils.getDocString(information.getDocumentation());
-		if (docString!=null && !docString.isEmpty()) {
-			signature.append('\n').append(docString);
-		}
-		IContextInformation contextInformation = new ContextInformation(
-				information.getLabel(), signature.toString());
-		return contextInformation;
-	}
-
-	@Override
-	public char[] getCompletionProposalAutoActivationCharacters() {
-		ITextEditor textEditor = LSPEclipseUtils.getActiveTextEditor();
-		if(textEditor != null) {
-			initiateLanguageServers(LSPEclipseUtils.getDocument(textEditor));
-			try {
-				this.completionLanguageServersFuture.get(TRIGGERS_TIMEOUT, TimeUnit.MILLISECONDS);
-			} catch (OperationCanceledException | TimeoutException | ExecutionException e) {
-				LanguageServerPlugin.logError(e);
-			} catch (InterruptedException e) {
-				LanguageServerPlugin.logError(e);
-				Thread.currentThread().interrupt();
-			}
-		}
-		return completionTriggerChars;
-	}
-
-	private static char[] mergeTriggers(char[] initialArray, Collection<String> additionalTriggers) {
-		if (initialArray == null) {
-			initialArray = new char[0];
-		}
-		if (additionalTriggers == null) {
-			additionalTriggers = Collections.emptySet();
-		}
-		Set<Character> triggers = new HashSet<>();
-		for (char c : initialArray) {
-			triggers.add(Character.valueOf(c));
-		}
-		additionalTriggers.stream().filter(s -> !Strings.isNullOrEmpty(s))
-				.map(triggerChar -> Character.valueOf(triggerChar.charAt(0))).forEach(triggers::add);
-		char[] res = new char[triggers.size()];
-		int i = 0;
-		for (Character c : triggers) {
-			res[i] = c.charValue();
-			i++;
-		}
-		return res;
-	}
-
-	@Override
-	public char[] getContextInformationAutoActivationCharacters() {
-		ITextEditor textEditor = LSPEclipseUtils.getActiveTextEditor();
-		if(textEditor != null) {
-			initiateLanguageServers(LSPEclipseUtils.getDocument(textEditor));
-			try {
-				this.contextInformationLanguageServersFuture.get(TRIGGERS_TIMEOUT, TimeUnit.MILLISECONDS);
-			} catch (OperationCanceledException | TimeoutException | ExecutionException e) {
-				LanguageServerPlugin.logError(e);
-			} catch (InterruptedException e) {
-				LanguageServerPlugin.logError(e);
-				Thread.currentThread().interrupt();
-			}
-		}
-		return contextTriggerChars;
-	}
-
-	@Override
-	public String getErrorMessage() {
-		return this.errorMessage;
-	}
-
-	@Override
-	public IContextInformationValidator getContextInformationValidator() {
-		return new ContextInformationValidator(this);
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSIncompleteCompletionProposal.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSIncompleteCompletionProposal.java
deleted file mode 100644
index f604450..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSIncompleteCompletionProposal.java
+++ /dev/null
@@ -1,748 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Lucas Bullen (Red Hat Inc.) - initial implementation
- *   Michał Niewrzał (Rogue Wave Software Inc.)
- *   Lucas Bullen (Red Hat Inc.) - Refactored for incomplete completion lists
- *                               - [Bug 517428] Requests sent before initialization
- *   Max Bureck (Fraunhofer FOKUS) - [Bug 536089] Execute the CompletionItem.command given after applying the completion
- *                                 - [Bug 558928] Variables replacement fix for Windows
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.completion;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.internal.text.html.BrowserInformationControl;
-import org.eclipse.jface.text.AbstractReusableInformationControlCreator;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DefaultInformationControl;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IInformationControl;
-import org.eclipse.jface.text.IInformationControlCreator;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.contentassist.BoldStylerProvider;
-import org.eclipse.jface.text.contentassist.CompletionProposal;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.contentassist.ICompletionProposalExtension3;
-import org.eclipse.jface.text.contentassist.ICompletionProposalExtension4;
-import org.eclipse.jface.text.contentassist.ICompletionProposalExtension5;
-import org.eclipse.jface.text.contentassist.ICompletionProposalExtension6;
-import org.eclipse.jface.text.contentassist.ICompletionProposalExtension7;
-import org.eclipse.jface.text.contentassist.IContextInformation;
-import org.eclipse.jface.text.link.LinkedModeModel;
-import org.eclipse.jface.text.link.LinkedModeUI;
-import org.eclipse.jface.text.link.LinkedPosition;
-import org.eclipse.jface.text.link.LinkedPositionGroup;
-import org.eclipse.jface.text.link.ProposalPosition;
-import org.eclipse.jface.viewers.StyledString;
-import org.eclipse.jface.viewers.StyledString.Styler;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.command.CommandExecutor;
-import org.eclipse.lsp4e.operations.hover.FocusableBrowserInformationControl;
-import org.eclipse.lsp4e.ui.LSPImages;
-import org.eclipse.lsp4j.Command;
-import org.eclipse.lsp4j.CompletionItem;
-import org.eclipse.lsp4j.InsertReplaceEdit;
-import org.eclipse.lsp4j.InsertTextFormat;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.TextStyle;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.texteditor.link.EditorLinkedModeUI;
-
-@SuppressWarnings("restriction")
-public class LSIncompleteCompletionProposal
-		implements ICompletionProposal, ICompletionProposalExtension3, ICompletionProposalExtension4,
-		ICompletionProposalExtension5, ICompletionProposalExtension6, ICompletionProposalExtension7,
-		IContextInformation {
-
-	private static final int RESOLVE_TIMEOUT = 500;
-	// Those variables should be defined in LSP4J and reused here whenever done there
-	// See https://github.com/eclipse/lsp4j/issues/149
-	/** The currently selected text or the empty string */
-	private static final String TM_SELECTED_TEXT = "TM_SELECTED_TEXT"; //$NON-NLS-1$
-	/** The contents of the current line */
-	private static final String TM_CURRENT_LINE = "TM_CURRENT_LINE"; //$NON-NLS-1$
-	/** The contents of the word under cursor or the empty string */
-	private static final String TM_CURRENT_WORD = "TM_CURRENT_WORD"; //$NON-NLS-1$
-	/** The zero-index based line number */
-	private static final String TM_LINE_INDEX = "TM_LINE_INDEX"; //$NON-NLS-1$
-	/** The one-index based line number */
-	private static final String TM_LINE_NUMBER = "TM_LINE_NUMBER"; //$NON-NLS-1$
-	/** The filename of the current document */
-	private static final String TM_FILENAME = "TM_FILENAME"; //$NON-NLS-1$
-	/** The filename of the current document without its extensions */
-	private static final String TM_FILENAME_BASE = "TM_FILENAME_BASE"; //$NON-NLS-1$
-	/** The directory of the current document */
-	private static final String TM_DIRECTORY = "TM_DIRECTORY"; //$NON-NLS-1$
-	/** The full file path of the current document */
-	private static final String TM_FILEPATH = "TM_FILEPATH"; //$NON-NLS-1$
-
-	private static final Styler DEPRECATE = new Styler() {
-		@Override
-		public void applyStyles(TextStyle textStyle) {
-			textStyle.strikeout = true;
-			textStyle.foreground = PlatformUI.getWorkbench().getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY);
-		};
-	};
-
-	protected final CompletionItem item;
-	private int initialOffset = -1;
-	protected int bestOffset = -1;
-	protected int currentOffset = -1;
-	protected ITextViewer viewer;
-	private final IDocument document;
-	private IRegion selection;
-	private LinkedPosition firstPosition;
-	// private LSPDocumentInfo info;
-	private Integer rankCategory;
-	private Integer rankScore;
-	private String documentFilter;
-	private String documentFilterAddition = ""; //$NON-NLS-1$
-	private LanguageServer languageServer;
-
-	public LSIncompleteCompletionProposal(@NonNull IDocument document, int offset, @NonNull CompletionItem item,
-			LanguageServer languageServer) {
-		this.item = item;
-		this.document = document;
-		this.languageServer = languageServer;
-		this.initialOffset = offset;
-		this.currentOffset = offset;
-		this.bestOffset = getPrefixCompletionStart(document, offset);
-	}
-
-	/**
-	 * See {@link CompletionProposalTools#getFilterFromDocument} for filter
-	 * generation logic
-	 *
-	 * @return The document filter for the given offset
-	 */
-	public String getDocumentFilter(int offset) throws BadLocationException {
-		if (documentFilter != null) {
-			if (offset != currentOffset) {
-				documentFilterAddition = document.get(initialOffset, offset - initialOffset);
-				rankScore = null;
-				rankCategory = null;
-				currentOffset = offset;
-			}
-			return documentFilter + documentFilterAddition;
-		}
-		currentOffset = offset;
-		return getDocumentFilter();
-	}
-
-	/**
-	 * See {@link CompletionProposalTools#getFilterFromDocument} for filter
-	 * generation logic
-	 *
-	 * @return The document filter for the last given offset
-	 */
-	public String getDocumentFilter() throws BadLocationException {
-		if (documentFilter != null) {
-			return documentFilter + documentFilterAddition;
-		}
-		documentFilter = CompletionProposalTools.getFilterFromDocument(document, currentOffset,
-				getFilterString(), bestOffset);
-		documentFilterAddition = ""; //$NON-NLS-1$
-		return documentFilter;
-	}
-
-	/**
-	 * See {@link CompletionProposalTools#getScoreOfFilterMatch} for ranking logic
-	 *
-	 * @return The rank of the match between the document's filter and this
-	 *         completion's filter.
-	 */
-	public int getRankScore() {
-		if (rankScore != null)
-			return rankScore;
-		try {
-			rankScore = CompletionProposalTools.getScoreOfFilterMatch(getDocumentFilter(),
-					getFilterString());
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-			rankScore = -1;
-		}
-		return rankScore;
-	}
-
-	/**
-	 * See {@link CompletionProposalTools#getCategoryOfFilterMatch} for category
-	 * logic
-	 *
-	 * @return The category of the match between the document's filter and this
-	 *         completion's filter.
-	 */
-	public int getRankCategory() {
-		if (rankCategory != null) {
-			return rankCategory;
-		}
-		try {
-			rankCategory = CompletionProposalTools.getCategoryOfFilterMatch(getDocumentFilter(),
-					getFilterString());
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-			rankCategory = 5;
-		}
-		return rankCategory;
-	}
-
-	public int getBestOffset() {
-		return this.bestOffset;
-	}
-
-	public void updateOffset(int offset) {
-		this.bestOffset = getPrefixCompletionStart(document, offset);
-	}
-
-	public CompletionItem getItem() {
-		return this.item;
-	}
-
-	private boolean isDeprecated() {
-		return item.getDeprecated() != null && item.getDeprecated().booleanValue();
-	}
-
-	@Override
-	public StyledString getStyledDisplayString(IDocument document, int offset, BoldStylerProvider boldStylerProvider) {
-		String rawString = getDisplayString();
-		StyledString res = isDeprecated()
-				? new StyledString(rawString, DEPRECATE)
-				: new StyledString(rawString);
-		if (offset > this.bestOffset) {
-			try {
-				String subString = getDocumentFilter(offset).toLowerCase();
-				int lastIndex = 0;
-				String lowerRawString = rawString.toLowerCase();
-				for (Character c : subString.toCharArray()) {
-					int index = lowerRawString.indexOf(c, lastIndex);
-					if (index < 0) {
-						return res;
-					} else {
-						res.setStyle(index, 1, new Styler() {
-
-							@Override
-							public void applyStyles(TextStyle textStyle) {
-								if (isDeprecated()) {
-									DEPRECATE.applyStyles(textStyle);
-								}
-								boldStylerProvider.getBoldStyler().applyStyles(textStyle);
-							}
-
-						});
-						lastIndex = index + 1;
-					}
-				}
-			} catch (BadLocationException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		}
-		return res;
-	}
-
-	@Override
-	public String getDisplayString() {
-		return this.item.getLabel();
-	}
-
-	@Override
-	public StyledString getStyledDisplayString() {
-		if (Boolean.TRUE.equals(item.getDeprecated())) {
-			return new StyledString(getDisplayString(), DEPRECATE);
-		}
-		return new StyledString(getDisplayString());
-	}
-
-	@Override
-	public boolean isAutoInsertable() {
-		// TODO consider what's best
-		return false;
-	}
-
-	@Override
-	public IInformationControlCreator getInformationControlCreator() {
-		return new AbstractReusableInformationControlCreator() {
-			@Override
-			protected IInformationControl doCreateInformationControl(Shell parent) {
-				if (BrowserInformationControl.isAvailable(parent)) {
-					return new FocusableBrowserInformationControl(parent);
-				} else {
-					return new DefaultInformationControl(parent);
-				}
-			}
-		};
-	}
-
-	@Override
-	public String getAdditionalProposalInfo(IProgressMonitor monitor) {
-		if (LanguageServiceAccessor.checkCapability(languageServer,
-				capability -> Boolean.TRUE.equals(capability.getCompletionProvider().getResolveProvider()))) {
-			try {
-				languageServer.getTextDocumentService().resolveCompletionItem(item).thenAcceptAsync(this::updateCompletionItem)
-						.get(RESOLVE_TIMEOUT, TimeUnit.MILLISECONDS);
-			} catch (ExecutionException | TimeoutException e) {
-				LanguageServerPlugin.logError(e);
-			} catch (InterruptedException e) {
-				LanguageServerPlugin.logError(e);
-				Thread.currentThread().interrupt();
-			}
-		}
-
-		StringBuilder res = new StringBuilder();
-		if (this.item.getDetail() != null) {
-			res.append("<p>" + this.item.getDetail() + "</p>"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		if (res.length() > 0) {
-			res.append("<br/>"); //$NON-NLS-1$
-		}
-		if (this.item.getDocumentation() != null) {
-			String htmlDocString = LSPEclipseUtils.getHtmlDocString(this.item.getDocumentation());
-			if (htmlDocString != null) {
-				res.append(htmlDocString);
-			}
-		}
-
-		return res.toString();
-	}
-
-	private void updateCompletionItem(CompletionItem resolvedItem) {
-		if (resolvedItem == null) {
-			return;
-		}
-		if (resolvedItem.getLabel() != null) {
-			item.setLabel(resolvedItem.getLabel());
-		}
-		if (resolvedItem.getKind() != null) {
-			item.setKind(resolvedItem.getKind());
-		}
-		if (resolvedItem.getDetail() != null) {
-			item.setDetail(resolvedItem.getDetail());
-		}
-		if (resolvedItem.getDocumentation() != null) {
-			item.setDocumentation(resolvedItem.getDocumentation());
-		}
-		if (resolvedItem.getInsertText() != null) {
-			item.setInsertText(resolvedItem.getInsertText());
-		}
-		if (resolvedItem.getInsertTextFormat() != null) {
-			item.setInsertTextFormat(resolvedItem.getInsertTextFormat());
-		}
-		if (resolvedItem.getTextEdit() != null) {
-			item.setTextEdit(resolvedItem.getTextEdit());
-		}
-		if (resolvedItem.getAdditionalTextEdits() != null) {
-			item.setAdditionalTextEdits(resolvedItem.getAdditionalTextEdits());
-		}
-	}
-
-	@Override
-	public CharSequence getPrefixCompletionText(IDocument document, int completionOffset) {
-		return item.getInsertText().substring(completionOffset - this.bestOffset);
-	}
-
-	@Override
-	public int getPrefixCompletionStart(IDocument document, int completionOffset) {
-		Either<TextEdit, InsertReplaceEdit> textEdit = this.item.getTextEdit();
-		if (textEdit != null) {
-			if(textEdit.isLeft()) {
-				try {
-					return LSPEclipseUtils.toOffset(textEdit.getLeft().getRange().getStart(), document);
-				} catch (BadLocationException e) {
-					LanguageServerPlugin.logError(e);
-				}
-			} else {
-				try {
-					return LSPEclipseUtils.toOffset(textEdit.getRight().getInsert().getStart(), document);
-				} catch (BadLocationException e) {
-					LanguageServerPlugin.logError(e);
-				}
-			}
-		}
-		String insertText = getInsertText();
-		try {
-			String subDoc = document.get(
-					Math.max(0, completionOffset - insertText.length()),
-					Math.min(insertText.length(), completionOffset));
-			for (int i = 0; i < insertText.length() && i < completionOffset; i++) {
-				String tentativeCommonString = subDoc.substring(i);
-				if (insertText.startsWith(tentativeCommonString)) {
-					return completionOffset - tentativeCommonString.length();
-				}
-			}
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-		}
-		return completionOffset;
-	}
-
-	@Override
-	public void apply(IDocument document) {
-		apply(document, Character.MIN_VALUE, 0, this.bestOffset);
-	}
-
-	protected void apply(IDocument document, char trigger, int stateMask, int offset) {
-		String insertText = null;
-		Either<TextEdit, InsertReplaceEdit> eitherTextEdit = item.getTextEdit();
-		TextEdit textEdit = null;
-		if (eitherTextEdit != null) {
-			if(eitherTextEdit.isLeft()) {
-				textEdit = eitherTextEdit.getLeft();
-			} else {
-				// trick to partially support the new InsertReplaceEdit from LSP 3.16. Reuse previously code for TextEdit.
-				InsertReplaceEdit insertReplaceEdit = eitherTextEdit.getRight();
-				textEdit = new TextEdit(insertReplaceEdit.getInsert(), insertReplaceEdit.getNewText());
-			}
-		}
-		try {
-			if (textEdit == null) {
-				insertText = getInsertText();
-				Position start = LSPEclipseUtils.toPosition(this.bestOffset, document);
-				Position end = LSPEclipseUtils.toPosition(offset, document); // need 2 distinct objects
-				textEdit = new TextEdit(new Range(start, end), insertText);
-			} else if (offset > this.initialOffset) {
-				// characters were added after completion was activated
-				int shift = offset - this.initialOffset;
-				textEdit.getRange().getEnd().setCharacter(textEdit.getRange().getEnd().getCharacter() + shift);
-			}
-			{ // workaround https://github.com/Microsoft/vscode/issues/17036
-				Position start = textEdit.getRange().getStart();
-				Position end = textEdit.getRange().getEnd();
-				if (start.getLine() > end.getLine() || (start.getLine() == end.getLine() && start.getCharacter() > end.getCharacter())) {
-					textEdit.getRange().setEnd(start);
-					textEdit.getRange().setStart(end);
-				}
-			}
-			{ // allow completion items to be wrong with a too wide range
-				Position documentEnd = LSPEclipseUtils.toPosition(document.getLength(), document);
-				Position textEditEnd = textEdit.getRange().getEnd();
-				if (documentEnd.getLine() < textEditEnd.getLine()
-					|| (documentEnd.getLine() == textEditEnd.getLine() && documentEnd.getCharacter() < textEditEnd.getCharacter())) {
-					textEdit.getRange().setEnd(documentEnd);
-				}
-			}
-
-			if (insertText != null) {
-				// try to reuse existing characters after completion location
-				int shift = offset - this.bestOffset;
-				int commonSize = 0;
-				while (commonSize < insertText.length() - shift
-					&& document.getLength() > offset + commonSize
-					&& document.getChar(this.bestOffset + shift + commonSize) == insertText.charAt(commonSize + shift)) {
-					commonSize++;
-				}
-				textEdit.getRange().getEnd().setCharacter(textEdit.getRange().getEnd().getCharacter() + commonSize);
-			}
-			insertText = textEdit.getNewText();
-			LinkedHashMap<String, List<LinkedPosition>> regions = new LinkedHashMap<>();
-			int insertionOffset = LSPEclipseUtils.toOffset(textEdit.getRange().getStart(), document);
-			insertionOffset = computeNewOffset(item.getAdditionalTextEdits(), insertionOffset, document);
-			if (item.getInsertTextFormat() == InsertTextFormat.Snippet) {
-				int currentSnippetOffsetInInsertText = 0;
-				while ((currentSnippetOffsetInInsertText = insertText.indexOf('$', currentSnippetOffsetInInsertText)) != -1) {
-					StringBuilder keyBuilder = new StringBuilder();
-					boolean isChoice = false;
-					List<String> snippetProposals = new ArrayList<>();
-					int offsetInSnippet = 1;
-					while (currentSnippetOffsetInInsertText + offsetInSnippet < insertText.length() && Character.isDigit(insertText.charAt(currentSnippetOffsetInInsertText + offsetInSnippet))) {
-						keyBuilder.append(insertText.charAt(currentSnippetOffsetInInsertText + offsetInSnippet));
-						offsetInSnippet++;
-					}
-					if (keyBuilder.length() == 0 && insertText.substring(currentSnippetOffsetInInsertText).startsWith("${")) { //$NON-NLS-1$
-						offsetInSnippet = 2;
-						while (currentSnippetOffsetInInsertText + offsetInSnippet < insertText.length() && Character.isDigit(insertText.charAt(currentSnippetOffsetInInsertText + offsetInSnippet))) {
-							keyBuilder.append(insertText.charAt(currentSnippetOffsetInInsertText + offsetInSnippet));
-							offsetInSnippet++;
-						}
-						if (currentSnippetOffsetInInsertText + offsetInSnippet < insertText.length()) {
-							char currentChar = insertText.charAt(currentSnippetOffsetInInsertText + offsetInSnippet);
-							if (currentChar == ':' || currentChar == '|') {
-								isChoice |= currentChar == '|';
-								offsetInSnippet++;
-							}
-						}
-						boolean close = false;
-						StringBuilder valueBuilder = new StringBuilder();
-						while (currentSnippetOffsetInInsertText + offsetInSnippet < insertText.length() && !close) {
-							char currentChar = insertText.charAt(currentSnippetOffsetInInsertText + offsetInSnippet);
-							if (valueBuilder.length() > 0 &&
-								((isChoice && (currentChar == ',' || currentChar == '|') || currentChar == '}'))) {
-								String value = valueBuilder.toString();
-								if (value.startsWith("$")) { //$NON-NLS-1$
-									String varValue = getVariableValue(value.substring(1));
-									if (varValue != null) {
-										value = varValue;
-									}
-								}
-								snippetProposals.add(value);
-								valueBuilder = new StringBuilder();
-							} else if (currentChar != '}') {
-								valueBuilder.append(currentChar);
-							}
-							close = currentChar == '}';
-							offsetInSnippet++;
-						}
-					}
-					String defaultProposal = snippetProposals.isEmpty() ? "" : snippetProposals.get(0); //$NON-NLS-1$
-					if (keyBuilder.length() > 0) {
-						String key = keyBuilder.toString();
-						if (!regions.containsKey(key)) {
-							regions.put(key, new ArrayList<>());
-						}
-						insertText = insertText.substring(0, currentSnippetOffsetInInsertText) + defaultProposal + insertText.substring(currentSnippetOffsetInInsertText + offsetInSnippet);
-						LinkedPosition position = null;
-						if (!snippetProposals.isEmpty()) {
-							int replacementOffset = insertionOffset + currentSnippetOffsetInInsertText;
-							ICompletionProposal[] proposals = snippetProposals.stream().map(string ->
-								new CompletionProposal(string, replacementOffset, defaultProposal.length(), replacementOffset + string.length())
-							).toArray(ICompletionProposal[]::new);
-							position = new ProposalPosition(document, insertionOffset + currentSnippetOffsetInInsertText, defaultProposal.length(), proposals);
-						} else {
-							position = new LinkedPosition(document, insertionOffset + currentSnippetOffsetInInsertText, defaultProposal.length());
-						}
-						if (firstPosition == null) {
-							firstPosition = position;
-						}
-						regions.get(key).add(position);
-						currentSnippetOffsetInInsertText += defaultProposal.length();
-					} else {
-						currentSnippetOffsetInInsertText++;
-					}
-				}
-			}
-			textEdit.setNewText(insertText); // insertText now has placeholder removed
-			List<TextEdit> additionalEdits = item.getAdditionalTextEdits();
-			if (additionalEdits != null && !additionalEdits.isEmpty()) {
-				List<TextEdit> allEdits = new ArrayList<>();
-				allEdits.add(textEdit);
-				allEdits.addAll(additionalEdits);
-				LSPEclipseUtils.applyEdits(document, allEdits);
-			} else {
-				LSPEclipseUtils.applyEdit(textEdit, document);
-			}
-
-			if (viewer != null && !regions.isEmpty()) {
-				LinkedModeModel model = new LinkedModeModel();
-				for (List<LinkedPosition> positions: regions.values()) {
-					LinkedPositionGroup group = new LinkedPositionGroup();
-					for (LinkedPosition position : positions) {
-						group.addPosition(position);
-					}
-					model.addGroup(group);
-				}
-				model.forceInstall();
-
-				LinkedModeUI ui = new EditorLinkedModeUI(model, viewer);
-				// ui.setSimpleMode(true);
-				// ui.setExitPolicy(new ExitPolicy(closingCharacter, document));
-				// ui.setExitPosition(getTextViewer(), exit, 0, Integer.MAX_VALUE);
-				ui.setCyclingMode(LinkedModeUI.CYCLE_NEVER);
-				ui.enter();
-			} else {
-				selection = new Region(insertionOffset + textEdit.getNewText().length(), 0);
-			}
-
-			LanguageServiceAccessor.resolveServerDefinition(languageServer).map(definition -> definition.id)
-					.ifPresent(id -> {
-						Command command = item.getCommand();
-						if (command == null) {
-							return;
-						}
-						CommandExecutor.executeCommand(command, document, id);
-					});
-		} catch (BadLocationException ex) {
-			LanguageServerPlugin.logError(ex);
-		}
-	}
-
-	private int computeNewOffset(List<TextEdit> additionalTextEdits, int insertionOffset, IDocument doc) {
-		if (additionalTextEdits != null && !additionalTextEdits.isEmpty()) {
-			int adjustment = 0;
-			for (TextEdit edit : additionalTextEdits) {
-				try {
-					Range rng = edit.getRange();
-					int start = LSPEclipseUtils.toOffset(rng.getStart(), doc);
-					if (start <= insertionOffset) {
-						int end = LSPEclipseUtils.toOffset(rng.getEnd(), doc);
-						int orgLen = end - start;
-						int newLeng = edit.getNewText().length();
-						int editChange = newLeng - orgLen;
-						adjustment += editChange;
-					}
-				} catch (BadLocationException e) {
-					LanguageServerPlugin.logError(e);
-				}
-			}
-			return insertionOffset + adjustment;
-		}
-		return insertionOffset;
-	}
-
-	private String getVariableValue(String variableName) {
-		switch (variableName) {
-		case TM_FILENAME_BASE:
-			IPath pathBase = LSPEclipseUtils.toPath(document).removeFileExtension();
-			String fileName = pathBase.lastSegment();
-			return fileName != null ? fileName : ""; //$NON-NLS-1$
-		case TM_FILENAME:
-			return LSPEclipseUtils.toPath(document).lastSegment();
-		case TM_FILEPATH:
-			return getAbsoluteLocation(LSPEclipseUtils.toPath(document));
-		case TM_DIRECTORY:
-			IPath dirPath = LSPEclipseUtils.toPath(document).removeLastSegments(1);
-			return getAbsoluteLocation(dirPath);
-		case TM_LINE_INDEX:
-			int lineIndex = getTextEditRange().getStart().getLine();
-			return Integer.toString(lineIndex);
-		case TM_LINE_NUMBER:
-			int lineNumber = getTextEditRange().getStart().getLine();
-			return Integer.toString(lineNumber + 1);
-		case TM_CURRENT_LINE:
-			int currentLineIndex = getTextEditRange().getStart().getLine();
-			try {
-				IRegion lineInformation = document.getLineInformation(currentLineIndex);
-				String line = document.get(lineInformation.getOffset(), lineInformation.getLength());
-				return line;
-			} catch (BadLocationException e) {
-				LanguageServerPlugin.logWarning(e.getMessage(), e);
-				return ""; //$NON-NLS-1$
-			}
-		case TM_SELECTED_TEXT:
-			Range selectedRange = getTextEditRange();
-			try {
-				int startOffset = LSPEclipseUtils.toOffset(selectedRange.getStart(), document);
-				int endOffset = LSPEclipseUtils.toOffset(selectedRange.getEnd(), document);
-				String selectedText = document.get(startOffset, endOffset - startOffset);
-				return selectedText;
-			} catch (BadLocationException e) {
-				LanguageServerPlugin.logWarning(e.getMessage(), e);
-				return ""; //$NON-NLS-1$
-			}
-		case TM_CURRENT_WORD:
-			return ""; //$NON-NLS-1$
-		default:
-			return null;
-		}
-	}
-
-	private Range getTextEditRange() {
-		if (item.getTextEdit().isLeft()) {
-			return item.getTextEdit().getLeft().getRange();
-		} else {
-			// here providing insert range, currently do not know if insert or replace is requested
-			return item.getTextEdit().getRight().getInsert();
-		}
-	}
-
-	/**
-	 * Returns the absolute OS specific path for the given {@code path}.
-	 * @param path to be turned into an OS specific path
-	 * @return OS specific absolute path representation of argument {@code path}
-	 */
-	private String getAbsoluteLocation(IPath path) {
-		IResource res = ResourcesPlugin.getWorkspace().getRoot().findMember(path);
-		if(res != null) {
-			// On projects getRawLocation() returns null if it is located
-			// in the default location; getLocation(), however, returns the
-			// absolute path in the local file system
-			IPath location = res.getType() == IResource.PROJECT ? res.getLocation() : res.getRawLocation();
-			if(location != null) {
-				return location.toOSString();
-			}
-		}
-		return path.toFile().getAbsolutePath();
-	}
-
-	protected String getInsertText() {
-		String insertText = this.item.getInsertText();
-		Either<TextEdit, InsertReplaceEdit> eitherTextEdit = this.item.getTextEdit();
-		if (eitherTextEdit != null) {
-			if(eitherTextEdit.isLeft()) {
-				insertText = eitherTextEdit.getLeft().getNewText();
-			} else {
-				insertText = eitherTextEdit.getRight().getNewText();
-			}
-		}
-		if (insertText == null) {
-			insertText = this.item.getLabel();
-		}
-		return insertText;
-	}
-
-	@Override
-	public Point getSelection(IDocument document) {
-		if (this.firstPosition != null) {
-			return new Point(this.firstPosition.getOffset(), this.firstPosition.getLength());
-		}
-		if (selection == null) {
-			return null;
-		}
-		return new Point(selection.getOffset(), selection.getLength());
-	}
-
-	@Override
-	public String getAdditionalProposalInfo() {
-		return this.getAdditionalProposalInfo(new NullProgressMonitor());
-	}
-
-	@Override
-	public Image getImage() {
-		return LSPImages.imageFromCompletionItem(this.item);
-	}
-
-	@Override
-	public IContextInformation getContextInformation() {
-		return this;
-	}
-
-	@Override
-	public String getContextDisplayString() {
-		return getAdditionalProposalInfo();
-	}
-
-	@Override
-	public String getInformationDisplayString() {
-		return getAdditionalProposalInfo();
-	}
-
-	public String getSortText() {
-		if (item.getSortText() != null && !item.getSortText().isEmpty()) {
-			return item.getSortText();
-		}
-		return item.getLabel();
-	}
-
-	public String getFilterString() {
-		if (item.getFilterText() != null && !item.getFilterText().isEmpty()) {
-			return item.getFilterText();
-		}
-		return item.getLabel();
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/declaration/LSBasedHyperlink.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/declaration/LSBasedHyperlink.java
deleted file mode 100644
index ad7b023..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/declaration/LSBasedHyperlink.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2020 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Michał Niewrzał (Rogue Wave Software Inc.) - hyperlink range detection
- *  Lucas Bullen (Red Hat Inc.) - [Bug 517428] Requests sent before initialization
- *  Martin Lippert (Pivotal Inc.) - [Bug 561270] labels include more details now
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.declaration;
-
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.LocationLink;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.intro.config.IIntroURL;
-import org.eclipse.ui.intro.config.IntroURLFactory;
-
-public class LSBasedHyperlink implements IHyperlink {
-
-	private final Either<Location, LocationLink> location;
-	private final IRegion highlightRegion;
-
-	public LSBasedHyperlink(Either<Location, LocationLink> location, IRegion highlightRegion) {
-		this.location = location;
-		this.highlightRegion = highlightRegion;
-	}
-
-	public LSBasedHyperlink(Location location, IRegion linkRegion) {
-		this(Either.forLeft(location), linkRegion);
-	}
-
-	public LSBasedHyperlink(LocationLink locationLink, IRegion linkRegion) {
-		this(Either.forRight(locationLink), linkRegion);
-	}
-
-	@Override
-	public IRegion getHyperlinkRegion() {
-		return this.highlightRegion;
-	}
-
-	@Override
-	public String getTypeLabel() {
-		return getLabel();
-	}
-
-	@Override
-	public String getHyperlinkText() {
-		return getLabel();
-	}
-
-	/**
-	 *
-	 * @return
-	 * @noreference test only
-	 */
-	public Either<Location, LocationLink> getLocation() {
-		return location;
-	}
-
-	@Override
-	public void open() {
-		IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-		if (location.isLeft()) {
-			LSPEclipseUtils.openInEditor(location.getLeft(), page);
-		} else {
-			LSPEclipseUtils.openInEditor(location.getRight(), page);
-		}
-	}
-
-	private String getLabel() {
-		if (this.location != null) {
-			String uri = this.location.isLeft() ? this.location.getLeft().getUri() : this.location.getRight().getTargetUri();
-			if (uri != null) {
-				if (uri.startsWith(LSPEclipseUtils.FILE_URI) && uri.length() > LSPEclipseUtils.FILE_URI.length()) {
-					return getFileBasedLabel(uri);
-				}
-				else if (uri.startsWith(LSPEclipseUtils.INTRO_URL)) {
-					return getIntroUrlBasedLabel(uri);
-				}
-				else if (uri.startsWith(LSPEclipseUtils.HTTP)) {
-					return getHttpBasedLabel(uri);
-				}
-			}
-		}
-
-		return Messages.hyperlinkLabel;
-	}
-
-	private String getIntroUrlBasedLabel(String uri) {
-		try {
-			IIntroURL introUrl = IntroURLFactory.createIntroURL(uri);
-			if (introUrl != null) {
-				String label = introUrl.getParameter("label"); //$NON-NLS-1$
-				if (label != null) {
-					return Messages.hyperlinkLabel + " - " + label; //$NON-NLS-1$
-				}
-			}
-		}
-		catch (Exception e) {
-			LanguageServerPlugin.logError(e.getMessage(), e);
-		}
-
-		return Messages.hyperlinkLabel;
-	}
-
-	private String getHttpBasedLabel(String uri) {
-		return Messages.hyperlinkLabel + " - " + uri; //$NON-NLS-1$
-	}
-
-	private String getFileBasedLabel(String uri) {
-		return Messages.hyperlinkLabel + " - " + uri.substring(LSPEclipseUtils.FILE_URI.length()); //$NON-NLS-1$
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/declaration/OpenDeclarationHyperlinkDetector.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/declaration/OpenDeclarationHyperlinkDetector.java
deleted file mode 100644
index 6a4da26..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/declaration/OpenDeclarationHyperlinkDetector.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Michał Niewrzał (Rogue Wave Software Inc.) - hyperlink range detection
- *  Lucas Bullen (Red Hat Inc.) - [Bug 517428] Requests sent before initialization
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.declaration;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.stream.Collectors;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.LocationLink;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.TextDocumentPositionParams;
-import org.eclipse.lsp4j.TypeDefinitionRegistrationOptions;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-
-public class OpenDeclarationHyperlinkDetector extends AbstractHyperlinkDetector {
-
-	@Override
-	public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
-		final IDocument document = textViewer.getDocument();
-		TextDocumentPositionParams params;
-		try {
-			URI uri = LSPEclipseUtils.toUri(document);
-			if (uri == null) {
-				return null;
-			}
-			params = new TextDocumentPositionParams(
-					new TextDocumentIdentifier(uri.toString()),
-					LSPEclipseUtils.toPosition(region.getOffset(), document));
-		} catch (BadLocationException e1) {
-			LanguageServerPlugin.logError(e1);
-			return null;
-		}
-		IRegion r = findWord(textViewer.getDocument(), region.getOffset());
-		final IRegion linkRegion = r != null ? r : region;
-		Map<Either<Location, LocationLink>,LSBasedHyperlink> allLinks = Collections.synchronizedMap(new LinkedHashMap<>());
-		try {
-			// Collect definitions
-			Collection<CompletableFuture<Either<List<? extends Location>, List<? extends LocationLink>>>> allFutures = Collections.synchronizedCollection(new ArrayList<>());
-			CompletableFuture.allOf(
-				LanguageServiceAccessor
-					.getLanguageServers(textViewer.getDocument(), capabilities -> LSPEclipseUtils.hasCapability(capabilities.getDefinitionProvider()))
-					.thenAcceptAsync(languageServers ->
-						languageServers.stream().map(ls -> ls.getTextDocumentService().definition(LSPEclipseUtils.toDefinitionParams(params))).forEach(allFutures::add)
-					),
-				LanguageServiceAccessor
-					.getLanguageServers(textViewer.getDocument(), OpenDeclarationHyperlinkDetector::isTypeDefinitionProvider)
-					.thenAcceptAsync(languageServers ->
-						languageServers.stream().map(ls -> ls.getTextDocumentService().typeDefinition(LSPEclipseUtils.toTypeDefinitionParams(params))).forEach(allFutures::add)
-					)
-			).thenCompose(theVoid ->
-				CompletableFuture.allOf(allFutures.stream().map(future ->
-				future.thenAccept(locations -> {
-					Collection<LSBasedHyperlink> links = toHyperlinks(document, linkRegion, locations);
-					synchronized (allLinks) {
-						links.forEach(link -> {
-							allLinks.putIfAbsent(link.getLocation(), link);
-						});
-					}
-				})).toArray(CompletableFuture[]::new))
-			).get(500, TimeUnit.MILLISECONDS);
-		} catch (ExecutionException | TimeoutException e) {
-			LanguageServerPlugin.logError(e);
-		} catch (InterruptedException e) {
-			LanguageServerPlugin.logError(e);
-			Thread.currentThread().interrupt();
-		}
-		if (allLinks.isEmpty()) {
-			return null;
-		}
-		return allLinks.values().toArray(new IHyperlink[allLinks.size()]);
-	}
-
-	/**
-	 * Fill the given Eclipse links by using the given LSP locations
-	 *
-	 * @param document
-	 *            the document
-	 * @param linkRegion
-	 *            the link region
-	 * @param locations
-	 *            the LSP locations
-	 * @param allLinks
-	 *            the Eclipse links to update
-	 */
-	private static Collection<LSBasedHyperlink> toHyperlinks(final IDocument document, final IRegion linkRegion,
-			Either<List<? extends Location>, List<? extends LocationLink>> locations) {
-		if (locations == null) {
-			return Collections.emptyList();
-		}
-		if (locations.isLeft()) {
-			return locations.getLeft().stream()
-					.filter(Objects::nonNull)
-					.map(location -> new LSBasedHyperlink(location, linkRegion))
-					.collect(Collectors.toList());
-		} else if (locations.isRight()) {
-			return locations.getRight().stream().filter(Objects::nonNull).map(locationLink -> {
-						IRegion selectionRegion = linkRegion;
-						Range originSelectionRange = locationLink.getOriginSelectionRange();
-						if (originSelectionRange != null) {
-							try {
-								int offset = LSPEclipseUtils
-										.toOffset(originSelectionRange.getStart(), document);
-								int endOffset = LSPEclipseUtils
-										.toOffset(originSelectionRange.getEnd(), document);
-								selectionRegion = new Region(offset, endOffset - offset);
-							} catch (BadLocationException e) {
-								LanguageServerPlugin.logError(e.getMessage(), e);
-							}
-						}
-						return new LSBasedHyperlink(locationLink, selectionRegion);
-					}).collect(Collectors.toList());
-		}
-		return Collections.emptyList();
-	}
-
-	private static boolean isTypeDefinitionProvider(ServerCapabilities capabilities) {
-		 Either<Boolean, TypeDefinitionRegistrationOptions> typeDefinitionProvider = capabilities.getTypeDefinitionProvider();
-		 if (typeDefinitionProvider == null) {
-			 return false;
-		 }
-		 if (typeDefinitionProvider.isLeft()) {
-			return Boolean.TRUE.equals(typeDefinitionProvider.getLeft());
-		 } else if (typeDefinitionProvider.isRight()) {
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * This method is only a workaround for missing range value (which can be used
-	 * to highlight hyperlink) in LSP 'definition' response.
-	 *
-	 * Should be removed when protocol will be updated
-	 * (https://github.com/Microsoft/language-server-protocol/issues/3)
-	 *
-	 * @param document
-	 * @param offset
-	 * @return
-	 */
-	private IRegion findWord(IDocument document, int offset) {
-		int start = -2;
-		int end = -1;
-
-		try {
-
-			int pos = offset;
-			char c;
-
-			while (pos >= 0 && pos < document.getLength()) {
-				c = document.getChar(pos);
-				if (!Character.isUnicodeIdentifierPart(c)) {
-					break;
-				}
-				--pos;
-			}
-
-			start = pos;
-
-			pos = offset;
-			int length = document.getLength();
-
-			while (pos < length) {
-				c = document.getChar(pos);
-				if (!Character.isUnicodeIdentifierPart(c))
-					break;
-				++pos;
-			}
-
-			end = pos;
-
-		} catch (BadLocationException x) {
-			LanguageServerPlugin.logWarning(x.getMessage(), x);
-		}
-
-		if (start >= -1 && end > -1) {
-			if (start == offset && end == offset)
-				return new Region(offset, 0);
-			else if (start == offset)
-				return new Region(start, end - start);
-			else
-				return new Region(start + 1, end - start - 1);
-		}
-
-		return null;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/DiagnosticAnnotation.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/DiagnosticAnnotation.java
deleted file mode 100644
index 4743571..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/DiagnosticAnnotation.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.diagnostics;
-
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.lsp4j.Diagnostic;
-
-public class DiagnosticAnnotation extends Annotation {
-
-	private final Diagnostic diagnostic;
-
-	public DiagnosticAnnotation(Diagnostic diagnostic) {
-		this.diagnostic = diagnostic;
-	}
-
-	@Override
-	public String getType() {
-		switch (diagnostic.getSeverity()) {
-		case Error: return "org.eclipse.ui.workbench.texteditor.error"; //$NON-NLS-1$
-		case Warning: return "org.eclipse.ui.workbench.texteditor.warning"; //$NON-NLS-1$
-		case Information: return "org.eclipse.ui.workbench.texteditor.info"; //$NON-NLS-1$
-		case Hint: return "org.eclipse.ui.workbench.texteditor.info"; //$NON-NLS-1$
-		}
-		return super.getType();
-	}
-
-	@Override
-	public void setType(String type) {
-		throw new UnsupportedOperationException();
-	}
-
-	@Override
-	public String getText() {
-		return this.diagnostic.getMessage();
-	}
-
-	@Override
-	public void setText(String text) {
-		throw new UnsupportedOperationException();
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/LSPDiagnosticsToMarkers.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/LSPDiagnosticsToMarkers.java
deleted file mode 100644
index b2f1e80..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/LSPDiagnosticsToMarkers.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Lucas Bullen (Red Hat Inc.) - [Bug 528333] Performance problem with diagnostics
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.diagnostics;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.Set;
-import java.util.function.Consumer;
-
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.filebuffers.ITextFileBufferManager;
-import org.eclipse.core.filebuffers.LocationKind;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.IAnnotationModel;
-import org.eclipse.jface.text.source.IAnnotationModelExtension;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4j.Diagnostic;
-import org.eclipse.lsp4j.PublishDiagnosticsParams;
-import org.eclipse.ui.texteditor.MarkerUtilities;
-
-public class LSPDiagnosticsToMarkers implements Consumer<PublishDiagnosticsParams> {
-
-	public static final String LSP_DIAGNOSTIC = "lspDiagnostic"; //$NON-NLS-1$
-	public static final String LANGUAGE_SERVER_ID = "languageServerId"; //$NON-NLS-1$
-	public static final String LS_DIAGNOSTIC_MARKER_TYPE = "org.eclipse.lsp4e.diagnostic"; //$NON-NLS-1$
-	private final @NonNull String languageServerId;
-
-	public LSPDiagnosticsToMarkers(@NonNull String serverId) {
-		this.languageServerId = serverId;
-	}
-
-	/**
-	 *
-	 * @param project
-	 * @param serverId
-	 *            ignored
-	 * @deprecated
-	 */
-	@Deprecated
-	public LSPDiagnosticsToMarkers(IProject project, @NonNull String serverId) {
-		this(serverId);
-	}
-
-	@Override
-	public void accept(PublishDiagnosticsParams diagnostics) {
-		try {
-			String uri = diagnostics.getUri();
-			IResource resource = LSPEclipseUtils.findResourceFor(uri);
-			if (resource != null && resource.exists()) {
-				updateMarkers(diagnostics, resource);
-			} else {
-				LSPEclipseUtils.findOpenEditorsFor(LSPEclipseUtils.toUri(uri)).stream()
-					.map(reference -> reference.getEditor(true))
-					.filter(Objects::nonNull)
-					.map(editor -> editor.getAdapter(ITextViewer.class))
-					.filter(Objects::nonNull)
-					.filter(ISourceViewer.class::isInstance)
-					.map(ISourceViewer.class::cast)
-					.forEach(sourceViewer -> updateEditorAnnotations(sourceViewer, diagnostics));
-			}
-		} catch (CoreException ex) {
-			LanguageServerPlugin.logError(ex);
-		}
-	}
-
-	private void updateEditorAnnotations(@NonNull ISourceViewer sourceViewer, PublishDiagnosticsParams diagnostics) {
-		IAnnotationModel annotationModel = sourceViewer.getAnnotationModel();
-		if (annotationModel == null) {
-			return;
-		}
-		if (annotationModel instanceof IAnnotationModelExtension) {
-			Set<Annotation> toRemove = new HashSet<>();
-			annotationModel.getAnnotationIterator().forEachRemaining(annotation -> {
-				if (annotation instanceof DiagnosticAnnotation) {
-					toRemove.add(annotation);
-				}
-			});
-			Map<Annotation, Position> toAdd = new HashMap<>(diagnostics.getDiagnostics().size(), 1.f);
-			diagnostics.getDiagnostics().forEach(diagnostic -> {
-				try {
-					int startOffset = LSPEclipseUtils.toOffset(diagnostic.getRange().getStart(), sourceViewer.getDocument());
-					int endOffset = LSPEclipseUtils.toOffset(diagnostic.getRange().getEnd(), sourceViewer.getDocument());
-					toAdd.put(new DiagnosticAnnotation(diagnostic), new Position(startOffset, endOffset - startOffset));
-				} catch (BadLocationException ex) {
-					LanguageServerPlugin.logError(ex);
-				}
-			});
-			((IAnnotationModelExtension)annotationModel).replaceAnnotations(toRemove.toArray(new Annotation[toRemove.size()]), toAdd);
-		}
-	}
-
-	private void updateMarkers(PublishDiagnosticsParams diagnostics, IResource resource) throws CoreException {
-		Set<IMarker> toDeleteMarkers = new HashSet<>(
-				Arrays.asList(resource.findMarkers(LS_DIAGNOSTIC_MARKER_TYPE, false, IResource.DEPTH_ONE)));
-		toDeleteMarkers
-				.removeIf(marker -> !Objects.equals(marker.getAttribute(LANGUAGE_SERVER_ID, ""), languageServerId)); //$NON-NLS-1$
-		List<Diagnostic> newDiagnostics = new ArrayList<>();
-		Map<IMarker, Diagnostic> toUpdate = new HashMap<>();
-		for (Diagnostic diagnostic : diagnostics.getDiagnostics()) {
-			IMarker associatedMarker = getExistingMarkerFor(resource, diagnostic, toDeleteMarkers);
-			if (associatedMarker == null) {
-				newDiagnostics.add(diagnostic);
-			} else {
-				toDeleteMarkers.remove(associatedMarker);
-				toUpdate.put(associatedMarker, diagnostic);
-			}
-		}
-		IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
-			@Override
-			public void run(IProgressMonitor monitor) throws CoreException {
-				if (resource.exists()) {
-					for (Diagnostic diagnostic : newDiagnostics) {
-						resource.createMarker(LS_DIAGNOSTIC_MARKER_TYPE, computeMarkerAttributes(resource, diagnostic));
-					}
-					for (Entry<IMarker, Diagnostic> entry : toUpdate.entrySet()) {
-						updateMarker(resource, entry.getValue(), entry.getKey());
-					}
-					toDeleteMarkers.forEach(t -> {
-						try {
-							t.delete();
-						} catch (CoreException e) {
-							LanguageServerPlugin.logError(e);
-						}
-					});
-				}
-			}
-		};
-		ResourcesPlugin.getWorkspace().run(runnable, new NullProgressMonitor());
-	}
-
-	protected void updateMarker(IResource resource, Diagnostic diagnostic, IMarker marker) {
-		try {
-			Map<String, Object> targetAttributes = computeMarkerAttributes(resource, diagnostic);
-			if (!targetAttributes.equals(marker.getAttributes())) {
-				marker.setAttributes(targetAttributes);
-			}
-		} catch (CoreException e) {
-			LanguageServerPlugin.logError(e);
-		}
-	}
-
-	private Map<String, Object> computeMarkerAttributes(IResource resource, Diagnostic diagnostic)
-			throws CoreException {
-		Map<String, Object> targetAttributes = new HashMap<>(7);
-		targetAttributes.put(LSP_DIAGNOSTIC, diagnostic);
-		targetAttributes.put(LANGUAGE_SERVER_ID, this.languageServerId);
-		targetAttributes.put(IMarker.MESSAGE, diagnostic.getMessage());
-		targetAttributes.put(IMarker.SEVERITY, LSPEclipseUtils.toEclipseMarkerSeverity(diagnostic.getSeverity()));
-		if (resource.getType() == IResource.FILE) {
-			try {
-				IFile file = (IFile) resource;
-				ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
-				ITextFileBuffer textFileBuffer = manager.getTextFileBuffer(file.getFullPath(), LocationKind.IFILE);
-
-				if (textFileBuffer == null) {
-					manager.connect(file.getFullPath(), LocationKind.IFILE, new NullProgressMonitor());
-					textFileBuffer = manager.getTextFileBuffer(file.getFullPath(), LocationKind.IFILE);
-				}
-
-				IDocument document = textFileBuffer.getDocument();
-				int start = Math.min(LSPEclipseUtils.toOffset(diagnostic.getRange().getStart(), document),
-						document.getLength());
-				int end = Math.min(LSPEclipseUtils.toOffset(diagnostic.getRange().getEnd(), document),
-						document.getLength());
-				if (start == end && document.getLength() > end) {
-					end++;
-					if (document.getLineOfOffset(end) != document.getLineOfOffset(start)) {
-						start--;
-						end--;
-					}
-				}
-				targetAttributes.put(IMarker.CHAR_START, start);
-				targetAttributes.put(IMarker.CHAR_END, end);
-				targetAttributes.put(IMarker.LINE_NUMBER, document.getLineOfOffset(start) + 1);
-			} catch (BadLocationException ex) {
-				LanguageServerPlugin.logError(ex);
-			}
-		}
-		return targetAttributes;
-	}
-
-	private IMarker getExistingMarkerFor(IResource resource, Diagnostic diagnostic, Set<IMarker> remainingMarkers) {
-		ITextFileBuffer textFileBuffer = FileBuffers.getTextFileBufferManager()
-				.getTextFileBuffer(resource.getFullPath(), LocationKind.IFILE);
-		if (textFileBuffer == null) {
-			return null;
-		}
-
-		IDocument document = textFileBuffer.getDocument();
-		for (IMarker marker : remainingMarkers) {
-			int startOffset = MarkerUtilities.getCharStart(marker);
-			int endOffset = MarkerUtilities.getCharEnd(marker);
-			try {
-				if (LSPEclipseUtils.toOffset(diagnostic.getRange().getStart(), document) == startOffset
-						&& LSPEclipseUtils.toOffset(diagnostic.getRange().getEnd(), document) == endOffset
-						&& Objects.equals(marker.getAttribute(IMarker.MESSAGE), diagnostic.getMessage())
-						&& Objects.equals(marker.getAttribute(LANGUAGE_SERVER_ID), this.languageServerId)) {
-					return marker;
-				}
-			} catch (CoreException | BadLocationException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		}
-		return null;
-	}
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/documentLink/DocumentLinkDetector.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/documentLink/DocumentLinkDetector.java
deleted file mode 100644
index a0c01d8..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/documentLink/DocumentLinkDetector.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2019 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Martin Lippert (Pivotal Inc.) - bug 531452
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.documentLink;
-
-import java.net.URI;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.TextUtilities;
-import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4j.DocumentLink;
-import org.eclipse.lsp4j.DocumentLinkParams;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-
-public class DocumentLinkDetector extends AbstractHyperlinkDetector {
-
-	public static class DocumentHyperlink implements IHyperlink {
-
-		private String uri;
-		private IRegion highlightRegion;
-
-		public DocumentHyperlink(String uri, IRegion highlightRegion) {
-			this.uri = uri;
-			this.highlightRegion = highlightRegion;
-		}
-
-		@Override
-		public IRegion getHyperlinkRegion() {
-			return this.highlightRegion;
-		}
-
-		@Override
-		public String getTypeLabel() {
-			return uri;
-		}
-
-		@Override
-		public String getHyperlinkText() {
-			return uri;
-		}
-
-		@Override
-		public void open() {
-			IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-			LSPEclipseUtils.open(uri, page, null);
-		}
-
-	}
-
-	@Override
-	public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
-		final IDocument document = textViewer.getDocument();
-		URI uri = LSPEclipseUtils.toUri(document);
-		if (uri == null) {
-			return null;
-		}
-		final DocumentLinkParams params = new DocumentLinkParams(new TextDocumentIdentifier(uri.toString()));
-		try {
-			return LanguageServiceAccessor
-					.getLanguageServers(textViewer.getDocument(),
-							capabilities -> capabilities.getDocumentLinkProvider() != null)
-					.thenApplyAsync(languageServers -> {
-						IHyperlink[] res = languageServers.stream()
-								.map(languageServer -> languageServer.getTextDocumentService().documentLink(params))
-								.map(future -> {
-									try {
-										return future.get(2, TimeUnit.SECONDS);
-									} catch (ExecutionException | TimeoutException e) {
-										LanguageServerPlugin.logError(e);
-										return null;
-									} catch (InterruptedException e) {
-										LanguageServerPlugin.logError(e);
-										Thread.currentThread().interrupt();
-										return null;
-									}
-								}).filter(Objects::nonNull).flatMap(List<DocumentLink>::stream).map(link -> {
-									DocumentHyperlink jfaceLink = null;
-									try {
-										int start = LSPEclipseUtils.toOffset(link.getRange().getStart(),
-												textViewer.getDocument());
-										int end = LSPEclipseUtils.toOffset(link.getRange().getEnd(),
-												textViewer.getDocument());
-										IRegion linkRegion = new Region(start, end - start);
-										if (TextUtilities.overlaps(region, linkRegion) && link.getTarget() != null) {
-											jfaceLink = new DocumentHyperlink(link.getTarget(), linkRegion);
-										}
-									} catch (BadLocationException ex) {
-										LanguageServerPlugin.logError(ex);
-									}
-									return jfaceLink;
-								}).filter(Objects::nonNull).toArray(IHyperlink[]::new);
-						if (res.length == 0) {
-							return null;
-						} else {
-							return res;
-						}
-					}).get(2, TimeUnit.SECONDS);
-		} catch (ExecutionException | TimeoutException e) {
-			LanguageServerPlugin.logError(e);
-			return null;
-		} catch (InterruptedException e) {
-			LanguageServerPlugin.logError(e);
-			Thread.currentThread().interrupt();
-			return null;
-		}
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/folding/LSPFoldingReconciler.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/folding/LSPFoldingReconciler.java
deleted file mode 100644
index 95e6c32..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/folding/LSPFoldingReconciler.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**

- *  Copyright (c) 2018 Angelo ZERR.

- *  All rights reserved. This program and the accompanying materials

- *  are made available under the terms of the Eclipse Public License v1.0

- *  which accompanies this distribution, and is available at

- *  http://www.eclipse.org/legal/epl-v10.html

- *

- *  Contributors:

- *  Angelo Zerr <angelo.zerr@gmail.com> - Add support for 'textDocument/foldingRange' - Bug 537706

- */

-package org.eclipse.lsp4e.operations.folding;

-

-import org.eclipse.jface.text.IDocument;

-import org.eclipse.jface.text.ITextViewer;

-import org.eclipse.jface.text.reconciler.MonoReconciler;

-import org.eclipse.jface.text.source.projection.ProjectionViewer;

-

-/**

- * LSP folding reconciler.

- *

- */

-public class LSPFoldingReconciler extends MonoReconciler {

-

-	public LSPFoldingReconciler() {

-		super(new LSPFoldingReconcilingStrategy(), false);

-	}

-

-	@Override

-	public void install(ITextViewer textViewer) {

-		super.install(textViewer);

-		if (textViewer instanceof ProjectionViewer) {

-			((LSPFoldingReconcilingStrategy) getReconcilingStrategy(IDocument.DEFAULT_CONTENT_TYPE))

-					.install((ProjectionViewer) textViewer);

-		}

-	}

-

-	@Override

-	public void uninstall() {

-		super.uninstall();

-		((LSPFoldingReconcilingStrategy) getReconcilingStrategy(IDocument.DEFAULT_CONTENT_TYPE)).uninstall();

-	}

-

-}

diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/folding/LSPFoldingReconcilingStrategy.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/folding/LSPFoldingReconcilingStrategy.java
deleted file mode 100644
index b1b37eb..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/folding/LSPFoldingReconcilingStrategy.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/**
- *  Copyright (c) 2018 Angelo ZERR.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- *
- *  Contributors:
- *  Angelo Zerr <angelo.zerr@gmail.com> - Add support for 'textDocument/foldingRange' - Bug 537706
- */
-package org.eclipse.lsp4e.operations.folding;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.reconciler.DirtyRegion;
-import org.eclipse.jface.text.reconciler.IReconcilingStrategy;
-import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.projection.IProjectionListener;
-import org.eclipse.jface.text.source.projection.ProjectionAnnotation;
-import org.eclipse.jface.text.source.projection.ProjectionAnnotationModel;
-import org.eclipse.jface.text.source.projection.ProjectionViewer;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4j.FoldingRange;
-import org.eclipse.lsp4j.FoldingRangeRequestParams;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Canvas;
-
-/**
- * LSP folding reconcilinig strategy which consumes the
- * `textDocument/foldingRange` command.
- *
- */
-public class LSPFoldingReconcilingStrategy
-		implements IReconcilingStrategy, IReconcilingStrategyExtension, IProjectionListener {
-
-	private IDocument document;
-	private ProjectionAnnotationModel projectionAnnotationModel;
-	private ProjectionViewer viewer;
-
-	/**
-	 * A FoldingAnnotation is a {@link ProjectionAnnotation} it is folding and
-	 * overriding the paint method (in a hacky type way) to prevent one line folding
-	 * annotations to be drawn.
-	 */
-	protected class FoldingAnnotation extends ProjectionAnnotation {
-		private boolean visible; /* workaround for BUG85874 */
-
-		/**
-		 * Creates a new FoldingAnnotation.
-		 *
-		 * @param isCollapsed
-		 *            true if this annotation should be collapsed, false otherwise
-		 */
-		public FoldingAnnotation(boolean isCollapsed) {
-			super(isCollapsed);
-			visible = false;
-		}
-
-		/**
-		 * Does not paint hidden annotations. Annotations are hidden when they only span
-		 * one line.
-		 *
-		 * @see ProjectionAnnotation#paint(org.eclipse.swt.graphics.GC,
-		 *      org.eclipse.swt.widgets.Canvas, org.eclipse.swt.graphics.Rectangle)
-		 */
-		@Override
-		public void paint(GC gc, Canvas canvas, Rectangle rectangle) {
-			/* workaround for BUG85874 */
-			/*
-			 * only need to check annotations that are expanded because hidden annotations
-			 * should never have been given the chance to collapse.
-			 */
-			if (!isCollapsed()) {
-				// working with rectangle, so line height
-				FontMetrics metrics = gc.getFontMetrics();
-				if (metrics != null && ((rectangle.height / metrics.getHeight()) <= 1)) {
-					// do not draw annotations that only span one line and
-					// mark them as not visible
-					visible = false;
-					return;
-				}
-			}
-			visible = true;
-			super.paint(gc, canvas, rectangle);
-		}
-
-		@Override
-		public void markCollapsed() {
-			/* workaround for BUG85874 */
-			// do not mark collapsed if annotation is not visible
-			if (visible)
-				super.markCollapsed();
-		}
-	}
-
-	@Override
-	public void reconcile(IRegion subRegion) {
-		if (projectionAnnotationModel == null || document == null) {
-			return;
-		}
-
-		URI uri = LSPEclipseUtils.toUri(document);
-		if (uri == null) {
-			return;
-		}
-		TextDocumentIdentifier identifier = new TextDocumentIdentifier(uri.toString());
-		FoldingRangeRequestParams params = new FoldingRangeRequestParams(identifier);
-		LanguageServiceAccessor.getLanguageServers(document, LSPFoldingReconcilingStrategy::canFold).thenAcceptAsync(servers -> {
-			if (servers.isEmpty()) {
-				return;
-			}
-			servers.stream().forEach(server -> {
-				server.getTextDocumentService().foldingRange(params).thenAcceptAsync(this::applyFolding);
-			});
-		});
-	}
-
-	private void applyFolding(List<FoldingRange> ranges) {
-		// these are what are passed off to the annotation model to
-		// actually create and maintain the annotations
-		List<Annotation> modifications = new ArrayList<>();
-		List<FoldingAnnotation> deletions = new ArrayList<>();
-		List<FoldingAnnotation> existing = new ArrayList<>();
-		Map<Annotation, Position> additions = new HashMap<>();
-
-		// find and mark all folding annotations with length 0 for deletion
-		markInvalidAnnotationsForDeletion(deletions, existing);
-
-		try {
-			if (ranges != null) {
-				Collections.sort(ranges, Comparator.comparing(FoldingRange::getEndLine));
-				for (FoldingRange foldingRange : ranges) {
-					updateAnnotation(modifications, deletions, existing, additions, foldingRange.getStartLine(),
-							foldingRange.getEndLine());
-				}
-			}
-		} catch (BadLocationException e) {
-			// should never occur
-		}
-
-		// be sure projection has not been disabled
-		if (projectionAnnotationModel != null) {
-			if (!existing.isEmpty()) {
-				deletions.addAll(existing);
-			}
-			// send the calculated updates to the annotations to the
-			// annotation model
-			projectionAnnotationModel.modifyAnnotations(deletions.toArray(new Annotation[1]), additions,
-					modifications.toArray(new Annotation[0]));
-		}
-	}
-
-	private static boolean canFold(ServerCapabilities capabilities) {
-		return capabilities.getFoldingRangeProvider() != null
-				&& ((capabilities.getFoldingRangeProvider().getLeft() != null
-						&& capabilities.getFoldingRangeProvider().getLeft())
-						|| capabilities.getFoldingRangeProvider().getRight() != null);
-	}
-
-	public void install(ProjectionViewer viewer) {
-		if (this.viewer != null) {
-			this.viewer.removeProjectionListener(this);
-		}
-		this.viewer = viewer;
-		this.viewer.addProjectionListener(this);
-		this.projectionAnnotationModel = this.viewer.getProjectionAnnotationModel();
-	}
-
-	public void uninstall() {
-		setDocument(null);
-		if (viewer != null) {
-			viewer.removeProjectionListener(this);
-			viewer = null;
-		}
-		projectionDisabled();
-	}
-
-	@Override
-	public void setDocument(IDocument document) {
-		this.document = document;
-	}
-
-	@Override
-	public void projectionDisabled() {
-		projectionAnnotationModel = null;
-	}
-
-	@Override
-	public void projectionEnabled() {
-		if (viewer != null) {
-			projectionAnnotationModel = viewer.getProjectionAnnotationModel();
-		}
-	}
-
-	/**
-	 * Update annotations.
-	 *
-	 * @param modifications
-	 *            the folding annotations to update.
-	 * @param deletions
-	 *            the folding annotations to delete.
-	 * @param existing
-	 *            the existing folding annotations.
-	 * @param additions
-	 *            annoation to add
-	 * @param line
-	 *            the line index
-	 * @param endLineNumber
-	 *            the end line number
-	 * @throws BadLocationException
-	 */
-	private void updateAnnotation(List<Annotation> modifications, List<FoldingAnnotation> deletions,
-			List<FoldingAnnotation> existing, Map<Annotation, Position> additions, int line, Integer endLineNumber)
-			throws BadLocationException {
-		int startOffset = document.getLineOffset(line);
-		int endOffset = document.getLineOffset(endLineNumber) + document.getLineLength(endLineNumber);
-		Position newPos = new Position(startOffset, endOffset - startOffset);
-		if (!existing.isEmpty()) {
-			FoldingAnnotation existingAnnotation = existing.remove(existing.size() - 1);
-			updateAnnotations(existingAnnotation, newPos, modifications, deletions);
-		} else {
-			additions.put(new FoldingAnnotation(false), newPos);
-		}
-	}
-
-	/**
-	 * Update annotations.
-	 *
-	 * @param existingAnnotation
-	 *            the existing annotations that need to be updated based on the
-	 *            given dirtied IndexRegion
-	 * @param newPos
-	 *            the new position that caused the annotations need for updating and
-	 *            null otherwise.
-	 * @param modifications
-	 *            the list of annotations to be modified
-	 * @param deletions
-	 *            the list of annotations to be deleted
-	 */
-	protected void updateAnnotations(Annotation existingAnnotation, Position newPos, List<Annotation> modifications,
-			List<FoldingAnnotation> deletions) {
-		if (existingAnnotation instanceof FoldingAnnotation) {
-			FoldingAnnotation foldingAnnotation = (FoldingAnnotation) existingAnnotation;
-
-			// if a new position can be calculated then update the position of
-			// the annotation,
-			// else the annotation needs to be deleted
-			if (newPos != null && newPos.length > 0 && projectionAnnotationModel != null) {
-				Position oldPos = projectionAnnotationModel.getPosition(foldingAnnotation);
-				// only update the position if we have to
-				if (!newPos.equals(oldPos)) {
-					oldPos.setOffset(newPos.offset);
-					oldPos.setLength(newPos.length);
-					modifications.add(foldingAnnotation);
-				}
-			} else {
-				deletions.add(foldingAnnotation);
-			}
-		}
-	}
-
-	/**
-	 * <p>
-	 * Searches the given {@link DirtyRegion} for annotations that now have a length
-	 * of 0. This is caused when something that was being folded has been deleted.
-	 * These {@link FoldingAnnotation}s are then added to the {@link List} of
-	 * {@link FoldingAnnotation}s to be deleted
-	 * </p>
-	 *
-	 * @param deletions
-	 *            the current list of {@link FoldingAnnotation}s marked for deletion
-	 *            that the newly found invalid {@link FoldingAnnotation}s will be
-	 *            added to
-	 */
-	protected void markInvalidAnnotationsForDeletion(List<FoldingAnnotation> deletions,
-			List<FoldingAnnotation> existing) {
-		Iterator<Annotation> iter = projectionAnnotationModel.getAnnotationIterator();
-		if (iter != null) {
-			while (iter.hasNext()) {
-				Annotation anno = iter.next();
-				if (anno instanceof FoldingAnnotation) {
-					FoldingAnnotation folding = (FoldingAnnotation) anno;
-					Position pos = projectionAnnotationModel.getPosition(anno);
-					if (pos.length == 0) {
-						deletions.add(folding);
-					} else {
-						existing.add(folding);
-					}
-				}
-			}
-		}
-	}
-
-	@Override
-	public void reconcile(DirtyRegion dirtyRegion, IRegion partition) {
-		// Do nothing
-	}
-
-	@Override
-	public void setProgressMonitor(IProgressMonitor monitor) {
-		// Do nothing
-	}
-
-	@Override
-	public void initialReconcile() {
-		reconcile(null);
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/format/LSPFormatHandler.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/format/LSPFormatHandler.java
deleted file mode 100644
index 317bb72..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/format/LSPFormatHandler.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Michał Niewrzał (Rogue Wave Software Inc.)
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.format;
-
-import java.util.Collection;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.part.MultiPageEditorPart;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-public class LSPFormatHandler extends AbstractHandler {
-
-	private LSPFormatter formatter = new LSPFormatter();
-
-	@Override
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IEditorPart part = HandlerUtil.getActiveEditor(event);
-		if (part instanceof MultiPageEditorPart) {
-			Object selectedPage = ((MultiPageEditorPart)part).getSelectedPage();
-			if (selectedPage instanceof IEditorPart) {
-				part = (IEditorPart)selectedPage;
-			}
-		}
-
-		if (part instanceof ITextEditor) {
-			ITextEditor textEditor = (ITextEditor) part;
-			final IDocument document = LSPEclipseUtils.getDocument(textEditor);
-			final Shell shell = textEditor.getSite().getShell();
-			ISelection selection = HandlerUtil.getCurrentSelection(event);
-			if (document != null && selection instanceof ITextSelection) {
-				formatter.requestFormatting(document, (ITextSelection) selection).thenAcceptAsync(
-						edits -> shell.getDisplay().asyncExec(() -> formatter.applyEdits(document, edits)));
-			}
-		}
-		return null;
-	}
-
-	@Override
-	public boolean isEnabled() {
-		IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
-		if (part instanceof MultiPageEditorPart) {
-			Object selectedPage = ((MultiPageEditorPart)part).getSelectedPage();
-			if (selectedPage instanceof IWorkbenchPart) {
-				part = (IWorkbenchPart)selectedPage;
-			}
-		}
-
-		if (part instanceof ITextEditor) {
-			Collection<LSPDocumentInfo> infos = LanguageServiceAccessor.getLSPDocumentInfosFor(
-					LSPEclipseUtils.getDocument((ITextEditor) part),
-					LSPFormatter::supportFormatting);
-			ISelection selection = ((ITextEditor) part).getSelectionProvider().getSelection();
-			return !infos.isEmpty() && !selection.isEmpty() && selection instanceof ITextSelection;
-		}
-		return false;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/format/LSPFormatter.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/format/LSPFormatter.java
deleted file mode 100644
index 5c77b58..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/format/LSPFormatter.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Lucas Bullen (Red Hat Inc.) - [Bug 517428] Requests sent before initialization
- *                              - [Bug 528848] Formatting Request should include FormattingOptions
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.format;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.lsp4j.DocumentFormattingParams;
-import org.eclipse.lsp4j.DocumentRangeFormattingParams;
-import org.eclipse.lsp4j.FormattingOptions;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.ui.editors.text.EditorsUI;
-import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
-
-public class LSPFormatter {
-
-	public void applyEdits(IDocument document, List<? extends TextEdit> edits) {
-		LSPEclipseUtils.applyEdits(document, edits);
-	}
-
-	public CompletableFuture<List<? extends TextEdit>> requestFormatting(@NonNull IDocument document,
-			@NonNull ITextSelection textSelection) {
-		Collection<@NonNull LSPDocumentInfo> infos = LanguageServiceAccessor.getLSPDocumentInfosFor(document,
-				LSPFormatter::supportFormatting);
-		if (infos.isEmpty()) {
-			return CompletableFuture.completedFuture(Collections.emptyList());
-		}
-		// TODO consider a better strategy for that, maybe iterate on all LS until one gives a result
-		LSPDocumentInfo info = infos.iterator().next();
-		try {
-			return requestFormatting(info, textSelection);
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-		}
-		return CompletableFuture.completedFuture(Collections.emptyList());
-	}
-
-	private CompletableFuture<List<? extends TextEdit>> requestFormatting(LSPDocumentInfo info,
-			ITextSelection textSelection) throws BadLocationException {
-		TextDocumentIdentifier docId = new TextDocumentIdentifier(info.getFileUri().toString());
-		ServerCapabilities capabilities = info.getCapabilites();
-		IPreferenceStore store = EditorsUI.getPreferenceStore();
-		int tabWidth = store.getInt(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_TAB_WIDTH);
-		boolean insertSpaces = store.getBoolean(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_SPACES_FOR_TABS);
-		// use range formatting if standard formatting is not supported or text is selected
-		if (capabilities != null
-				&& isDocumentRangeFormattingSupported(capabilities)
-				&& (!isDocumentFormattingSupported(capabilities)
-						|| textSelection.getLength() != 0)) {
-			DocumentRangeFormattingParams params = new DocumentRangeFormattingParams();
-			params.setTextDocument(docId);
-			params.setOptions(new FormattingOptions(tabWidth, insertSpaces));
-			boolean fullFormat = textSelection.getLength() == 0;
-			Position start = LSPEclipseUtils.toPosition(fullFormat ? 0 : textSelection.getOffset(), info.getDocument());
-			Position end = LSPEclipseUtils.toPosition(
-					fullFormat ? info.getDocument().getLength() : textSelection.getOffset() + textSelection.getLength(),
-					info.getDocument());
-			params.setRange(new Range(start, end));
-			return info.getInitializedLanguageClient()
-					.thenComposeAsync(server -> server.getTextDocumentService().rangeFormatting(params));
-		}
-
-		DocumentFormattingParams params = new DocumentFormattingParams();
-		params.setTextDocument(docId);
-		params.setOptions(new FormattingOptions(tabWidth, insertSpaces));
-		return info.getInitializedLanguageClient()
-				.thenComposeAsync(server -> server.getTextDocumentService().formatting(params));
-	}
-
-	private static boolean isDocumentRangeFormattingSupported(ServerCapabilities capabilities) {
-		return LSPEclipseUtils.hasCapability(capabilities.getDocumentRangeFormattingProvider());
-	}
-
-	private static boolean isDocumentFormattingSupported(ServerCapabilities capabilities) {
-		return LSPEclipseUtils.hasCapability(capabilities.getDocumentFormattingProvider());
-	}
-
-	public static boolean supportFormatting(ServerCapabilities capabilities) {
-		return isDocumentFormattingSupported(capabilities)
-				|| isDocumentRangeFormattingSupported(capabilities);
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/highlight/HighlightReconciler.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/highlight/HighlightReconciler.java
deleted file mode 100644
index 539ac50..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/highlight/HighlightReconciler.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michal Niewrzal‚ (Rogue Wave Software Inc.) - initial implementation
- *  Angelo Zerr <angelo.zerr@gmail.com> - fix Bug 521020
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.highlight;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.reconciler.IReconciler;
-import org.eclipse.jface.text.reconciler.MonoReconciler;
-
-/**
- * {@link IReconciler} implementation to Highlight Symbol (mark occurrences like).
- */
-public class HighlightReconciler extends MonoReconciler {
-
-	public HighlightReconciler() {
-		super(new HighlightReconcilingStrategy(), false);
-	}
-
-	@Override
-	public void install(ITextViewer textViewer) {
-		super.install(textViewer);
-		// no need to do that if https://bugs.eclipse.org/bugs/show_bug.cgi?id=521326 is accepted
-		((HighlightReconcilingStrategy) getReconcilingStrategy(IDocument.DEFAULT_CONTENT_TYPE)).install(textViewer);
-	}
-
-	@Override
-	public void uninstall() {
-		super.uninstall();
-		// no need to do that if https://bugs.eclipse.org/bugs/show_bug.cgi?id=521326 is accepted
-		((HighlightReconcilingStrategy) getReconcilingStrategy(IDocument.DEFAULT_CONTENT_TYPE)).uninstall();
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/highlight/HighlightReconcilingStrategy.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/highlight/HighlightReconcilingStrategy.java
deleted file mode 100644
index 7e57e53..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/highlight/HighlightReconcilingStrategy.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2017 Rogue Wave Software Inc. and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *  Michal Niewrzal (Rogue Wave Software Inc.) - initial implementation

- *  Angelo Zerr <angelo.zerr@gmail.com> - fix Bug 521020

- *  Lucas Bullen (Red Hat Inc.) - fix Bug 522737, 517428, 527426

- *******************************************************************************/

-package org.eclipse.lsp4e.operations.highlight;

-

-import java.net.URI;

-import java.util.HashMap;

-import java.util.Iterator;

-import java.util.List;

-import java.util.Map;

-import java.util.Map.Entry;

-import java.util.concurrent.CompletableFuture;

-

-import org.eclipse.core.runtime.ICoreRunnable;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.jobs.Job;

-import org.eclipse.core.runtime.preferences.IEclipsePreferences;

-import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;

-import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;

-import org.eclipse.core.runtime.preferences.InstanceScope;

-import org.eclipse.jface.text.BadLocationException;

-import org.eclipse.jface.text.IDocument;

-import org.eclipse.jface.text.IRegion;

-import org.eclipse.jface.text.ISynchronizable;

-import org.eclipse.jface.text.ITextSelection;

-import org.eclipse.jface.text.ITextViewer;

-import org.eclipse.jface.text.reconciler.DirtyRegion;

-import org.eclipse.jface.text.reconciler.IReconcilingStrategy;

-import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension;

-import org.eclipse.jface.text.source.Annotation;

-import org.eclipse.jface.text.source.IAnnotationModel;

-import org.eclipse.jface.text.source.IAnnotationModelExtension;

-import org.eclipse.jface.text.source.ISourceViewer;

-import org.eclipse.jface.viewers.IPostSelectionProvider;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.ISelectionChangedListener;

-import org.eclipse.jface.viewers.ISelectionProvider;

-import org.eclipse.jface.viewers.SelectionChangedEvent;

-import org.eclipse.lsp4e.LSPEclipseUtils;

-import org.eclipse.lsp4e.LanguageServerPlugin;

-import org.eclipse.lsp4e.LanguageServiceAccessor;

-import org.eclipse.lsp4j.DocumentHighlight;

-import org.eclipse.lsp4j.DocumentHighlightKind;

-import org.eclipse.lsp4j.DocumentHighlightParams;

-import org.eclipse.lsp4j.Position;

-import org.eclipse.lsp4j.TextDocumentIdentifier;

-import org.eclipse.swt.custom.StyledText;

-

-/**

- * {@link IReconcilingStrategy} implementation to Highlight Symbol (mark

- * occurrences like).

- *

- */

-public class HighlightReconcilingStrategy

-		implements IReconcilingStrategy, IReconcilingStrategyExtension, IPreferenceChangeListener {

-

-	public static final String TOGGLE_HIGHLIGHT_PREFERENCE = "org.eclipse.ui.genericeditor.togglehighlight"; //$NON-NLS-1$

-

-	public static final String READ_ANNOTATION_TYPE = "org.eclipse.lsp4e.read"; //$NON-NLS-1$

-	public static final String WRITE_ANNOTATION_TYPE = "org.eclipse.lsp4e.write"; //$NON-NLS-1$

-	public static final String TEXT_ANNOTATION_TYPE = "org.eclipse.lsp4e.text"; //$NON-NLS-1$

-

-	private boolean enabled;

-	private ISourceViewer sourceViewer;

-	private IDocument document;

-

-	private CompletableFuture<?> request;

-	private Job highlightJob;

-

-	/**

-	 * Holds the current occurrence annotations.

-	 */

-	private Annotation[] fOccurrenceAnnotations = null;

-

-	class EditorSelectionChangedListener implements ISelectionChangedListener {

-

-		public void install(ISelectionProvider selectionProvider) {

-			if (selectionProvider == null)

-				return;

-

-			if (selectionProvider instanceof IPostSelectionProvider) {

-				IPostSelectionProvider provider = (IPostSelectionProvider) selectionProvider;

-				provider.addPostSelectionChangedListener(this);

-			} else {

-				selectionProvider.addSelectionChangedListener(this);

-			}

-		}

-

-		public void uninstall(ISelectionProvider selectionProvider) {

-			if (selectionProvider == null)

-				return;

-

-			if (selectionProvider instanceof IPostSelectionProvider) {

-				IPostSelectionProvider provider = (IPostSelectionProvider) selectionProvider;

-				provider.removePostSelectionChangedListener(this);

-			} else {

-				selectionProvider.removeSelectionChangedListener(this);

-			}

-		}

-

-		@Override

-		public void selectionChanged(SelectionChangedEvent event) {

-			updateHighlights(event.getSelection());

-		}

-	}

-

-	private void updateHighlights(ISelection selection) {

-		if (!(selection instanceof ITextSelection)) {

-			return;

-		}

-		ITextSelection textSelection = (ITextSelection) selection;

-		if (highlightJob != null) {

-			highlightJob.cancel();

-		}

-		highlightJob = Job.createSystem("LSP4E Highlight", //$NON-NLS-1$

-				(ICoreRunnable)(monitor -> collectHighlights(textSelection.getOffset(), monitor)));

-		highlightJob.schedule();

-	}

-

-	private EditorSelectionChangedListener editorSelectionChangedListener;

-

-	public void install(ITextViewer viewer) {

-		if (!(viewer instanceof ISourceViewer)) {

-			return;

-		}

-		IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID);

-		preferences.addPreferenceChangeListener(this);

-		this.enabled = preferences.getBoolean(TOGGLE_HIGHLIGHT_PREFERENCE, true);

-		this.sourceViewer = (ISourceViewer) viewer;

-		editorSelectionChangedListener = new EditorSelectionChangedListener();

-		editorSelectionChangedListener.install(sourceViewer.getSelectionProvider());

-	}

-

-	public void uninstall() {

-		if (sourceViewer != null) {

-			editorSelectionChangedListener.uninstall(sourceViewer.getSelectionProvider());

-		}

-		IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID);

-		preferences.removePreferenceChangeListener(this);

-		cancel();

-	}

-

-	@Override

-	public void setProgressMonitor(IProgressMonitor monitor) {

-

-	}

-

-	@Override

-	public void initialReconcile() {

-		if (sourceViewer != null) {

-			ISelectionProvider selectionProvider = sourceViewer.getSelectionProvider();

-			final StyledText textWidget = sourceViewer.getTextWidget();

-			if (textWidget != null && selectionProvider != null) {

-				textWidget.getDisplay().asyncExec(() -> {

-					if (!textWidget.isDisposed()) {

-						updateHighlights(selectionProvider.getSelection());

-					}

-				});

-			}

-		}

-	}

-

-	@Override

-	public void setDocument(IDocument document) {

-		this.document = document;

-	}

-

-	/**

-	 * Collect list of highlight for the given caret offset by consuming language

-	 * server 'documentHighligh't.

-	 *

-	 * @param caretOffset

-	 * @param monitor

-	 */

-	private void collectHighlights(int caretOffset, IProgressMonitor monitor) {

-		if (sourceViewer == null || !enabled || monitor.isCanceled()) {

-			return;

-		}

-		cancel();

-		Position position;

-		try {

-			position = LSPEclipseUtils.toPosition(caretOffset, document);

-		} catch (BadLocationException e) {

-			LanguageServerPlugin.logError(e);

-			return;

-		}

-		URI uri = LSPEclipseUtils.toUri(document);

-		if(uri == null) {

-			return;

-		}

-		TextDocumentIdentifier identifier = new TextDocumentIdentifier(uri.toString());

-		DocumentHighlightParams params = new DocumentHighlightParams(identifier, position);

-		request = LanguageServiceAccessor.getLanguageServers(document,

-				capabilities -> LSPEclipseUtils.hasCapability(capabilities.getDocumentHighlightProvider()))

-				.thenAcceptAsync(languageServers ->

-				CompletableFuture.allOf(languageServers.stream()

-						.map(languageServer -> languageServer.getTextDocumentService().documentHighlight(params))

-						.map(request -> request.thenAcceptAsync(result -> {

-							if (!monitor.isCanceled()) {

-								updateAnnotations(result, sourceViewer.getAnnotationModel());

-							}

-						})).toArray(CompletableFuture[]::new)));

-	}

-

-	/**

-	 * Cancel the last call of 'documentHighlight'.

-	 */

-	private void cancel() {

-		if (request != null && !request.isDone()) {

-			request.cancel(true);

-			request = null;

-		}

-	}

-

-	/**

-	 * Update the UI annotations with the given list of DocumentHighlight.

-	 *

-	 * @param highlights

-	 *            list of DocumentHighlight

-	 * @param annotationModel

-	 *            annotation model to update.

-	 */

-	private void updateAnnotations(List<? extends DocumentHighlight> highlights, IAnnotationModel annotationModel) {

-		Map<Annotation, org.eclipse.jface.text.Position> annotationMap = new HashMap<>(highlights.size());

-		for (DocumentHighlight h : highlights) {

-			if (h != null) {

-				try {

-					int start = LSPEclipseUtils.toOffset(h.getRange().getStart(), document);

-					int end = LSPEclipseUtils.toOffset(h.getRange().getEnd(), document);

-					annotationMap.put(new Annotation(kindToAnnotationType(h.getKind()), false, null),

-							new org.eclipse.jface.text.Position(start, end - start));

-				} catch (BadLocationException e) {

-					LanguageServerPlugin.logError(e);

-				}

-			}

-		}

-

-		synchronized (getLockObject(annotationModel)) {

-			if (annotationModel instanceof IAnnotationModelExtension) {

-				((IAnnotationModelExtension) annotationModel).replaceAnnotations(fOccurrenceAnnotations, annotationMap);

-			} else {

-				removeOccurrenceAnnotations();

-				Iterator<Entry<Annotation, org.eclipse.jface.text.Position>> iter = annotationMap.entrySet().iterator();

-				while (iter.hasNext()) {

-					Entry<Annotation, org.eclipse.jface.text.Position> mapEntry = iter.next();

-					annotationModel.addAnnotation(mapEntry.getKey(), mapEntry.getValue());

-				}

-			}

-			fOccurrenceAnnotations = annotationMap.keySet().toArray(new Annotation[annotationMap.keySet().size()]);

-		}

-	}

-

-	/**

-	 * Returns the lock object for the given annotation model.

-	 *

-	 * @param annotationModel

-	 *            the annotation model

-	 * @return the annotation model's lock object

-	 */

-	private Object getLockObject(IAnnotationModel annotationModel) {

-		if (annotationModel instanceof ISynchronizable) {

-			Object lock = ((ISynchronizable) annotationModel).getLockObject();

-			if (lock != null)

-				return lock;

-		}

-		return annotationModel;

-	}

-

-	void removeOccurrenceAnnotations() {

-		IAnnotationModel annotationModel = sourceViewer.getAnnotationModel();

-		if (annotationModel == null || fOccurrenceAnnotations == null)

-			return;

-

-		synchronized (getLockObject(annotationModel)) {

-			if (annotationModel instanceof IAnnotationModelExtension) {

-				((IAnnotationModelExtension) annotationModel).replaceAnnotations(fOccurrenceAnnotations, null);

-			} else {

-				for (Annotation fOccurrenceAnnotation : fOccurrenceAnnotations)

-					annotationModel.removeAnnotation(fOccurrenceAnnotation);

-			}

-			fOccurrenceAnnotations = null;

-		}

-	}

-

-	private String kindToAnnotationType(DocumentHighlightKind kind) {

-		switch (kind) {

-		case Read:

-			return READ_ANNOTATION_TYPE;

-		case Write:

-			return WRITE_ANNOTATION_TYPE;

-		default:

-			return TEXT_ANNOTATION_TYPE;

-		}

-	}

-

-	@Override

-	public void preferenceChange(PreferenceChangeEvent event) {

-		if (event.getKey().equals(TOGGLE_HIGHLIGHT_PREFERENCE)) {

-			this.enabled = Boolean.valueOf(event.getNewValue().toString());

-			if (enabled) {

-				initialReconcile();

-			} else {

-				removeOccurrenceAnnotations();

-			}

-		}

-	}

-

-	@Override

-	public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) {

-		// Do nothing

-	}

-

-	@Override

-	public void reconcile(IRegion partition) {

-		// Do nothing

-	}

-

-}

diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/hover/FocusableBrowserInformationControl.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/hover/FocusableBrowserInformationControl.java
deleted file mode 100644
index 9fc3c0e..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/hover/FocusableBrowserInformationControl.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2020 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.hover;
-
-import java.io.IOException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.internal.text.html.BrowserInformationControl;
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.text.DefaultInformationControl;
-import org.eclipse.jface.text.IInformationControlCreator;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.browser.LocationEvent;
-import org.eclipse.swt.browser.LocationListener;
-import org.eclipse.swt.browser.ProgressListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.editors.text.EditorsUI;
-import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
-
-@SuppressWarnings("restriction")
-public class FocusableBrowserInformationControl extends BrowserInformationControl {
-
-	private static final String HEAD = "<head>"; //$NON-NLS-1$
-
-	private static final LocationListener HYPER_LINK_LISTENER = new LocationListener() {
-
-		@Override
-		public void changing(LocationEvent event) {
-			if (!"about:blank".equals(event.location)) { //$NON-NLS-1$
-				IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-				LSPEclipseUtils.open(event.location, page, null);
-				event.doit = false;
-			}
-		}
-
-		@Override
-		public void changed(LocationEvent event) {
-			// comment requested by sonar
-		}
-	};
-
-	public FocusableBrowserInformationControl(Shell parent, String symbolicFontName, boolean resizable) {
-		super(parent, JFaceResources.DEFAULT_FONT, resizable);
-	}
-
-	public FocusableBrowserInformationControl(Shell parent) {
-		super(parent, JFaceResources.DEFAULT_FONT, EditorsUI.getTooltipAffordanceString());
-	}
-
-	@Override
-	protected void createContent(Composite parent) {
-		super.createContent(parent);
-		Browser b = (Browser) (parent.getChildren()[0]);
-		b.addProgressListener(ProgressListener.completedAdapter(event -> {
-			if (getInput() == null)
-				return;
-			Browser browser = (Browser) event.getSource();
-			@Nullable
-			Point constraints = getSizeConstraints();
-			Point hint = computeSizeHint();
-
-			setSize(hint.x, hint.y);
-			browser.execute("document.getElementsByTagName(\"html\")[0].style.whiteSpace = \"nowrap\""); //$NON-NLS-1$
-			Double width = 20 + (Double) browser.evaluate("return document.body.scrollWidth;"); //$NON-NLS-1$
-
-			setSize(width.intValue(), hint.y);
-			browser.execute("document.getElementsByTagName(\"html\")[0].style.whiteSpace = \"normal\""); //$NON-NLS-1$
-			Double height = (Double) browser.evaluate("return document.body.scrollHeight;"); //$NON-NLS-1$
-			if (Platform.getPreferencesService().getBoolean(EditorsUI.PLUGIN_ID,
-					AbstractDecoratedTextEditorPreferenceConstants.EDITOR_SHOW_TEXT_HOVER_AFFORDANCE, true,
-					null)) {
-				FontData[] fontDatas = JFaceResources.getDialogFont().getFontData();
-				height = fontDatas[0].getHeight() + height;
-			}
-
-			width = Double.valueOf(width * 1.5);
-			if (constraints != null && constraints.x < width) {
-				width = (double) constraints.x;
-			}
-			if (constraints != null && constraints.y < height) {
-				height = (double) constraints.y;
-			}
-
-			setSize(width.intValue(), height.intValue());
-		}));
-		b.setJavascriptEnabled(true);
-	}
-
-	@Override
-	public void setInput(Object input) {
-		if (input instanceof String) {
-			input = styleHtml((String)input);
-		}
-		super.setInput(input);
-	}
-
-	public String styleHtml(String html) {
-		if (html == null || html.isEmpty()) {
-			return html;
-		}
-
-		// put CSS styling to match Eclipse style
-		ColorRegistry colorRegistry = JFaceResources.getColorRegistry();
-		Color foreground = colorRegistry.get("org.eclipse.ui.workbench.HOVER_FOREGROUND"); //$NON-NLS-1$
-		Color background = colorRegistry.get("org.eclipse.ui.workbench.HOVER_BACKGROUND"); //$NON-NLS-1$
-		String style = "<style TYPE='text/css'>html { " + //$NON-NLS-1$
-				"font-family: " + JFaceResources.getDefaultFontDescriptor().getFontData()[0].getName() + "; " + //$NON-NLS-1$ //$NON-NLS-2$
-				"font-size: " + Integer.toString(JFaceResources.getDefaultFontDescriptor().getFontData()[0].getHeight()) //$NON-NLS-1$
-				+ "pt; " + //$NON-NLS-1$
-				(background != null ? "background-color: " + toHTMLrgb(background.getRGB()) + "; " : "") + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				(foreground != null ? "color: " + toHTMLrgb(foreground.getRGB()) + "; " : "") + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				" }</style>"; //$NON-NLS-1$
-
-		String hlStyle = null;
-		try {
-			URL urlHJScript = FileLocator.toFileURL(LanguageServerPlugin.getDefault().getClass().getResource("/resources/highlight.min.js/highlight.min.js")); //$NON-NLS-1$
-			URL urlHJCss = FileLocator.toFileURL(LanguageServerPlugin.getDefault().getClass().getResource(isDarkTheme() ? //
-					"/resources/highlight.min.js/styles/dark.min.css" : //$NON-NLS-1$
-					"/resources/highlight.min.js/styles/default.min.css")); //$NON-NLS-1$
-			if (urlHJScript != null && urlHJCss != null) {
-				hlStyle = "<link rel='stylesheet' href='" + urlHJCss.toString() + "'>" + //$NON-NLS-1$ //$NON-NLS-2$
-						"<script src='" + urlHJScript.toString() + "'></script>" + //$NON-NLS-1$ //$NON-NLS-2$
-						"<script>hljs.highlightAll();</script>"; //$NON-NLS-1$
-			}
-		} catch (IOException e) {
-			LanguageServerPlugin.logError(e);
-		}
-
-		int headIndex = html.indexOf(HEAD);
-		StringBuilder builder = new StringBuilder(html.length() + style.length());
-		builder.append(html.substring(0, headIndex + HEAD.length()));
-		builder.append(style);
-		if (hlStyle != null) {
-			builder.append(hlStyle);
-		}
-		builder.append(html.substring(headIndex + HEAD.length()));
-		return builder.toString();
-	}
-
-	private boolean isDarkTheme() {
-		RGB color = getShell().getBackground().getRGB();
-		return (color.red * 0.299 + color.green * 0.587+ color.blue *0.114) < 128; //turn to grey and check the level
-	}
-
-	private static @NonNull String toHTMLrgb(RGB rgb) {
-		StringBuilder builder = new StringBuilder(7);
-		builder.append('#');
-		appendAsHexString(builder, rgb.red);
-		appendAsHexString(builder, rgb.green);
-		appendAsHexString(builder, rgb.blue);
-		return builder.toString();
-	}
-
-	private static void appendAsHexString(StringBuilder buffer, int intValue) {
-		String hexValue= Integer.toHexString(intValue);
-		if (hexValue.length() == 1) {
-			buffer.append('0');
-		}
-		buffer.append(hexValue);
-	}
-
-	@Override
-	public IInformationControlCreator getInformationPresenterControlCreator() {
-		return parent -> {
-			if (BrowserInformationControl.isAvailable(parent)) {
-				BrowserInformationControl res = new FocusableBrowserInformationControl(parent, JFaceResources.DEFAULT_FONT,
-						true);
-				res.addLocationListener(HYPER_LINK_LISTENER);
-				return res;
-			} else {
-				return new DefaultInformationControl(parent);
-			}
-		};
-	}
-
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/hover/LSPTextHover.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/hover/LSPTextHover.java
deleted file mode 100644
index 919c60e..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/hover/LSPTextHover.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2020 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Lucas Bullen (Red Hat Inc.) - Bug 508458 - Add support for codelens
- *  Angelo Zerr <angelo.zerr@gmail.com> - Bug 525602 - LSBasedHover must check if LS have codelens capability
- *  Lucas Bullen (Red Hat Inc.) - [Bug 517428] Requests sent before initialization
- *  Alex Boyko (VMware) - [Bug 566164] fix for NPE in LSPTextHover
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.hover;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.internal.text.html.BrowserInformationControl;
-import org.eclipse.jface.text.AbstractReusableInformationControlCreator;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DefaultInformationControl;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IInformationControl;
-import org.eclipse.jface.text.IInformationControlCreator;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextHover;
-import org.eclipse.jface.text.ITextHoverExtension;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Region;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4j.Hover;
-import org.eclipse.lsp4j.MarkedString;
-import org.eclipse.lsp4j.MarkupContent;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.mylyn.wikitext.markdown.MarkdownLanguage;
-import org.eclipse.mylyn.wikitext.parser.MarkupParser;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * LSP implementation of {@link org.eclipse.jface.text.ITextHover}
- *
- */
-@SuppressWarnings("restriction")
-public class LSPTextHover implements ITextHover, ITextHoverExtension {
-
-	private static final MarkupParser MARKDOWN_PARSER = new MarkupParser(new MarkdownLanguage(true));
-
-	private IRegion lastRegion;
-	private ITextViewer lastViewer;
-	private CompletableFuture<List<Hover>> request;
-
-	@Override
-	public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
-		if (textViewer == null || hoverRegion == null) {
-			return null;
-		}
-		CompletableFuture<String> hoverInfoFuture = getHoverInfoFuture(textViewer, hoverRegion);
-		if (hoverInfoFuture != null) {
-			try {
-				String result = hoverInfoFuture.get(500, TimeUnit.MILLISECONDS);
-				if (result != null) {
-					return result;
-				}
-			} catch (ExecutionException | TimeoutException e) {
-				LanguageServerPlugin.logError(e);
-			} catch (InterruptedException e) {
-				LanguageServerPlugin.logError(e);
-				Thread.currentThread().interrupt();
-			}
-		}
-		return null;
-	}
-
-	public CompletableFuture<String> getHoverInfoFuture(@NonNull ITextViewer textViewer, @NonNull IRegion hoverRegion) {
-		if (this.request == null || !textViewer.equals(this.lastViewer) || !hoverRegion.equals(this.lastRegion)) {
-			initiateHoverRequest(textViewer, hoverRegion.getOffset());
-		}
-		return request.thenApply(hoversList -> {
-			String result = hoversList.stream()
-				.filter(Objects::nonNull)
-				.map(LSPTextHover::getHoverString)
-				.filter(Objects::nonNull)
-				.collect(Collectors.joining("\n\n")) //$NON-NLS-1$
-				.trim();
-			if (!result.isEmpty()) {
-				return MARKDOWN_PARSER.parseToHtml(result);
-			} else {
-				return null;
-			}
-		});
-	}
-
-	protected static @Nullable String getHoverString(@NonNull Hover hover) {
-		Either<List<Either<String, MarkedString>>, MarkupContent> hoverContent = hover.getContents();
-		if (hoverContent.isLeft()) {
-			List<Either<String, MarkedString>> contents = hoverContent.getLeft();
-			if (contents == null || contents.isEmpty()) {
-				return null;
-			}
-			return contents.stream().map(content -> {
-				if (content.isLeft()) {
-					return content.getLeft();
-				} else if (content.isRight()) {
-					MarkedString markedString = content.getRight();
-					// TODO this won't work fully until markup parser will support syntax
-					// highlighting but will help display
-					// strings with language tags, e.g. without it things after <?php tag aren't
-					// displayed
-					if (markedString.getLanguage() != null && !markedString.getLanguage().isEmpty()) {
-						return String.format("```%s%n%s%n```", markedString.getLanguage(), markedString.getValue()); //$NON-NLS-1$
-					} else {
-						return markedString.getValue();
-					}
-				} else {
-					return ""; //$NON-NLS-1$
-				}
-			}).filter(((Predicate<String>) String::isEmpty).negate()).collect(Collectors.joining("\n\n")); //$NON-NLS-1$ )
-		} else {
-			return hoverContent.getRight().getValue();
-		}
-	}
-
-	@Override
-	public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
-		if (textViewer == null) {
-			return null;
-		}
-		if (this.request == null || this.lastRegion == null || !textViewer.equals(this.lastViewer)
-				|| offset < this.lastRegion.getOffset() || offset > lastRegion.getOffset() + lastRegion.getLength()) {
-			initiateHoverRequest(textViewer, offset);
-		}
-		try {
-			final IDocument document = textViewer.getDocument();
-			boolean[] oneHoverAtLeast = new boolean[] { false };
-			int[] regionStartOffset = new int[] { 0 };
-			int[] regionEndOffset = new int[] { document.getLength() };
-			this.request.get(500, TimeUnit.MILLISECONDS).stream()
-				.filter(Objects::nonNull)
-				.map(Hover::getRange)
-				.filter(Objects::nonNull)
-				.forEach(range -> {
-					try {
-							regionStartOffset[0] = Math.max(regionStartOffset[0],
-									LSPEclipseUtils.toOffset(range.getStart(), document));
-							regionEndOffset[0] = Math.min(regionEndOffset[0],
-									LSPEclipseUtils.toOffset(range.getEnd(), document));
-						oneHoverAtLeast[0] = true;
-					} catch (BadLocationException e) {
-						LanguageServerPlugin.logError(e);
-					}
-				});
-			if (oneHoverAtLeast[0]) {
-				this.lastRegion = new Region(regionStartOffset[0], regionEndOffset[0] - regionStartOffset[0]);
-				return this.lastRegion;
-			}
-		} catch (ExecutionException | TimeoutException e1) {
-			LanguageServerPlugin.logError(e1);
-		} catch (InterruptedException e1) {
-			LanguageServerPlugin.logError(e1);
-			Thread.currentThread().interrupt();
-		}
-		this.lastRegion = new Region(offset, 0);
-		return this.lastRegion;
-	}
-
-	/**
-	 * Initialize hover requests with hover (if available) and codelens (if
-	 * available).
-	 *
-	 * @param viewer
-	 *            the text viewer.
-	 * @param offset
-	 *            the hovered offset.
-	 */
-	private void initiateHoverRequest(@NonNull ITextViewer viewer, int offset) {
-		final IDocument document = viewer.getDocument();
-		this.lastViewer = viewer;
-		this.request = LanguageServiceAccessor
-			.getLanguageServers(document, capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
-				.thenApplyAsync(languageServers -> // Async is very important here, otherwise the LS Client thread is in
-													// deadlock and doesn't read bytes from LS
-				languageServers.stream()
-					.map(languageServer -> {
-						try {
-								return languageServer.getTextDocumentService()
-										.hover(LSPEclipseUtils.toHoverParams(offset, document)).get();
-						} catch (ExecutionException | BadLocationException e) {
-							LanguageServerPlugin.logError(e);
-							return null;
-						} catch (InterruptedException e) {
-							LanguageServerPlugin.logError(e);
-							Thread.currentThread().interrupt();
-							return null;
-						}
-					}).filter(Objects::nonNull).collect(Collectors.toList()));
-	}
-
-	@Override
-	public IInformationControlCreator getHoverControlCreator() {
-		return new AbstractReusableInformationControlCreator() {
-			@Override
-			protected IInformationControl doCreateInformationControl(Shell parent) {
-				if (BrowserInformationControl.isAvailable(parent)) {
-					return new FocusableBrowserInformationControl(parent);
-				} else {
-					return new DefaultInformationControl(parent);
-				}
-			}
-		};
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LSPLinkedEditingAutoEditStrategy.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LSPLinkedEditingAutoEditStrategy.java
deleted file mode 100644
index de791cc..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LSPLinkedEditingAutoEditStrategy.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2021 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Victor Rubezhny (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.linkedediting;
-
-import java.util.Comparator;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.concurrent.ExecutionException;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DocumentCommand;
-import org.eclipse.jface.text.IAutoEditStrategy;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.Range;
-
-public class LSPLinkedEditingAutoEditStrategy extends LSPLinkedEditingBase implements IAutoEditStrategy {
-
-	private IDocument fDocument;
-	private boolean fIsInstalled = false;
-
-	@Override
-	public void customizeDocumentCommand(IDocument document, DocumentCommand command) {
-		if (!checkCommand(command)) {
-			return;
-		}
-
-		if (!isOffsetInRanges(document, command.offset)) {
-			try {
-				collectLinkedEditingRanges(document, command.offset).get();
-			} catch (InterruptedException | ExecutionException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		}
-
-		if (fLinkedEditingRanges == null) {
-			return;
-		}
-
-		Set<Range> sortedRanges = new TreeSet<>(RANGE_OFFSET_ORDER);
-		sortedRanges.addAll(fLinkedEditingRanges.getRanges());
-
-		int changeStart = Integer.MAX_VALUE;
-		int changeEnd = Integer.MIN_VALUE;
-		Range commandRange = null;
-		int delta = 0;
-		try {
-			for (Range r : sortedRanges) {
-				int start = LSPEclipseUtils.toOffset(r.getStart(), document);
-				if (changeStart > start) {
-					changeStart = start;
-				}
-				int end = LSPEclipseUtils.toOffset(r.getEnd(), document);
-				if (changeEnd < end) {
-					changeEnd = end;
-				}
-
-				if (start <= command.offset && end >= command.offset) {
-					commandRange = r;
-					delta = command.offset - start;
-				}
-			}
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-			return;
-		}
-
-		if (commandRange == null) {
-			return;
-		}
-
-		StringBuilder text = new StringBuilder();
-		int caretOffset = -1;
-		try {
-			int currentOffset = changeStart;
-			for (Range r : sortedRanges) {
-				int rangeStart = LSPEclipseUtils.toOffset(r.getStart(), document);
-				int rangeEnd = LSPEclipseUtils.toOffset(r.getEnd(), document);
-				if (currentOffset < rangeStart) {
-					text.append(document.get(currentOffset, rangeStart - currentOffset));
-				}
-
-				int rangeChangeEnd = rangeStart + delta + command.length;
-				String rangeTextBeforeCommand = document.get(rangeStart, delta);
-				String rangeTextAfterCommand = rangeEnd > rangeChangeEnd ?
-						document.get(rangeChangeEnd, rangeEnd - rangeChangeEnd) : ""; //$NON-NLS-1$
-
-				text.append(rangeTextBeforeCommand).append(command.text);
-				if (r == commandRange) {
-					caretOffset = text.length();
-				}
-				text.append(rangeTextAfterCommand);
-				currentOffset = rangeEnd > rangeChangeEnd ? rangeEnd : rangeChangeEnd;
-			}
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-			return;
-		}
-
-		command.offset = changeStart;
-		command.length = changeEnd - changeStart;
-		command.text = text.toString();
-		command.caretOffset = changeStart + caretOffset;
-		command.shiftsCaret = false;
-	}
-
-	private boolean checkCommand(DocumentCommand command) {
-		if (!fIsInstalled) {
-			super.install();
-			fIsInstalled = true;
-		}
-		return fEnabled && !command.text.chars().anyMatch(Character::isWhitespace);
-	}
-
-	private boolean isOffsetInRanges(IDocument document, int offset) {
-		if (fDocument != document) {
-			// The document is a different one
-			fLinkedEditingRanges = null;
-			fDocument = document;
-			return false;
-		}
-
-		if (fLinkedEditingRanges != null) {
-			try {
-				for (Range r : fLinkedEditingRanges.getRanges()) {
-					if (LSPEclipseUtils.toOffset(r.getStart(), document) <= offset &&
-							LSPEclipseUtils.toOffset(r.getEnd(), document) >= offset) {
-						return true;
-					}
-				}
-			} catch (BadLocationException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		}
-		return false;
-	}
-
-    /**
-     * A Comparator that orders {@code Region} objects by offset
-     */
-    private static final Comparator<Range> RANGE_OFFSET_ORDER = new RangeOffsetComparator();
-    private static class RangeOffsetComparator
-            implements Comparator<Range> {
-    	@Override
-		public int compare(Range r1, Range r2) {
-            Position p1 = r1.getStart();
-            Position p2 = r2.getStart();
-
-            if (p1.getLine() == p2.getLine()) {
-            	return p1.getCharacter() - p2.getCharacter();
-            }
-
-            return p1.getLine() - p2.getLine();
-        }
-    }
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LSPLinkedEditingBase.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LSPLinkedEditingBase.java
deleted file mode 100644
index 7d9df9e..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LSPLinkedEditingBase.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2021 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Victor Rubezhny (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.linkedediting;
-
-import java.net.URI;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4j.LinkedEditingRanges;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.TextDocumentPositionParams;
-
-public class LSPLinkedEditingBase implements IPreferenceChangeListener {
-	public static final String LINKED_EDITING_PREFERENCE = "org.eclipse.ui.genericeditor.linkedediting"; //$NON-NLS-1$
-
-	protected LinkedEditingRanges fLinkedEditingRanges;
-	private CompletableFuture<Void> request;
-	protected boolean fEnabled;
-
-	protected void install() {
-		IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID);
-		preferences.addPreferenceChangeListener(this);
-		this.fEnabled = preferences.getBoolean(LINKED_EDITING_PREFERENCE, true);
-	}
-
-	protected void uninstall() {
-		IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID);
-		preferences.removePreferenceChangeListener(this);
-		cancel();
-	}
-
-	protected CompletableFuture<Void> collectLinkedEditingRanges(IDocument document, int offset) {
-		fLinkedEditingRanges = null;
-		cancel();
-
-		if (document == null) {
-			return CompletableFuture.completedFuture(null);
-		}
-		Position position;
-		try {
-			position = LSPEclipseUtils.toPosition(offset, document);
-		} catch (BadLocationException e) {
-			LanguageServerPlugin.logError(e);
-			return CompletableFuture.completedFuture(null);
-		}
-		URI uri = LSPEclipseUtils.toUri(document);
-		if(uri == null) {
-			return CompletableFuture.completedFuture(null);
-		}
-		TextDocumentIdentifier identifier = new TextDocumentIdentifier(uri.toString());
-		TextDocumentPositionParams params = new TextDocumentPositionParams(identifier, position);
-
-		return request = LanguageServiceAccessor.getLanguageServers(document,
-					capabilities -> LSPEclipseUtils.hasCapability(capabilities.getLinkedEditingRangeProvider()))
-				.thenComposeAsync(languageServers ->
-					CompletableFuture.allOf(languageServers.stream()
-							.map(ls -> ls.getTextDocumentService().linkedEditingRange(LSPEclipseUtils.toLinkedEditingRangeParams(params))
-								.thenAcceptAsync(result -> fLinkedEditingRanges = result))
-									.toArray(CompletableFuture[]::new)));
-	}
-
-	/**
-	 * Cancel the last call of 'linkedEditing'.
-	 */
-	private void cancel() {
-		if (request != null && !request.isDone()) {
-			request.cancel(true);
-			request = null;
-		}
-	}
-
-	@Override
-	public void preferenceChange(PreferenceChangeEvent event) {
-		if (event.getKey().equals(LINKED_EDITING_PREFERENCE)) {
-			this.fEnabled = Boolean.valueOf(event.getNewValue().toString());
-		}
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LSPLinkedEditingReconcilingStrategy.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LSPLinkedEditingReconcilingStrategy.java
deleted file mode 100644
index bebe9e9..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LSPLinkedEditingReconcilingStrategy.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2021 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Victor Rubezhny (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.linkedediting;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.eclipse.core.runtime.ICoreRunnable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ISynchronizable;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.reconciler.DirtyRegion;
-import org.eclipse.jface.text.reconciler.IReconcilingStrategy;
-import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.IAnnotationModel;
-import org.eclipse.jface.text.source.IAnnotationModelExtension;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4j.LinkedEditingRanges;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.swt.custom.StyledText;
-
-public class LSPLinkedEditingReconcilingStrategy extends LSPLinkedEditingBase implements IReconcilingStrategy, IReconcilingStrategyExtension, IDocumentListener {
-	public static final String LINKEDEDITING_ANNOTATION_TYPE = "org.eclipse.lsp4e.linkedediting"; //$NON-NLS-1$
-
-	private ISourceViewer sourceViewer;
-	private IDocument fDocument;
-	private EditorSelectionChangedListener editorSelectionChangedListener;
-	private Job highlightJob;
-
-	/**
-	 * Holds the current linkedEditing annotations.
-	 */
-	private Annotation[] fLinkedEditingAnnotations = null;
-
-	public LSPLinkedEditingReconcilingStrategy() {
-	}
-
-	class EditorSelectionChangedListener implements ISelectionChangedListener {
-		public void install(ISelectionProvider selectionProvider) {
-			if (selectionProvider == null)
-				return;
-
-			if (selectionProvider instanceof IPostSelectionProvider) {
-				IPostSelectionProvider provider = (IPostSelectionProvider) selectionProvider;
-				provider.addPostSelectionChangedListener(this);
-			} else {
-				selectionProvider.addSelectionChangedListener(this);
-			}
-		}
-
-		public void uninstall(ISelectionProvider selectionProvider) {
-			if (selectionProvider == null)
-				return;
-
-			if (selectionProvider instanceof IPostSelectionProvider) {
-				IPostSelectionProvider provider = (IPostSelectionProvider) selectionProvider;
-				provider.removePostSelectionChangedListener(this);
-			} else {
-				selectionProvider.removeSelectionChangedListener(this);
-			}
-		}
-
-		@Override
-		public void selectionChanged(SelectionChangedEvent event) {
-			updateLinkedEditingHighlights(event.getSelection());
-		}
-	}
-
-	public void install(ITextViewer viewer) {
-		if (!(viewer instanceof ISourceViewer)) {
-			return;
-		}
-
-		super.install();
-		this.sourceViewer = (ISourceViewer) viewer;
-		editorSelectionChangedListener = new EditorSelectionChangedListener();
-		editorSelectionChangedListener.install(sourceViewer.getSelectionProvider());
-	}
-
-	@Override
-	public void uninstall() {
-		if (sourceViewer != null) {
-			editorSelectionChangedListener.uninstall(sourceViewer.getSelectionProvider());
-		}
-		super.uninstall();
-	}
-
-	@Override
-	public void preferenceChange(PreferenceChangeEvent event) {
-		super.preferenceChange(event);
-		if (event.getKey().equals(LINKED_EDITING_PREFERENCE)) {
-			if (fEnabled) {
-				initialReconcile();
-			} else {
-				removeLinkedEditingAnnotations();
-			}
-		}
-	}
-
-	@Override
-	public void setProgressMonitor(IProgressMonitor monitor) {
-	}
-
-	@Override
-	public void initialReconcile() {
-		if (sourceViewer != null) {
-			ISelectionProvider selectionProvider = sourceViewer.getSelectionProvider();
-			final StyledText textWidget = sourceViewer.getTextWidget();
-			if (textWidget != null && selectionProvider != null) {
-				textWidget.getDisplay().asyncExec(() -> {
-					if (!textWidget.isDisposed()) {
-						updateLinkedEditingHighlights(selectionProvider.getSelection());
-					}
-				});
-			}
-		}
-	}
-
-	@Override
-	public void setDocument(IDocument document) {
-		if (this.fDocument != null) {
-			this.fDocument.removeDocumentListener(this);
-			fLinkedEditingRanges = null;
-		}
-
-		this.fDocument = document;
-
-		if (this.fDocument != null) {
-			this.fDocument.addDocumentListener(this);
-		}
-	}
-
-	@Override
-	public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) {
-	}
-
-	@Override
-	public void reconcile(IRegion partition) {
-	}
-
-	@Override
-	public void documentAboutToBeChanged(DocumentEvent event) {
-	}
-
-	@Override
-	public void documentChanged(DocumentEvent event) {
-		updateLinkedEditingHighlights(event.getOffset());
-	}
-
-	private void updateLinkedEditingHighlights(ISelection selection) {
-		if (selection instanceof ITextSelection) {
-			updateLinkedEditingHighlights(((ITextSelection) selection).getOffset());
-		}
-	}
-
-	private void updateLinkedEditingHighlights(int offset) {
-		if (sourceViewer != null  && fDocument != null  && fEnabled) {
-			collectLinkedEditingRanges(fDocument, offset)
-				.thenAcceptAsync(theVoid -> updateLinkedEditingHighlights());
-		}
-	}
-
-	private void updateLinkedEditingHighlights() {
-		if (highlightJob != null) {
-			highlightJob.cancel();
-		}
-		highlightJob = Job.createSystem("LSP4E Linked Editing Highlight", //$NON-NLS-1$
-				(ICoreRunnable)(monitor -> {
-					updateLinkedEditingAnnotations(
-							sourceViewer.getAnnotationModel(), monitor);
-					}));
-		highlightJob.schedule();
-	}
-
-	/**
-	 * Update the UI annotations with the given list of LinkedEditing.
-	 *
-	 * @param annotationModel
-	 *            annotation model to update.
-	 * @param monitor
-	 * 			  a progress monitor
-	 */
-	private void updateLinkedEditingAnnotations(IAnnotationModel annotationModel, IProgressMonitor monitor) {
-		if (monitor.isCanceled()) {
-			return;
-		}
-
-		LinkedEditingRanges ranges = fLinkedEditingRanges;
-		Map<Annotation, org.eclipse.jface.text.Position> annotationMap = new HashMap<>(ranges == null ? 0 : ranges.getRanges().size());
-		if (ranges != null) {
-			for (Range r : ranges.getRanges()) {
-				try {
-					int start = LSPEclipseUtils.toOffset(r.getStart(), fDocument);
-					int end = LSPEclipseUtils.toOffset(r.getEnd(), fDocument);
-					annotationMap.put(new Annotation(LINKEDEDITING_ANNOTATION_TYPE, false, null),
-							new org.eclipse.jface.text.Position(start, end - start));
-				} catch (BadLocationException e) {
-					LanguageServerPlugin.logError(e);
-				}
-			}
-		}
-
-		synchronized (getLockObject(annotationModel)) {
-			if (annotationModel instanceof IAnnotationModelExtension) {
-				((IAnnotationModelExtension) annotationModel).replaceAnnotations(fLinkedEditingAnnotations, annotationMap);
-			} else {
-				removeLinkedEditingAnnotations();
-				Iterator<Entry<Annotation, org.eclipse.jface.text.Position>> iter = annotationMap.entrySet().iterator();
-				while (iter.hasNext()) {
-					Entry<Annotation, org.eclipse.jface.text.Position> mapEntry = iter.next();
-					annotationModel.addAnnotation(mapEntry.getKey(), mapEntry.getValue());
-				}
-			}
-			fLinkedEditingAnnotations = annotationMap.keySet().toArray(new Annotation[annotationMap.keySet().size()]);
-		}
-	}
-
-	/**
-	 * Returns the lock object for the given annotation model.
-	 *
-	 * @param annotationModel
-	 *            the annotation model
-	 * @return the annotation model's lock object
-	 */
-	private Object getLockObject(IAnnotationModel annotationModel) {
-		if (annotationModel instanceof ISynchronizable) {
-			Object lock = ((ISynchronizable) annotationModel).getLockObject();
-			if (lock != null)
-				return lock;
-		}
-		return annotationModel;
-	}
-
-	void removeLinkedEditingAnnotations() {
-		IAnnotationModel annotationModel = sourceViewer.getAnnotationModel();
-		if (annotationModel == null || fLinkedEditingAnnotations == null)
-			return;
-
-		synchronized (getLockObject(annotationModel)) {
-			if (annotationModel instanceof IAnnotationModelExtension) {
-				((IAnnotationModelExtension) annotationModel).replaceAnnotations(fLinkedEditingAnnotations, null);
-			} else {
-				for (Annotation fOccurrenceAnnotation : fLinkedEditingAnnotations)
-					annotationModel.removeAnnotation(fOccurrenceAnnotation);
-			}
-			fLinkedEditingAnnotations = null;
-		}
-	}
-}
\ No newline at end of file
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LinkedEditingHighlightReconciler.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LinkedEditingHighlightReconciler.java
deleted file mode 100644
index 8947d1d..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/linkedediting/LinkedEditingHighlightReconciler.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2021 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Victor Rubezhny (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.linkedediting;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.reconciler.IReconciler;
-import org.eclipse.jface.text.reconciler.MonoReconciler;
-
-/**
- * {@link IReconciler} implementation to Linked Editing.
- */
-public class LinkedEditingHighlightReconciler extends MonoReconciler {
-
-	public LinkedEditingHighlightReconciler() {
-		super(new LSPLinkedEditingReconcilingStrategy(), false);
-	}
-
-	@Override
-	public void install(ITextViewer textViewer) {
-		super.install(textViewer);
-		// no need to do that if https://bugs.eclipse.org/bugs/show_bug.cgi?id=521326 is accepted
-		((LSPLinkedEditingReconcilingStrategy) getReconcilingStrategy(IDocument.DEFAULT_CONTENT_TYPE)).install(textViewer);
-	}
-
-	@Override
-	public void uninstall() {
-		super.uninstall();
-		// no need to do that if https://bugs.eclipse.org/bugs/show_bug.cgi?id=521326 is accepted
-		((LSPLinkedEditingReconcilingStrategy) getReconcilingStrategy(IDocument.DEFAULT_CONTENT_TYPE)).uninstall();
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSFindReferences.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSFindReferences.java
deleted file mode 100644
index 7634882..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSFindReferences.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Michał Niewrzał (Rogue Wave Software Inc.)
- *  Angelo Zerr <angelo.zerr@gmail.com> - fix Bug 526255
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.references;
-
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.search.ui.NewSearchUI;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-/**
- * LSP "Find references" handler.
- *
- */
-public class LSFindReferences extends AbstractHandler implements IHandler {
-
-	@Override
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IEditorPart part = HandlerUtil.getActiveEditor(event);
-		if (! (part instanceof ITextEditor)) {
-			return null;
-		}
-		ITextEditor editor = (ITextEditor)part;
-		IDocument document = LSPEclipseUtils.getDocument(editor);
-		if (document == null) {
-			return null;
-		}
-		ISelection sel = editor.getSelectionProvider().getSelection();
-		if (!(sel instanceof ITextSelection)) {
-			return null;
-		}
-		int offset = ((ITextSelection) sel).getOffset();
-		LanguageServiceAccessor.getLanguageServers(document, capabilities -> LSPEclipseUtils.hasCapability(capabilities.getReferencesProvider())).thenAcceptAsync(languageServers -> {
-			if (languageServers.isEmpty()) {
-				return;
-			}
-			LanguageServer ls = languageServers.get(0);
-			try {
-				LSSearchQuery query = new LSSearchQuery(document, offset, ls);
-				HandlerUtil.getActiveShell(event).getDisplay().asyncExec(() -> NewSearchUI.runQueryInBackground(query));
-			} catch (BadLocationException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		});
-		return null;
-	}
-
-	@Override
-	public boolean isEnabled() {
-		IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
-		if (!(part instanceof ITextEditor)) {
-			return false;
-		}
-		ITextEditor editor = (ITextEditor) part;
-		ISelection selection = editor.getSelectionProvider().getSelection();
-		if (selection.isEmpty() || !(selection instanceof ITextSelection)) {
-			return false;
-		}
-		try {
-			return !LanguageServiceAccessor
-					.getLanguageServers(LSPEclipseUtils.getDocument(editor),
-							capabilities -> LSPEclipseUtils.hasCapability(capabilities.getReferencesProvider()))
-					.get(50, TimeUnit.MILLISECONDS).isEmpty();
-		} catch (TimeoutException | java.util.concurrent.ExecutionException e) {
-			LanguageServerPlugin.logError(e);
-		} catch (InterruptedException e) {
-			LanguageServerPlugin.logError(e);
-			Thread.currentThread().interrupt();
-		}
-		return false;
-	}
-
-	@Override
-	public boolean isHandled() {
-		return true;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSSearchQuery.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSSearchQuery.java
deleted file mode 100644
index 1fc9014..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSSearchQuery.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2016 Red Hat Inc. and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *   Mickael Istria (Red Hat Inc.) - initial implementation

- *   Michał Niewrzał (Rogue Wave Software Inc.)

- *   Angelo Zerr <angelo.zerr@gmail.com> - fix Bug 526255

- *   Lucas Bullen (Red Hat Inc.) - [Bug 517428] Requests sent before initialization

- *******************************************************************************/

-package org.eclipse.lsp4e.operations.references;

-

-import java.util.List;

-import java.util.concurrent.CompletableFuture;

-

-import org.eclipse.core.resources.IFile;

-import org.eclipse.core.resources.IResource;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.OperationCanceledException;

-import org.eclipse.core.runtime.Path;

-import org.eclipse.core.runtime.Status;

-import org.eclipse.jdt.annotation.NonNull;

-import org.eclipse.jface.text.BadLocationException;

-import org.eclipse.jface.text.IDocument;

-import org.eclipse.jface.text.IRegion;

-import org.eclipse.lsp4e.LSPEclipseUtils;

-import org.eclipse.lsp4e.LanguageServerPlugin;

-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;

-import org.eclipse.lsp4e.ui.Messages;

-import org.eclipse.lsp4j.Location;

-import org.eclipse.lsp4j.Position;

-import org.eclipse.lsp4j.ReferenceContext;

-import org.eclipse.lsp4j.ReferenceParams;

-import org.eclipse.lsp4j.TextDocumentIdentifier;

-import org.eclipse.lsp4j.services.LanguageServer;

-import org.eclipse.osgi.util.NLS;

-import org.eclipse.search.internal.ui.text.FileMatch;

-import org.eclipse.search.internal.ui.text.FileSearchQuery;

-import org.eclipse.search.internal.ui.text.LineElement;

-import org.eclipse.search.ui.ISearchQuery;

-import org.eclipse.search.ui.ISearchResult;

-import org.eclipse.search.ui.text.AbstractTextSearchResult;

-import org.eclipse.search.ui.text.Match;

-

-/**

- * {@link ISearchQuery} implementation for LSP.

- *

- */

-public class LSSearchQuery extends FileSearchQuery {

-

-	private final @NonNull IDocument document;

-	private final @NonNull LanguageServer languageServer;

-	private final Position position;

-	private final String filename;

-

-	private LSSearchResult result;

-	private long startTime;

-

-	private CompletableFuture<List<? extends Location>> references;

-

-	/**

-	 * LSP search query to "Find references" from the given offset of the given

-	 * {@link LSPDocumentInfo}.

-	 *

-	 * @param document

-	 * @param offset

-	 * @param languageServer

-	 * @throws BadLocationException

-	 */

-	public LSSearchQuery(@NonNull IDocument document, int offset, @NonNull LanguageServer languageServer)

-			throws BadLocationException {

-		super("", false, false, null); //$NON-NLS-1$

-		this.document = document;

-		this.languageServer = languageServer;

-		this.position = LSPEclipseUtils.toPosition(offset, document);

-		this.filename = Path.fromPortableString(LSPEclipseUtils.toUri(document).getPath()).lastSegment();

-	}

-

-	@Override

-	public IStatus run(IProgressMonitor monitor) throws OperationCanceledException {

-		startTime = System.currentTimeMillis();

-		// Cancel last references future if needed.

-		if (references != null) {

-			references.cancel(true);

-		}

-		AbstractTextSearchResult textResult = (AbstractTextSearchResult) getSearchResult();

-		textResult.removeAll();

-

-		try {

-			// Execute LSP "references" service

-			ReferenceParams params = new ReferenceParams();

-			params.setContext(new ReferenceContext(true));

-			params.setTextDocument(new TextDocumentIdentifier(LSPEclipseUtils.toUri(document).toString()));

-			params.setPosition(position);

-			languageServer.getTextDocumentService().references(params)

-					.thenAcceptAsync(locs -> {

-						// Loop for each LSP Location and convert it to Match search.

-						for (Location loc : locs) {

-							Match match = toMatch(loc);

-							result.addMatch(match);

-						}

-					});

-			return Status.OK_STATUS;

-		} catch (Exception ex) {

-			return new Status(IStatus.ERROR, LanguageServerPlugin.getDefault().getBundle().getSymbolicName(),

-					ex.getMessage(), ex);

-		}

-	}

-

-	/**

-	 * Convert the given LSP {@link Location} to Eclipse search {@link Match}.

-	 *

-	 * @param location

-	 *            the LSP location to convert.

-	 * @return the converted Eclipse search {@link Match}.

-	 */

-	private static Match toMatch(Location location) {

-		try {

-			IResource resource = LSPEclipseUtils.findResourceFor(location.getUri());

-			IDocument document = LSPEclipseUtils.getDocument(resource);

-			if (document != null) {

-				int startOffset = LSPEclipseUtils.toOffset(location.getRange().getStart(), document);

-				int endOffset = LSPEclipseUtils.toOffset(location.getRange().getEnd(), document);

-

-				IRegion lineInformation = document.getLineInformationOfOffset(startOffset);

-				LineElement lineEntry = new LineElement(resource, document.getLineOfOffset(startOffset),

-						lineInformation.getOffset(),

-						document.get(lineInformation.getOffset(), lineInformation.getLength()));

-				return new FileMatch((IFile) resource, startOffset, endOffset - startOffset, lineEntry);

-

-			}

-			Position startPosition = location.getRange().getStart();

-			LineElement lineEntry = new LineElement(resource, startPosition.getLine(), 0,

-					String.format("%s:%s", startPosition.getLine(), startPosition.getCharacter())); //$NON-NLS-1$

-			return new FileMatch((IFile) resource, 0, 0, lineEntry);

-		} catch (BadLocationException ex) {

-			LanguageServerPlugin.logError(ex);

-		}

-		return null;

-	}

-

-	@Override

-	public ISearchResult getSearchResult() {

-		if (result == null) {

-			result = new LSSearchResult(this);

-		}

-		return result;

-	}

-

-	@Override

-	public String getLabel() {

-		return Messages.LSSearchQuery_label;

-	}

-

-	@Override

-	public String getResultLabel(int nMatches) {

-		long time = 0;

-		if (startTime > 0) {

-			time = System.currentTimeMillis() - startTime;

-		}

-		if (nMatches == 1) {

-			return NLS.bind(Messages.LSSearchQuery_singularReference,

-					new Object[] { filename, position.getLine() + 1, position.getCharacter() + 1, time });

-		}

-		return NLS.bind(Messages.LSSearchQuery_pluralReferences,

-				new Object[] { filename, position.getLine() + 1, position.getCharacter() + 1, nMatches, time });

-	}

-

-	@Override

-	public boolean isFileNameSearch() {

-		// Return false to display lines where references are found

-		return false;

-	}

-}

diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSSearchResult.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSSearchResult.java
deleted file mode 100644
index c8b7593..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSSearchResult.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2016 Red Hat Inc. and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *   Mickael Istria (Red Hat Inc.) - initial implementation

- *   Michał Niewrzał (Rogue Wave Software Inc.)

- *   Angelo Zerr <angelo.zerr@gmail.com> - fix Bug 526255

- *******************************************************************************/

-package org.eclipse.lsp4e.operations.references;

-

-import org.eclipse.search.internal.ui.text.FileSearchResult;

-import org.eclipse.search.ui.ISearchResult;

-

-/**

- * {@link ISearchResult} implementation for LSP.

- *

- */

-public class LSSearchResult extends FileSearchResult {

-

-	public LSSearchResult(LSSearchQuery job) {

-		super(job);

-	}

-

-}

diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/rename/LSPRenameHandler.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/rename/LSPRenameHandler.java
deleted file mode 100644
index 0090697..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/rename/LSPRenameHandler.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2020 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Angelo Zerr <angelo.zerr@gmail.com> - Bug 525400 - [rename] improve rename support with ltk UI
- *  Jan Koehnlein (TypeFox) - handle missing existing document gracefully
- *  Martin Lippert (Pivotal) - Bug 561373 - added async enablement for late language servers
- *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Bug 564839
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.rename;
-
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.HandlerEvent;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.lsp4j.RenameOptions;
-import org.eclipse.lsp4j.ServerCapabilities;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring;
-import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor;
-import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-public class LSPRenameHandler extends AbstractHandler implements IHandler {
-
-	@Override
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IEditorPart part = HandlerUtil.getActiveEditor(event);
-		if (!(part instanceof ITextEditor)) {
-			return null;
-		}
-		ISelection sel = ((ITextEditor) part).getSelectionProvider().getSelection();
-		if (!(sel instanceof ITextSelection) || sel.isEmpty()) {
-			return null;
-		}
-		ITextSelection textSelection = (ITextSelection) sel;
-		IDocument document = LSPEclipseUtils.getDocument((ITextEditor) part);
-		if (document == null) {
-			return null;
-		}
-		Shell shell = part.getSite().getShell();
-		return LanguageServiceAccessor.getLanguageServers(document, LSPRenameHandler::isRenameProvider)
-				.thenAcceptAsync(languageServers -> {
-					if (languageServers.isEmpty()) {
-						return;
-					}
-					int offset = textSelection.getOffset();
-					// TODO consider better strategy to pick LS, or iterate over LS until one gives
-					// a good result
-					RefactoringProcessor processor = new LSPRenameProcessor(document, languageServers.get(0), offset);
-					ProcessorBasedRefactoring refactoring = new ProcessorBasedRefactoring(processor);
-					LSPRenameRefactoringWizard wizard = new LSPRenameRefactoringWizard(refactoring);
-					RefactoringWizardOpenOperation operation = new RefactoringWizardOpenOperation(wizard);
-					shell.getDisplay().asyncExec(() -> {
-						try {
-							operation.run(shell, Messages.rename_title);
-						} catch (InterruptedException e1) {
-							LanguageServerPlugin.logError(e1);
-							Thread.currentThread().interrupt();
-						}
-					});
-				});
-	}
-
-	public static boolean isRenameProvider(ServerCapabilities serverCapabilities) {
-		if (serverCapabilities == null) {
-			return false;
-		}
-		Either<Boolean, RenameOptions> renameProvider = serverCapabilities.getRenameProvider();
-		if (renameProvider == null) {
-			return false;
-		}
-		if (renameProvider.isLeft()) {
-			return renameProvider.getLeft() != null && renameProvider.getLeft();
-		}
-		if (renameProvider.isRight()) {
-			return renameProvider.getRight() != null;
-		}
-		return false;
-	}
-
-	@Override
-	public void setEnabled(Object evaluationContext) {
-		IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
-		boolean isEnable = part instanceof ITextEditor;
-		if (isEnable) {
-			ISelection selection = ((ITextEditor) part).getSelectionProvider().getSelection();
-			isEnable = selection instanceof ITextSelection && !selection.isEmpty();
-
-			IDocument document = LSPEclipseUtils.getDocument((ITextEditor) part);
-			if (document != null && isEnable) {
-				try {
-					isEnable = !LanguageServiceAccessor.getLanguageServers(document, LSPRenameHandler::isRenameProvider)
-							.get(50, TimeUnit.MILLISECONDS).isEmpty();
-				} catch (java.util.concurrent.ExecutionException | TimeoutException e) {
-
-					// in case the language servers take longer to kick in, defer the enablement to
-					// a later time
-					LanguageServiceAccessor.getLanguageServers(document, LSPRenameHandler::isRenameProvider)
-							.thenAccept((languageServer) -> {
-								boolean enabled = !languageServer.isEmpty();
-								HandlerEvent handleEvent = new HandlerEvent(this, enabled, false);
-								fireHandlerChanged(handleEvent);
-							});
-
-					isEnable = false;
-
-				} catch (InterruptedException e) {
-					LanguageServerPlugin.logError(e);
-					Thread.currentThread().interrupt();
-					isEnable = false;
-				}
-			}
-		}
-		setBaseEnabled(isEnable);
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/rename/LSPRenameProcessor.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/rename/LSPRenameProcessor.java
deleted file mode 100644
index 267bdfd..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/rename/LSPRenameProcessor.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/**

- *  Copyright (c) 2017-2021 Angelo ZERR.

- *  All rights reserved. This program and the accompanying materials

- *  are made available under the terms of the Eclipse Public License v1.0

- *  which accompanies this distribution, and is available at

- *  http://www.eclipse.org/legal/epl-v10.html

- *

- *  Contributors:

- *  Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation

- *  Lucas Bullen (Red Hat Inc.) - [Bug 517428] Requests sent before initialization

- *  Jan Koehnlein (TypeFox) - give user feedback on failures and no-ops

- *  Pierre-Yves B. <pyvesdev@gmail.com> - Bug 525411 - [rename] input field should be filled with symbol to rename

- */

-package org.eclipse.lsp4e.operations.rename;

-

-import java.util.List;

-import java.util.concurrent.CompletableFuture;

-import java.util.concurrent.TimeUnit;

-

-import org.eclipse.core.runtime.Assert;

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.OperationCanceledException;

-import org.eclipse.core.runtime.Status;

-import org.eclipse.jdt.annotation.NonNull;

-import org.eclipse.jface.text.BadLocationException;

-import org.eclipse.jface.text.IDocument;

-import org.eclipse.lsp4e.LSPEclipseUtils;

-import org.eclipse.lsp4e.LanguageServerPlugin;

-import org.eclipse.lsp4e.LanguageServiceAccessor;

-import org.eclipse.lsp4e.ui.Messages;

-import org.eclipse.lsp4j.PrepareRenameParams;

-import org.eclipse.lsp4j.PrepareRenameResult;

-import org.eclipse.lsp4j.Range;

-import org.eclipse.lsp4j.RenameOptions;

-import org.eclipse.lsp4j.RenameParams;

-import org.eclipse.lsp4j.ServerCapabilities;

-import org.eclipse.lsp4j.TextDocumentIdentifier;

-import org.eclipse.lsp4j.WorkspaceEdit;

-import org.eclipse.lsp4j.jsonrpc.ResponseErrorException;

-import org.eclipse.lsp4j.jsonrpc.messages.Either;

-import org.eclipse.lsp4j.jsonrpc.messages.ResponseError;

-import org.eclipse.lsp4j.services.LanguageServer;

-import org.eclipse.ltk.core.refactoring.Change;

-import org.eclipse.ltk.core.refactoring.RefactoringStatus;

-import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;

-import org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant;

-import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor;

-import org.eclipse.ltk.core.refactoring.participants.SharableParticipants;

-

-/**

- * LTK {@link RefactoringProcessor} implementation to refactoring LSP symbols.

- *

- */

-public class LSPRenameProcessor extends RefactoringProcessor {

-

-	private static final String ID = "org.eclipse.lsp4e.operations.rename"; //$NON-NLS-1$

-

-	private final IDocument document;

-	private final LanguageServer languageServer;

-	private final int offset;

-

-	private String newName;

-

-	private WorkspaceEdit rename;

-	private Either<Range, PrepareRenameResult> prepareRenameResult;

-

-	public LSPRenameProcessor(@NonNull IDocument document, LanguageServer languageServer, int offset) {

-		this.document = document;

-		this.languageServer = languageServer;

-		this.offset = offset;

-	}

-

-	@Override

-	public Object[] getElements() {

-		return null;

-	}

-

-	@Override

-	public String getIdentifier() {

-		return ID;

-	}

-

-	@Override

-	public String getProcessorName() {

-		return Messages.rename_processor_name;

-	}

-

-	@Override

-	public boolean isApplicable() throws CoreException {

-		return true;

-	}

-

-	@Override

-	public RefactoringStatus checkInitialConditions(IProgressMonitor pm)

-			throws CoreException, OperationCanceledException {

-		RefactoringStatus status = new RefactoringStatus();

-

-		if (document == null) {

-			return status;

-		}

-		try {

-			CompletableFuture<List<LanguageServer>> serverList = LanguageServiceAccessor.getLanguageServers(document, LSPRenameProcessor::isPrepareRenameProvider) ;

-			for (LanguageServer serverToTry : serverList.get(500, TimeUnit.MILLISECONDS)) {

-				// check if prepareRename is supported by the active LSP

-				if (languageServer.equals(serverToTry)) {

-					TextDocumentIdentifier identifier = new TextDocumentIdentifier(LSPEclipseUtils.toUri(document).toString());

-					PrepareRenameParams params = new PrepareRenameParams();

-					params.setTextDocument(identifier);

-					params.setPosition(LSPEclipseUtils.toPosition(offset, document));

-					prepareRenameResult = languageServer.getTextDocumentService().prepareRename(params).get(1000, TimeUnit.MILLISECONDS);

-					if (prepareRenameResult == null) {

-						status.addFatalError(Messages.rename_invalidated);

-					}

-				}

-			}

-		} catch (Exception e) {

-			handleError(e, status);

-			return new RefactoringStatus();

-		}

-		return status;

-	}

-

-	public String getPlaceholder() {

-		if (prepareRenameResult != null) {

-			if (prepareRenameResult.isRight()) {

-				return prepareRenameResult.getRight().getPlaceholder();

-			} else {

-				Range range = prepareRenameResult.getLeft();

-				try {

-					int startOffset = LSPEclipseUtils.toOffset(range.getStart(), document);

-					int endOffset = LSPEclipseUtils.toOffset(range.getEnd(), document);

-					return document.get(startOffset, endOffset - startOffset);

-				} catch (BadLocationException e) {

-					LanguageServerPlugin.logError(e);

-				}

-			}

-		}

-		return "newName"; //$NON-NLS-1$

-	}

-

-	public static boolean isPrepareRenameProvider(ServerCapabilities serverCapabilities) {

-		if (serverCapabilities == null) {

-			return false;

-		}

-		Either<Boolean, RenameOptions> renameProvider = serverCapabilities.getRenameProvider();

-		if (renameProvider == null) {

-			return false;

-		}

-

-		if (renameProvider.isRight()) {

-			return renameProvider.getRight() != null && renameProvider.getRight().getPrepareProvider();

-		}

-		return false;

-	}

-

-	@Override

-	public RefactoringStatus checkFinalConditions(IProgressMonitor pm, CheckConditionsContext context)

-			throws CoreException, OperationCanceledException {

-		RefactoringStatus status = new RefactoringStatus();

-		try {

-			RenameParams params = new RenameParams();

-			params.setPosition(LSPEclipseUtils.toPosition(offset, document));

-			TextDocumentIdentifier identifier = new TextDocumentIdentifier();

-			identifier.setUri(LSPEclipseUtils.toUri(document).toString());

-			params.setTextDocument(identifier);

-			params.setNewName(newName);

-			if (params.getNewName() != null) {

-				// TODO: how to manage ltk with CompletableFuture? Is 1000 ms is enough?

-				rename = languageServer.getTextDocumentService().rename(params).get(1000, TimeUnit.MILLISECONDS);

-				if (!status.hasError() && (rename == null || rename.getChanges().isEmpty())) {

-					status.addWarning(Messages.rename_empty_message);

-				}

-			}

-		} catch (Exception e) {

-			handleError(e, status);

-		}

-		return status;

-	}

-

-	private WorkspaceEdit handleError(Throwable e, RefactoringStatus status) {

-		if (e.getCause() instanceof ResponseErrorException) {

-			ResponseError responseError = ((ResponseErrorException) e.getCause()).getResponseError();

-			String message = responseError.getMessage()

-					+ ((responseError.getData() instanceof String) ? (": " + responseError.getData()) : ""); //$NON-NLS-1$ //$NON-NLS-2$

-			status.addFatalError(message);

-		} else {

-			status.addFatalError(e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName());

-		}

-		return null;

-	}

-

-	@Override

-	public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException {

-		if (rename == null) {

-			throw new CoreException(

-					new Status(IStatus.ERROR, LanguageServerPlugin.PLUGIN_ID, Messages.rename_processor_required));

-		}

-		return LSPEclipseUtils.toCompositeChange(rename);

-	}

-

-	@Override

-	public RefactoringParticipant[] loadParticipants(RefactoringStatus status, SharableParticipants sharedParticipants)

-			throws CoreException {

-		return null;

-	}

-

-	/**

-	 * Set new name.

-	 *

-	 * @param newName

-	 *            the new name.

-	 */

-	public void setNewName(String newName) {

-		Assert.isNotNull(newName);

-		this.newName = newName;

-	}

-}

diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/rename/LSPRenameRefactoringWizard.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/rename/LSPRenameRefactoringWizard.java
deleted file mode 100644
index a9054ec..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/rename/LSPRenameRefactoringWizard.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/**
- *  Copyright (c) 2017-2019 Angelo ZERR.
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- *
- *  Contributors:
- *  Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
- *  Pierre-Yves B. <pyvesdev@gmail.com> - Bug 525411 - [rename] input field should be filled with symbol to rename
- */
-package org.eclipse.lsp4e.operations.rename;
-
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.ltk.core.refactoring.Refactoring;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
-import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * The refactoring wizard for renaming LSP Symbols.
- *
- */
-public class LSPRenameRefactoringWizard extends RefactoringWizard {
-
-	public LSPRenameRefactoringWizard(Refactoring refactoring) {
-		super(refactoring, DIALOG_BASED_USER_INTERFACE);
-		super.setWindowTitle(Messages.rename_title);
-	}
-
-	@Override
-	protected void addUserInputPages() {
-		@SuppressWarnings("null")
-		LSPRenameProcessor processor = this.getRefactoring().getAdapter(LSPRenameProcessor.class);
-		this.addPage(new RenameInputWizardPage(processor));
-	}
-
-	/**
-	 * Rename input wizard page.
-	 *
-	 */
-	class RenameInputWizardPage extends UserInputWizardPage {
-
-		private Text nameText;
-
-		private final LSPRenameProcessor processor;
-
-		RenameInputWizardPage(LSPRenameProcessor processor) {
-			super(RenameInputWizardPage.class.getSimpleName());
-			this.processor = processor;
-		}
-
-		@Override
-		public void createControl(Composite parent) {
-			Composite composite = new Composite(parent, SWT.NONE);
-			composite.setLayout(new GridLayout(2, false));
-			composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-			composite.setFont(parent.getFont());
-
-			Label label = new Label(composite, SWT.NONE);
-			label.setLayoutData(new GridData());
-			label.setText(Messages.rename_label);
-
-			this.nameText = new Text(composite, SWT.BORDER);
-			this.nameText.setText(processor.getPlaceholder());
-			this.nameText.setFont(composite.getFont());
-			this.nameText.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false));
-			this.nameText.addModifyListener(e -> validatePage());
-			this.nameText.selectAll();
-			this.setControl(composite);
-			validatePage();
-		}
-
-		@Override
-		public IWizardPage getNextPage() {
-			this.setNewName();
-			return super.getNextPage();
-		}
-
-		@Override
-		public void setVisible(boolean visible) {
-			if (visible) {
-				this.nameText.setFocus();
-			}
-			super.setVisible(visible);
-		}
-
-		@Override
-		protected boolean performFinish() {
-			this.setNewName();
-			return super.performFinish();
-		}
-
-		private void setNewName() {
-			this.processor.setNewName(this.nameText.getText());
-		}
-
-		/**
-		 * Validate page fields.
-		 */
-		private final void validatePage() {
-			RefactoringStatus status = validateName();
-			setPageComplete(status);
-		}
-
-		/**
-		 * Returns the status of the validated name.
-		 *
-		 * @return the status of the validated name.
-		 */
-		private RefactoringStatus validateName() {
-			// Name is required
-			if (this.nameText.getText().trim().length() == 0) {
-				return RefactoringStatus.createFatalErrorStatus(Messages.rename_processor_required);
-			}
-			return new RefactoringStatus();
-		}
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInFileDialog.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInFileDialog.java
deleted file mode 100644
index 94b0732..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInFileDialog.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.symbols;
-
-import java.net.URI;
-import java.nio.file.Path;
-import java.util.List;
-
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.filebuffers.LocationKind;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.dialogs.PopupDialog;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.outline.SymbolsLabelProvider;
-import org.eclipse.lsp4e.outline.SymbolsModel.DocumentSymbolWithFile;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.lsp4j.DocumentSymbol;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-public class LSPSymbolInFileDialog extends PopupDialog {
-
-	private static class SymbolsContentProvider extends ArrayContentProvider implements ITreeContentProvider {
-
-		@Override
-		public Object[] getChildren(Object parentElement) {
-			if (parentElement instanceof Either<?, ?>) {
-				Either<SymbolInformation, DocumentSymbol> either = (Either<SymbolInformation, DocumentSymbol>) parentElement;
-				if (either.isRight()) {
-					return getChildren(either.getRight());
-				}
-			} else if (parentElement instanceof DocumentSymbol) {
-				List<DocumentSymbol> children = ((DocumentSymbol) parentElement).getChildren();
-				return children == null ? new Object[0] : children.toArray();
-			}
-			return null;
-		}
-
-		@Override
-		public Object getParent(Object element) {
-			return null;
-		}
-
-		@Override
-		public boolean hasChildren(Object element) {
-			if (element instanceof Either<?, ?>) {
-				Either<SymbolInformation, DocumentSymbol> either = (Either<SymbolInformation, DocumentSymbol>) element;
-				if (either.isRight()) {
-					return hasChildren(either.getRight());
-				}
-			} else if (element instanceof DocumentSymbol) {
-				return ((DocumentSymbol) element).getChildren() != null
-						&& !((DocumentSymbol) element).getChildren().isEmpty();
-			}
-			return false;
-		}
-	}
-
-	private ITextEditor fTextEditor;
-	private List<Either<SymbolInformation, DocumentSymbol>> fSymbols;
-
-	private @NonNull URI fileURI;
-
-	public LSPSymbolInFileDialog(Shell parentShell, ITextEditor textEditor,
-			@NonNull URI fileURI, List<Either<SymbolInformation, DocumentSymbol>> t) {
-		super(parentShell, PopupDialog.INFOPOPUPRESIZE_SHELLSTYLE, true, true, true, false, false, null, null);
-		this.fTextEditor = textEditor;
-		this.fileURI = fileURI;
-		this.fSymbols = t;
-		create();
-	}
-
-	@Override
-	protected Control createDialogArea(Composite parent) {
-		getShell().setText(NLS.bind(Messages.symbolsInFile, Path.of(fileURI).getFileName()));
-		FilteredTree filteredTree = new FilteredTree(parent, SWT.BORDER, new PatternFilter(), true, false);
-		TreeViewer viewer = filteredTree.getViewer();
-
-		viewer.setContentProvider(new SymbolsContentProvider());
-		IResource targetResource = LSPEclipseUtils.findResourceFor(this.fileURI.toString());
-		viewer.setLabelProvider(new SymbolsLabelProvider());
-		viewer.setUseHashlookup(true);
-		viewer.addSelectionChangedListener(event -> {
-			if (targetResource == null) {
-				return;
-			}
-			IStructuredSelection selection = (IStructuredSelection) event.getSelection();
-			if (selection.isEmpty()) {
-				return;
-			}
-			Object item = selection.getFirstElement();
-			if (item instanceof Either<?, ?>) {
-				item = ((Either<?, ?>) item).get();
-			}
-			IDocument targetDocument = FileBuffers.getTextFileBufferManager()
-					.getTextFileBuffer(targetResource.getFullPath(), LocationKind.IFILE).getDocument();
-
-			Range range = null;
-			if (item instanceof SymbolInformation) {
-				range = ((SymbolInformation) item).getLocation().getRange();
-			} else if (item instanceof DocumentSymbol) {
-				range = ((DocumentSymbol) item).getSelectionRange();
-			} else if (item instanceof DocumentSymbolWithFile) {
-				range = ((DocumentSymbolWithFile) item).symbol.getSelectionRange();
-			}
-			if (targetDocument != null && range != null) {
-				try {
-					int offset = LSPEclipseUtils.toOffset(range.getStart(), targetDocument);
-					int endOffset = LSPEclipseUtils.toOffset(range.getEnd(), targetDocument);
-					fTextEditor.selectAndReveal(offset, endOffset - offset);
-				} catch (BadLocationException e) {
-					LanguageServerPlugin.logError(e);
-				}
-			}
-		});
-
-		viewer.setInput(fSymbols);
-		return filteredTree;
-	}
-
-	@Override
-	protected void configureShell(Shell shell) {
-		super.configureShell(shell);
-
-		shell.setSize(280, 300);
-		Control control = fTextEditor.getAdapter(Control.class);
-		if (control != null) {
-			shell.setLocation(
-			        control.toDisplay(control.getBounds().width - shell.getSize().x, control.getLocation().y));
-		}
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInFileHandler.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInFileHandler.java
deleted file mode 100644
index e86233e..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInFileHandler.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Lucas Bullen (Red Hat Inc.) - [Bug 517428] Requests sent before initialization
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.symbols;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.lsp4j.DocumentSymbolParams;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-public class LSPSymbolInFileHandler extends AbstractHandler {
-
-	@Override
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IEditorPart part = HandlerUtil.getActiveEditor(event);
-		if (part instanceof ITextEditor) {
-			final ITextEditor textEditor = (ITextEditor) part;
-			Collection<LSPDocumentInfo> infos = LanguageServiceAccessor.getLSPDocumentInfosFor(
-					LSPEclipseUtils.getDocument(textEditor),
-					capabilities -> LSPEclipseUtils.hasCapability(capabilities.getDocumentSymbolProvider()));
-			if (infos.isEmpty()) {
-				return null;
-			}
-			// TODO maybe consider better strategy such as iterating on all LS until we have a good result
-			LSPDocumentInfo info = infos.iterator().next();
-			final Shell shell = HandlerUtil.getActiveShell(event);
-			DocumentSymbolParams params = new DocumentSymbolParams(
-					new TextDocumentIdentifier(info.getFileUri().toString()));
-			info.getInitializedLanguageClient()
-					.thenComposeAsync(langaugeServer -> langaugeServer.getTextDocumentService().documentSymbol(params))
-					.thenAcceptAsync(t -> shell.getDisplay().asyncExec(() -> {
-						LSPSymbolInFileDialog dialog = new LSPSymbolInFileDialog(shell, textEditor,
-								info.getFileUri(), t);
-						dialog.open();
-					}));
-		}
-		return null;
-	}
-
-	@Override
-	public boolean isEnabled() {
-		IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
-		if (part instanceof ITextEditor) {
-			List<LSPDocumentInfo> infos = LanguageServiceAccessor.getLSPDocumentInfosFor(
-					LSPEclipseUtils.getDocument((ITextEditor) part),
-					capabilities -> LSPEclipseUtils.hasCapability(capabilities.getDocumentSymbolProvider()));
-			return !infos.isEmpty();
-		}
-		return false;
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInWorkspaceDialog.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInWorkspaceDialog.java
deleted file mode 100644
index aece38f..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInWorkspaceDialog.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2019 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.symbols;
-
-import java.util.Comparator;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.contentassist.BoldStylerProvider;
-import org.eclipse.jface.viewers.StyledString;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.outline.CNFOutlinePage;
-import org.eclipse.lsp4e.outline.SymbolsLabelProvider;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.lsp4j.WorkspaceSymbolParams;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog;
-
-public class LSPSymbolInWorkspaceDialog extends FilteredItemsSelectionDialog {
-
-	private static final String DIALOG_SETTINGS = LSPSymbolInWorkspaceDialog.class.getName();
-
-	private static class InternalSymbolsLabelProvider extends SymbolsLabelProvider {
-
-		private String pattern;
-		private BoldStylerProvider stylerProvider;
-
-		public InternalSymbolsLabelProvider(BoldStylerProvider stylerProvider) {
-			super(true, InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID)
-					.getBoolean(CNFOutlinePage.SHOW_KIND_PREFERENCE, false));
-			this.stylerProvider = stylerProvider;
-		}
-
-		@Override
-		public StyledString getStyledText(Object element) {
-			StyledString styledString = super.getStyledText(element);
-			int index = styledString.getString().toLowerCase().indexOf(pattern);
-			if (index != -1) {
-				styledString.setStyle(index, pattern.length(), stylerProvider.getBoldStyler());
-			}
-			return styledString;
-		}
-
-		@Override
-		protected int getMaxSeverity(IResource resource, IDocument doc, Range range) throws CoreException, BadLocationException {
-			int maxSeverity = -1;
-			for (IMarker marker : resource.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_ZERO)) {
-				int offset = marker.getAttribute(IMarker.CHAR_START, -1);
-				if (offset != -1) {
-					maxSeverity = Math.max(maxSeverity, marker.getAttribute(IMarker.SEVERITY, -1));
-				}
-			}
-			return maxSeverity;
-		}
-
-		public void setPattern(String pattern) {
-			this.pattern = pattern;
-		}
-	}
-
-	private class InternalItemsFilter extends ItemsFilter {
-
-		@Override
-		public boolean matchItem(Object item) {
-			if (!(item instanceof SymbolInformation)) {
-				return false;
-			}
-			SymbolInformation info = (SymbolInformation) item;
-			return info.getName().toLowerCase().indexOf(getPattern().toLowerCase()) != -1;
-		}
-
-		@Override
-		public boolean isConsistentItem(Object item) {
-			return true;
-		}
-	}
-
-	private List<@NonNull LanguageServer> languageServers;
-	private InternalSymbolsLabelProvider labelProvider;
-
-	public LSPSymbolInWorkspaceDialog(Shell shell, List<@NonNull LanguageServer> languageServers) {
-		super(shell);
-		this.languageServers = languageServers;
-		this.labelProvider = new InternalSymbolsLabelProvider(new BoldStylerProvider(shell.getFont()));
-		setMessage(Messages.LSPSymbolInWorkspaceDialog_DialogLabel);
-		setTitle(Messages.LSPSymbolInWorkspaceDialog_DialogTitle);
-		setListLabelProvider(labelProvider);
-	}
-
-	@Override
-	protected ItemsFilter createFilter() {
-		InternalItemsFilter itemsFilter = new InternalItemsFilter();
-		labelProvider.setPattern(itemsFilter.getPattern());
-		return itemsFilter;
-	}
-
-	@Override
-	protected void fillContentProvider(AbstractContentProvider contentProvider, ItemsFilter itemsFilter,
-			IProgressMonitor monitor) throws CoreException {
-		if (itemsFilter.getPattern().isEmpty()) {
-			return;
-		}
-
-		for (LanguageServer server : this.languageServers) {
-			if (monitor.isCanceled()) {
-				return;
-			}
-
-			WorkspaceSymbolParams params = new WorkspaceSymbolParams(itemsFilter.getPattern());
-			CompletableFuture<List<? extends SymbolInformation>> symbols = server.getWorkspaceService().symbol(params);
-
-			try {
-				List<?> items = symbols.get(1, TimeUnit.SECONDS);
-				if(items != null) {
-					for (Object item : items) {
-						if (item != null) {
-							contentProvider.add(item, itemsFilter);
-						}
-					}
-				}
-			} catch (ExecutionException | TimeoutException e) {
-				LanguageServerPlugin.logError(e);
-			} catch (InterruptedException e) {
-				LanguageServerPlugin.logError(e);
-				Thread.currentThread().interrupt();
-			}
-		}
-	}
-
-	@Override
-	public String getElementName(Object item) {
-		SymbolInformation info = (SymbolInformation) item;
-		return info.getName();
-	}
-
-	@Override
-	protected Comparator<SymbolInformation> getItemsComparator() {
-		return (o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName());
-	}
-
-	@Override
-	protected IStatus validateItem(Object item) {
-		return Status.OK_STATUS;
-	}
-
-	@Override
-	protected IDialogSettings getDialogSettings() {
-		IDialogSettings settings = LanguageServerPlugin.getDefault().getDialogSettings().getSection(DIALOG_SETTINGS);
-		if (settings == null) {
-			settings = LanguageServerPlugin.getDefault().getDialogSettings().addNewSection(DIALOG_SETTINGS);
-		}
-		return settings;
-	}
-
-	@Override
-	protected Control createExtendedContentArea(Composite parent) {
-		return null;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInWorkspaceHandler.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInWorkspaceHandler.java
deleted file mode 100644
index 4358fcb..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/LSPSymbolInWorkspaceHandler.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.symbols;
-
-import java.util.List;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-public class LSPSymbolInWorkspaceHandler extends AbstractHandler {
-
-	@Override
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IEditorPart part = HandlerUtil.getActiveEditor(event);
-		IResource resource = null;
-		if (part != null && part.getEditorInput() != null) {
-			resource = part.getEditorInput().getAdapter(IResource.class);
-		} else {
-			IStructuredSelection selection = HandlerUtil.getCurrentStructuredSelection(event);
-			if (selection.isEmpty() || !(selection.getFirstElement() instanceof IAdaptable)) {
-				return null;
-			}
-			IAdaptable adaptable = (IAdaptable) selection.getFirstElement();
-			resource = adaptable.getAdapter(IResource.class);
-		}
-
-		IProject project = resource.getProject();
-		List<@NonNull LanguageServer> languageServers = LanguageServiceAccessor.getLanguageServers(project, capabilities -> LSPEclipseUtils.hasCapability(capabilities.getWorkspaceSymbolProvider()));
-		if (languageServers.isEmpty()) {
-			return null;
-		}
-		IWorkbenchSite site = HandlerUtil.getActiveSite(event);
-		if (site == null) {
-			return null;
-		}
-		LSPSymbolInWorkspaceDialog dialog = new LSPSymbolInWorkspaceDialog(site.getShell(), languageServers);
-		if (dialog.open() != IDialogConstants.OK_ID) {
-			return null;
-		}
-		SymbolInformation symbolInformation = (SymbolInformation) dialog.getFirstResult();
-		Location location = symbolInformation.getLocation();
-
-		IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-		LSPEclipseUtils.openInEditor(location, page);
-		return null;
-	}
-
-	@Override
-	public boolean isEnabled() {
-		IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
-		if (part instanceof ITextEditor) {
-			List<LSPDocumentInfo> infos = LanguageServiceAccessor.getLSPDocumentInfosFor(
-					LSPEclipseUtils.getDocument((ITextEditor) part),
-					capabilities -> LSPEclipseUtils.hasCapability(capabilities.getWorkspaceSymbolProvider()));
-			return !infos.isEmpty();
-		}
-		return false;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolQuickAccessElement.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolQuickAccessElement.java
deleted file mode 100644
index faf2396..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolQuickAccessElement.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.symbols;
-
-import java.util.Random;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.outline.SymbolsLabelProvider;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.quickaccess.QuickAccessElement;
-
-public class WorkspaceSymbolQuickAccessElement extends QuickAccessElement {
-
-	private static final SymbolsLabelProvider LABEL_PROVIDER = new SymbolsLabelProvider(false, false);
-	private static final Random randomNumbers = new Random();
-
-	private final SymbolInformation symbol;
-	private final int idExtension;
-
-	public WorkspaceSymbolQuickAccessElement(SymbolInformation symbol) {
-		this.symbol = symbol;
-
-		// this random number id extension is a workaround for
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=550835
-		//
-		// it avoids once selected symbols to disappear from the quick access list
-		this.idExtension = randomNumbers.nextInt();
-	}
-
-	@Override
-	public String getLabel() {
-		return LABEL_PROVIDER.getText(symbol);
-	}
-
-	@Override
-	public ImageDescriptor getImageDescriptor() {
-		return ImageDescriptor.createFromImage(LABEL_PROVIDER.getImage(symbol));
-	}
-
-	@Override
-	public String getId() {
-		Range range = symbol.getLocation().getRange();
-		return symbol.getName() + '@' + symbol.getLocation().getUri() + '[' + range.getStart().getLine() + ',' + range.getStart().getCharacter() + ':' + range.getEnd().getLine() + ',' + range.getEnd().getCharacter() + ']' + ',' + idExtension;
-	}
-
-	@Override
-	public void execute() {
-		LSPEclipseUtils.openInEditor(symbol.getLocation(), PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage());
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolsQuickAccessProvider.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolsQuickAccessProvider.java
deleted file mode 100644
index 9b3bd73..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolsQuickAccessProvider.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.operations.symbols;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.stream.Collectors;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4j.WorkspaceSymbolParams;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.ui.quickaccess.IQuickAccessComputer;
-import org.eclipse.ui.quickaccess.IQuickAccessComputerExtension;
-import org.eclipse.ui.quickaccess.QuickAccessElement;
-
-public class WorkspaceSymbolsQuickAccessProvider implements IQuickAccessComputer, IQuickAccessComputerExtension {
-
-
-	private List<@NonNull LanguageServer> usedLanguageServers;
-
-	@Override
-	public QuickAccessElement[] computeElements() {
-		return new QuickAccessElement[0];
-	}
-
-	@Override
-	public void resetState() {
-	}
-
-	@Override
-	public boolean needsRefresh() {
-		return this.usedLanguageServers == null
-				|| !this.usedLanguageServers.equals(LanguageServiceAccessor.getActiveLanguageServers(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getWorkspaceSymbolProvider())));
-	}
-
-	@Override
-	public QuickAccessElement[] computeElements(String query, IProgressMonitor monitor) {
-		this.usedLanguageServers = LanguageServiceAccessor.getActiveLanguageServers(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getWorkspaceSymbolProvider()));
-		if (usedLanguageServers.isEmpty()) {
-			return new QuickAccessElement[0];
-		}
-		WorkspaceSymbolParams params = new WorkspaceSymbolParams(query);
-		List<QuickAccessElement> res = Collections.synchronizedList(new ArrayList<>());
-
-		try {
-			CompletableFuture.allOf(usedLanguageServers.stream()
-					.map(ls -> ls.getWorkspaceService().symbol(params).thenAcceptAsync(symbols -> {
-						if (symbols != null) {
-							res.addAll(symbols.stream().map(WorkspaceSymbolQuickAccessElement::new)
-									.collect(Collectors.toList()));
-						}
-					})).toArray(CompletableFuture[]::new)).get(1000, TimeUnit.MILLISECONDS);
-		}
-		catch (ExecutionException | TimeoutException | InterruptedException e) {
-			LanguageServerPlugin.logError(e);
-		}
-
-		return res.toArray(new QuickAccessElement[res.size()]);
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/CNFOutlinePage.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/CNFOutlinePage.java
deleted file mode 100644
index a814942..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/CNFOutlinePage.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Lucas Bullen (Red Hat Inc.) - Bug 520053 - Clicking nodes in the 'Outline' should navigate
- *******************************************************************************/
-package org.eclipse.lsp4e.outline;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.Adapters;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.ITextViewerExtension5;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProviderChangedEvent;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreePath;
-import org.eclipse.jface.viewers.TreeSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.outline.SymbolsModel.DocumentSymbolWithFile;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.navigator.CommonViewer;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
-
-public class CNFOutlinePage implements IContentOutlinePage, ILabelProviderListener {
-
-	public static final String ID = "org.eclipse.lsp4e.outline"; //$NON-NLS-1$
-	public static final String LINK_WITH_EDITOR_PREFERENCE = ID + ".linkWithEditor"; //$NON-NLS-1$
-	public static final String SHOW_KIND_PREFERENCE = ID + ".showKind"; //$NON-NLS-1$
-
-	private CommonViewer outlineViewer;
-	private final IEclipsePreferences preferences;
-	private final ITextEditor textEditor;
-	private final ITextViewer textEditorViewer;
-	private final IDocument document;
-	private final LanguageServer languageServer;
-
-	static final class OutlineInfo {
-
-		final ITextEditor textEditor;
-		final LanguageServer languageServer;
-		final IDocument document;
-
-		private OutlineInfo(IDocument document, LanguageServer languageServer, @Nullable ITextEditor textEditor) {
-			this.document = document;
-			this.languageServer = languageServer;
-			this.textEditor = textEditor;
-		}
-	}
-
-	public CNFOutlinePage(LanguageServer languageServer, @Nullable ITextEditor textEditor) {
-		this.preferences = InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID);
-		this.textEditor = textEditor;
-		if (textEditor != null) {
-			this.textEditorViewer = ((ITextViewer) textEditor.getAdapter(ITextOperationTarget.class));
-		} else {
-			this.textEditorViewer = null;
-		}
-		this.document = LSPEclipseUtils.getDocument(textEditor);
-		this.languageServer = languageServer;
-	}
-
-	@Override
-	public void createControl(Composite parent) {
-		this.outlineViewer = new CommonViewer(ID, parent, SWT.NONE);
-		this.outlineViewer.setInput(new OutlineInfo(this.document, this.languageServer, this.textEditor));
-		this.outlineViewer.getLabelProvider().addListener(this);
-		if (textEditor != null) {
-			this.outlineViewer.addOpenListener(event -> {
-				if (preferences.getBoolean(LINK_WITH_EDITOR_PREFERENCE, true))
-					textEditor.setFocus();
-			});
-			this.outlineViewer.addSelectionChangedListener(event -> {
-				if (preferences.getBoolean(LINK_WITH_EDITOR_PREFERENCE, true)
-						&& outlineViewer.getTree().isFocusControl() && outlineViewer.getSelection() != null) {
-					Object selection = ((TreeSelection) outlineViewer.getSelection()).getFirstElement();
-					Range range = getRangeSelection(selection);
-					if (range != null) {
-						try {
-							int startOffset = document.getLineOffset(range.getStart().getLine())
-									+ range.getStart().getCharacter();
-							int endOffset = document.getLineOffset(range.getEnd().getLine())
-									+ range.getEnd().getCharacter();
-							textEditor.selectAndReveal(startOffset,
-									endOffset - startOffset);
-						} catch (BadLocationException e) {
-							return;
-						}
-					}
-				}
-			});
-			if (textEditorViewer != null) {
-				editorSelectionChangedListener = new EditorSelectionChangedListener();
-				editorSelectionChangedListener.install(textEditorViewer.getSelectionProvider());
-			}
-		}
-	}
-
-	/**
-	 * Returns the range of the given selection and null otherwise.
-	 *
-	 * @param selection
-	 *            the selected symbol.
-	 * @return the range of the given selection and null otherwise.
-	 */
-	private Range getRangeSelection(Object selection) {
-		if (selection == null) {
-			return null;
-		}
-		if (selection instanceof SymbolInformation) {
-			return ((SymbolInformation) selection).getLocation().getRange();
-		}
-		if (selection instanceof DocumentSymbolWithFile) {
-			return ((DocumentSymbolWithFile) selection).symbol.getSelectionRange();
-		}
-		return null;
-	}
-
-	class EditorSelectionChangedListener implements ISelectionChangedListener {
-
-		public void install(ISelectionProvider selectionProvider) {
-			if (selectionProvider == null)
-				return;
-
-			if (selectionProvider instanceof IPostSelectionProvider) {
-				IPostSelectionProvider provider = (IPostSelectionProvider) selectionProvider;
-				provider.addPostSelectionChangedListener(this);
-			} else {
-				selectionProvider.addSelectionChangedListener(this);
-			}
-		}
-
-		public void uninstall(ISelectionProvider selectionProvider) {
-			if (selectionProvider == null)
-				return;
-
-			if (selectionProvider instanceof IPostSelectionProvider) {
-				IPostSelectionProvider provider = (IPostSelectionProvider) selectionProvider;
-				provider.removePostSelectionChangedListener(this);
-			} else {
-				selectionProvider.removeSelectionChangedListener(this);
-			}
-		}
-
-		@Override
-		public void selectionChanged(SelectionChangedEvent event) {
-			ISelection selection = event.getSelection();
-			if (!(selection instanceof ITextSelection)) {
-				return;
-			}
-			ITextSelection textSelection = (ITextSelection) selection;
-			if (!preferences.getBoolean(LINK_WITH_EDITOR_PREFERENCE, true)) {
-				return;
-			}
-			int offset = outlineViewer instanceof ITextViewerExtension5
-					? ((ITextViewerExtension5) outlineViewer).widgetOffset2ModelOffset(textSelection.getOffset())
-					: textSelection.getOffset();
-			refreshTreeSelection(outlineViewer, offset, document);
-		}
-	}
-
-	private EditorSelectionChangedListener editorSelectionChangedListener;
-
-	public static void refreshTreeSelection(TreeViewer viewer, int offset, IDocument document) {
-		ITreeContentProvider contentProvider = (ITreeContentProvider) viewer.getContentProvider();
-		if(contentProvider == null) {
-			return;
-		}
-
-		Object[] objects = contentProvider.getElements(null);
-		List<Object> path = new ArrayList<>();
-		while (objects != null && objects.length > 0) {
-			boolean found = false;
-			for (final Object object : objects) {
-				Range range = toRange(object);
-				if (range != null && isOffsetInRange(offset, range, document)) {
-					objects = contentProvider.getChildren(object);
-					path.add(object);
-					found = true;
-					break;
-				}
-			}
-			if (!found) {
-				break;
-			}
-		}
-		if (!path.isEmpty()) {
-			Object bestNode = path.get(path.size() - 1);
-			if (bestNode.equals(viewer.getStructuredSelection().getFirstElement())) {
-				// the symbol to select is the same than current selected symbol, don't select it.
-				return;
-			}
-			Display.getDefault().asyncExec(() -> {
-				TreePath treePath = new TreePath(path.toArray());
-				viewer.reveal(treePath);
-				viewer.setSelection(new TreeSelection(treePath), true);
-			});
-		}
-	}
-
-	@SuppressWarnings("unused")
-	private static Range toRange(Object object) {
-		Range range = null;
-		@Nullable SymbolInformation symbol = object instanceof SymbolInformation ? (SymbolInformation) object
-				: Adapters.adapt(object, SymbolInformation.class);
-		if (symbol != null) {
-			range = symbol.getLocation().getRange();
-		} else {
-			@Nullable DocumentSymbolWithFile documentSymbol = object instanceof DocumentSymbolWithFile ? (DocumentSymbolWithFile) object
-					: Adapters.adapt(object, DocumentSymbolWithFile.class);
-			if (documentSymbol != null) {
-				range = documentSymbol.symbol.getRange();
-			}
-		}
-		return range;
-	}
-
-	private static boolean isOffsetInRange(int offset, Range range, IDocument document) {
-		try {
-			int startOffset = document.getLineOffset(range.getStart().getLine()) + range.getStart().getCharacter();
-			if (startOffset > offset) {
-				return false;
-			}
-			int endOffset = document.getLineOffset(range.getEnd().getLine()) + range.getEnd().getCharacter();
-			return endOffset >= offset;
-		} catch (BadLocationException e) {
-			return false;
-		}
-	}
-
-	@Override
-	public void dispose() {
-		this.outlineViewer.dispose();
-		if (textEditorViewer != null) {
-			editorSelectionChangedListener.uninstall(textEditorViewer.getSelectionProvider());
-		}
-	}
-
-	@Override
-	public Control getControl() {
-		return this.outlineViewer.getControl();
-	}
-
-	@Override
-	public void setActionBars(IActionBars actionBars) {
-		// nothing to do yet, comment requested by sonar
-	}
-
-	@Override
-	public void setFocus() {
-		this.outlineViewer.getTree().setFocus();
-	}
-
-	@Override
-	public void addSelectionChangedListener(ISelectionChangedListener listener) {
-		this.outlineViewer.addSelectionChangedListener(listener);
-	}
-
-	@Override
-	public ISelection getSelection() {
-		return this.outlineViewer.getSelection();
-	}
-
-	@Override
-	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
-		this.outlineViewer.removeSelectionChangedListener(listener);
-	}
-
-	@Override
-	public void setSelection(ISelection selection) {
-		this.outlineViewer.setSelection(selection);
-	}
-
-	@Override
-	public void labelProviderChanged(LabelProviderChangedEvent event) {
-		this.outlineViewer.refresh(true);
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/EditorToOutlineAdapterFactory.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/EditorToOutlineAdapterFactory.java
deleted file mode 100644
index 562fd89..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/EditorToOutlineAdapterFactory.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Lucas Bullen (Red Hat Inc.) - Bug 520053 - Clicking nodes in the 'Outline' should navigate
- *******************************************************************************/
-package org.eclipse.lsp4e.outline;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServersRegistry;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4j.services.LanguageServer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.eclipse.ui.views.contentoutline.ContentOutline;
-import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
-
-public class EditorToOutlineAdapterFactory implements IAdapterFactory {
-
-	private static final Map<IEditorPart, LanguageServer> lsCache = Collections.synchronizedMap(new HashMap<>());
-
-	@Override
-	public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
-		if (adapterType == IContentOutlinePage.class && adaptableObject instanceof IEditorPart
-				&& LanguageServersRegistry.getInstance()
-						.canUseLanguageServer(((IEditorPart) adaptableObject).getEditorInput())) {
-
-			// first try to get / remove language server from cache from a previous call
-			LanguageServer server = lsCache.remove(adaptableObject);
-			if (server != null) {
-				return (T) createOutlinePage(adaptableObject, server);
-			}
-
-			IDocument document = LSPEclipseUtils.getDocument(((IEditorPart) adaptableObject).getEditorInput());
-			if (document != null) {
-				CompletableFuture<List<@NonNull LanguageServer>> languageServers = LanguageServiceAccessor
-						.getLanguageServers(document,
-								capabilities -> LSPEclipseUtils.hasCapability(capabilities.getDocumentSymbolProvider()));
-
-				List<@NonNull LanguageServer> servers = Collections.emptyList();
-				try {
-					servers = languageServers.get(50, TimeUnit.MILLISECONDS);
-				} catch (TimeoutException e) {
-					refreshContentOutlineAsync(languageServers, (IEditorPart) adaptableObject);
-				} catch (ExecutionException e) {
-					LanguageServerPlugin.logError(e);
-				} catch (InterruptedException e) {
-					LanguageServerPlugin.logError(e);
-					Thread.currentThread().interrupt();
-				}
-
-				if (!servers.isEmpty()) {
-					LanguageServer languageServer = servers.get(0); // TODO consider other strategies (select, //
-																	// merge...?)
-					return (T) createOutlinePage(adaptableObject, languageServer);
-				}
-			}
-		}
-		return null;
-	}
-
-	@Override
-	public Class<?>[] getAdapterList() {
-		return new Class<?>[] { IContentOutlinePage.class };
-	}
-
-	private static CNFOutlinePage createOutlinePage(Object adaptableObject, LanguageServer languageServer) {
-		ITextEditor textEditor = null;
-		if (adaptableObject instanceof ITextEditor) {
-			textEditor = (ITextEditor) adaptableObject;
-		}
-		return new CNFOutlinePage(languageServer, textEditor);
-	}
-
-	private static void refreshContentOutlineAsync(CompletableFuture<List<@NonNull LanguageServer>> languageServers,
-			IEditorPart editorPart) {
-		// try to get language server asynchronously
-		languageServers.thenAcceptAsync(servers -> {
-			if (!servers.isEmpty()) {
-				Display.getDefault().asyncExec(() -> {
-					IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
-							.findView("org.eclipse.ui.views.ContentOutline"); //$NON-NLS-1$
-					if (viewPart instanceof ContentOutline) {
-						lsCache.put(editorPart, servers.get(0));
-						((ContentOutline)viewPart).partActivated(editorPart);
-					}
-				});
-			}
-		});
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/HasCNFOutlinePage.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/HasCNFOutlinePage.java
deleted file mode 100644
index 0c243cb..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/HasCNFOutlinePage.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Lucas Bullen (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.outline;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.ui.views.contentoutline.ContentOutline;
-
-public class HasCNFOutlinePage extends PropertyTester {
-
-	@Override
-	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
-		if (receiver instanceof ContentOutline) {
-			ContentOutline outline = (ContentOutline) receiver;
-			return outline.getCurrentPage() instanceof CNFOutlinePage;
-		}
-		return false;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/LSSymbolsContentProvider.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/LSSymbolsContentProvider.java
deleted file mode 100644
index 681c61d..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/LSSymbolsContentProvider.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Lucas Bullen (Red Hat Inc.) - Bug 508472 - Outline to provide "Link with Editor"
- *                              - Bug 517428 - Requests sent before initialization
- *******************************************************************************/
-package org.eclipse.lsp4e.outline;
-
-import java.net.URI;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.reconciler.AbstractReconciler;
-import org.eclipse.jface.text.reconciler.DirtyRegion;
-import org.eclipse.jface.text.reconciler.IReconcilingStrategy;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.ITreeSelection;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.TreePath;
-import org.eclipse.jface.viewers.TreeSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.outline.CNFOutlinePage.OutlineInfo;
-import org.eclipse.lsp4j.DocumentSymbol;
-import org.eclipse.lsp4j.DocumentSymbolParams;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.lsp4j.TextDocumentIdentifier;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.navigator.ICommonContentExtensionSite;
-import org.eclipse.ui.navigator.ICommonContentProvider;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-
-public class LSSymbolsContentProvider implements ICommonContentProvider, ITreeContentProvider {
-
-	public static final Object COMPUTING = new Object();
-
-	interface IOutlineUpdater {
-		void install();
-
-		void uninstall();
-	}
-
-	class DocumentChangedOutlineUpdater implements IDocumentListener, IOutlineUpdater {
-
-		private final IDocument document;
-
-		@Override
-		public void install() {
-			document.addDocumentListener(this);
-			refreshTreeContentFromLS();
-		}
-
-		@Override
-		public void uninstall() {
-			document.removeDocumentListener(this);
-		}
-
-		DocumentChangedOutlineUpdater(IDocument document) {
-			this.document = document;
-		}
-
-		@Override
-		public void documentAboutToBeChanged(DocumentEvent event) {
-			// Do nothing
-		}
-
-		@Override
-		public void documentChanged(DocumentEvent event) {
-			refreshTreeContentFromLS();
-		}
-	}
-
-	class ReconcilerOutlineUpdater extends AbstractReconciler implements IOutlineUpdater {
-
-		private final ITextViewer textViewer;
-
-		ReconcilerOutlineUpdater(ITextViewer textViewer) {
-			this.textViewer = textViewer;
-			super.setIsIncrementalReconciler(false);
-			super.setIsAllowedToModifyDocument(false);
-		}
-
-		@Override
-		public void install() {
-			super.install(textViewer);
-		}
-
-		@Override
-		protected void initialProcess() {
-			refreshTreeContentFromLS();
-		}
-
-		@Override
-		protected void process(DirtyRegion dirtyRegion) {
-			refreshTreeContentFromLS();
-		}
-
-		@Override
-		protected void reconcilerDocumentChanged(IDocument newDocument) {
-			// Do nothing
-		}
-
-		@Override
-		public IReconcilingStrategy getReconcilingStrategy(String contentType) {
-			return null;
-		}
-	}
-
-	class ResourceChangeOutlineUpdater implements IResourceChangeListener, IOutlineUpdater {
-
-		private final IResource resource;
-
-		public ResourceChangeOutlineUpdater(IResource resource) {
-			this.resource = resource;
-		}
-
-		@Override
-		public void install() {
-			resource.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
-		}
-
-		@Override
-		public void uninstall() {
-			resource.getWorkspace().removeResourceChangeListener(this);
-		}
-
-		@Override
-		public void resourceChanged(IResourceChangeEvent event) {
-			if ((event.getDelta().getFlags() ^ IResourceDelta.MARKERS) != 0) {
-				try {
-					event.getDelta().accept(delta -> {
-						if (delta.getResource().equals(this.resource)) {
-							viewer.getControl().getDisplay().asyncExec(() -> {
-								if (!viewer.getControl().isDisposed() && viewer instanceof StructuredViewer) {
-									viewer.refresh(true);
-								}
-							});
-						}
-						return delta.getResource().getFullPath().isPrefixOf(this.resource.getFullPath());
-					});
-				} catch (CoreException e) {
-					LanguageServerPlugin.logError(e);
-				}
-			}
-		}
-	}
-
-	private TreeViewer viewer;
-	private Throwable lastError;
-	private OutlineInfo outlineInfo;
-
-	private SymbolsModel symbolsModel = new SymbolsModel();
-	private CompletableFuture<List<Either<SymbolInformation, DocumentSymbol>>> symbols;
-	private final boolean refreshOnResourceChanged;
-	private IOutlineUpdater outlineUpdater;
-
-	public LSSymbolsContentProvider() {
-		this(false);
-	}
-
-	public LSSymbolsContentProvider(boolean refreshOnResourceChanged) {
-		this.refreshOnResourceChanged = refreshOnResourceChanged;
-	}
-
-	@Override
-	public void init(ICommonContentExtensionSite aConfig) {
-	}
-
-	@Override
-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		this.viewer = (TreeViewer) viewer;
-		this.outlineInfo = (OutlineInfo) newInput;
-		IFile file = LSPEclipseUtils.getFile(this.outlineInfo.document);
-		this.symbolsModel.setFile(file);
-		if (outlineUpdater != null) {
-			outlineUpdater.uninstall();
-		}
-		outlineUpdater = createOutlineUpdater(file);
-		outlineUpdater.install();
-	}
-
-	private IOutlineUpdater createOutlineUpdater(IFile file) {
-		if (refreshOnResourceChanged) {
-			return new ResourceChangeOutlineUpdater(file);
-		}
-		ITextViewer textViewer = outlineInfo.textEditor == null ? null
-				: ((ITextViewer) outlineInfo.textEditor.getAdapter(ITextOperationTarget.class));
-		return textViewer == null
-				? new DocumentChangedOutlineUpdater(outlineInfo.document)
-				: new ReconcilerOutlineUpdater(textViewer);
-	}
-
-	@Override
-	public Object[] getElements(Object inputElement) {
-		if (this.symbols != null && !this.symbols.isDone()) {
-			return new Object[] { COMPUTING };
-		}
-		if (this.lastError != null) {
-			return new Object[] { this.lastError };
-		}
-		return symbolsModel.getElements();
-	}
-
-	@Override
-	public Object[] getChildren(Object parentElement) {
-		return symbolsModel.getChildren(parentElement);
-	}
-
-	@Override
-	public Object getParent(Object element) {
-		return symbolsModel.getParent(element);
-	}
-
-	@Override
-	public boolean hasChildren(Object parentElement) {
-		return symbolsModel.hasChildren(parentElement);
-	}
-
-	private void refreshTreeContentFromLS() {
-		if (symbols != null && !symbols.isDone()) {
-			symbols.cancel(true);
-		}
-		lastError = null;
-		URI documentUri = LSPEclipseUtils.toUri(outlineInfo.document);
-		if(documentUri == null) {
-			return;
-		}
-		DocumentSymbolParams params = new DocumentSymbolParams(
-				new TextDocumentIdentifier(documentUri.toString()));
-		symbols = outlineInfo.languageServer.getTextDocumentService().documentSymbol(params);
-		symbols.thenAcceptAsync(t -> {
-			symbolsModel.update(t);
-
-			viewer.getControl().getDisplay().asyncExec(() -> {
-				TreePath[] expandedElements = viewer.getExpandedTreePaths();
-				TreePath[] initialSelection = ((ITreeSelection)viewer.getSelection()).getPaths();
-				viewer.refresh();
-				viewer.setExpandedTreePaths(Arrays.stream(expandedElements).map(symbolsModel::toUpdatedSymbol).filter(Objects::nonNull).toArray(TreePath[]::new));
-				viewer.setSelection(new TreeSelection(Arrays.stream(initialSelection).map(symbolsModel::toUpdatedSymbol).filter(Objects::nonNull).toArray(TreePath[]::new)));
-			});
-			if (!InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID)
-					.getBoolean(CNFOutlinePage.LINK_WITH_EDITOR_PREFERENCE, true)) {
-				return;
-			}
-			Display.getDefault().asyncExec(() -> {
-				IEditorPart editorPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
-						.getActiveEditor();
-				if (editorPart instanceof AbstractTextEditor) {
-					ITextSelection selection = (ITextSelection) ((AbstractTextEditor) editorPart).getSelectionProvider()
-							.getSelection();
-					CNFOutlinePage.refreshTreeSelection(viewer, selection.getOffset(), outlineInfo.document);
-				}
-			});
-		});
-
-		symbols.exceptionally(ex -> {
-			lastError = ex;
-			viewer.getControl().getDisplay().asyncExec(viewer::refresh);
-			return Collections.emptyList();
-		});
-	}
-
-	@Override
-	public void dispose() {
-		if(outlineUpdater != null) {
-			outlineUpdater.uninstall();
-		}
-		ICommonContentProvider.super.dispose();
-	}
-
-	@Override
-	public void restoreState(IMemento aMemento) {
-	}
-
-	@Override
-	public void saveState(IMemento aMemento) {
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/ShowKindHandler.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/ShowKindHandler.java
deleted file mode 100644
index 85570d2..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/ShowKindHandler.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Lucas Bullen (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.outline;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-public class ShowKindHandler extends AbstractHandler {
-
-	@Override
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		Command command = event.getCommand();
-		boolean oldValue = HandlerUtil.toggleCommandState(command);
-
-		IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID);
-		preferences.putBoolean(CNFOutlinePage.SHOW_KIND_PREFERENCE, !oldValue);
-		return null;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/SymbolInformationPropertyTester.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/SymbolInformationPropertyTester.java
deleted file mode 100644
index 4a993b9..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/SymbolInformationPropertyTester.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 TypeFox and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Jan Koehnlein (TypeFox) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.outline;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-import org.eclipse.lsp4j.SymbolInformation;
-
-/**
- * A property tester that checks whether a given SmybolInformation belongs to a
- * specific file extension or content type.
- *
- * It can be used to customize the outline view for an LSP based language using
- * the trigger expression in an extension to the
- * <code>org.eclipse.ui.navigator.navigatorContent</code> extension point:
- *
- * <pre>
- *  <extension point="org.eclipse.ui.navigator.navigatorContent">
- *     <navigatorContent
- *           activeByDefault="true"
- *           contentProvider="my.lang.CustomContentProvider"
- *           labelProvider="my.lang.CustomLabelProvider"
- *           id="my.lang.navigatorContent"
- *           priority="high"
- *           name="MyLang Symbols">
- *       <triggerPoints>
- *           <test property="org.eclipse.lsp4e.symbolInformation.contentTypeId" value="my.lang"/>
- *       </triggerPoints>
- *     </navigatorContent>
- *  </extension>
- *  <extension point="org.eclipse.ui.navigator.viewer">
- *     <viewer viewerId="org.eclipse.lsp4e.outline"></viewer>
- *     <viewerContentBinding viewerId="org.eclipse.lsp4e.outline">
- *        <includes>
- *           <contentExtension
- *                 pattern="my.lang.navigatorContent">
- *           </contentExtension>
- *        </includes>
- *     </viewerContentBinding>
- *  </extension>
- * </pre>
- *
- * @author koehnlein
- */
-public class SymbolInformationPropertyTester extends PropertyTester {
-
-	public static final String FILE_EXTENSION = "extension"; //$NON-NLS-1$
-	public static final String CONTENT_TYPE_ID = "contentTypeId"; //$NON-NLS-1$
-
-	@Override
-	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
-		if (receiver instanceof SymbolInformation) {
-			SymbolInformation info = (SymbolInformation) receiver;
-			if (info.getLocation() == null || info.getLocation().getUri() == null) {
-				return false;
-			}
-			String uri = info.getLocation().getUri();
-			switch (property) {
-			case FILE_EXTENSION:
-				return uri.endsWith("." + expectedValue.toString()); //$NON-NLS-1$
-			case CONTENT_TYPE_ID:
-				IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
-				IContentType contentType = contentTypeManager.findContentTypeFor(uri);
-				return contentType != null && contentType.getId().equals(expectedValue.toString());
-			default:
-				return false;
-			}
-		}
-		return false;
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/SymbolsLabelProvider.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/SymbolsLabelProvider.java
deleted file mode 100644
index 81f949d..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/SymbolsLabelProvider.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.outline;
-
-import java.net.URI;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.viewers.DecorationOverlayIcon;
-import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
-import org.eclipse.jface.viewers.IDecoration;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.LabelProviderChangedEvent;
-import org.eclipse.jface.viewers.StyledString;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServiceAccessor.LSPDocumentInfo;
-import org.eclipse.lsp4e.outline.SymbolsModel.DocumentSymbolWithFile;
-import org.eclipse.lsp4e.ui.LSPImages;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.lsp4j.DocumentSymbol;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.lsp4j.SymbolKind;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.progress.ProgressManager;
-import org.eclipse.ui.navigator.ICommonContentExtensionSite;
-import org.eclipse.ui.navigator.ICommonLabelProvider;
-
-import com.google.common.collect.RangeMap;
-import com.google.common.collect.TreeRangeMap;
-
-public class SymbolsLabelProvider extends LabelProvider
-		implements ICommonLabelProvider, IStyledLabelProvider, IPreferenceChangeListener {
-
-	private Map<IResource, RangeMap<Integer, Integer>> severities = new HashMap<>();
-	private final IResourceChangeListener listener = e -> {
-		try {
-			IResourceDelta delta = e.getDelta();
-			if (delta != null) {
-				delta.accept(d -> {
-					if (d.getMarkerDeltas().length > 0) {
-						severities.remove(d.getResource());
-					}
-					return true;
-				});
-			}
-		} catch (CoreException ex) {
-			LanguageServerPlugin.logError(ex);
-		}
-	};
-	private Map<Image, Image[]> overlays = new HashMap<>();
-
-	private boolean showLocation;
-
-	private boolean showKind;
-
-	public SymbolsLabelProvider() {
-		this(false, InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID)
-				.getBoolean(CNFOutlinePage.SHOW_KIND_PREFERENCE, false));
-	}
-
-	public SymbolsLabelProvider(boolean showLocation, boolean showKind) {
-		this.showLocation = showLocation;
-		this.showKind = showKind;
-		InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID).addPreferenceChangeListener(this);
-		ResourcesPlugin.getWorkspace().addResourceChangeListener(listener);
-	}
-
-	@Override
-	public void dispose() {
-		ResourcesPlugin.getWorkspace().removeResourceChangeListener(listener);
-		InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID).removePreferenceChangeListener(this);
-		super.dispose();
-	}
-
-	@Override
-	public Image getImage(Object element) {
-		if (element == null){
-			return null;
-		}
-		if (element == LSSymbolsContentProvider.COMPUTING) {
-			return JFaceResources.getImage(ProgressManager.WAITING_JOB_KEY);
-		}
-		if (element instanceof Throwable) {
-			return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
-		}
-		if (element instanceof Either) {
-			element = ((Either<?, ?>) element).get();
-		}
-		Image res = null;
-		if (element instanceof SymbolInformation) {
-			res = LSPImages.imageFromSymbolKind(((SymbolInformation) element).getKind());
-		} else if (element instanceof DocumentSymbol) {
-			res = LSPImages.imageFromSymbolKind(((DocumentSymbol) element).getKind());
-		} else if (element instanceof DocumentSymbolWithFile) {
-			res = LSPImages.imageFromSymbolKind(((DocumentSymbolWithFile) element).symbol.getKind());
-		}
-		IResource file = null;
-		if (element instanceof SymbolInformation) {
-			file = LSPEclipseUtils.findResourceFor(((SymbolInformation) element).getLocation().getUri());
-		} else if (element instanceof DocumentSymbolWithFile) {
-			file = ((DocumentSymbolWithFile) element).file;
-		}
-		/*
-		 * Implementation node: for problem decoration,m aybe consider using a ILabelDecorator/IDelayedLabelDecorator?
-		 */
-		if (file != null) {
-			Range range = null;
-			if (element instanceof SymbolInformation) {
-				range = ((SymbolInformation) element).getLocation().getRange();
-			} else if (element instanceof DocumentSymbol) {
-				range = ((DocumentSymbol) element).getRange();
-			} else if (element instanceof DocumentSymbolWithFile) {
-				range = ((DocumentSymbolWithFile) element).symbol.getRange();
-			}
-			if (range != null) {
-				try {
-					// use existing documents only to calculate the severity
-					// to avoid extra documents being created (and connected
-					// to the language server just for this (bug 550968)
-					IDocument doc = LSPEclipseUtils.getExistingDocument(file);
-
-					if (doc != null) {
-						int maxSeverity = getMaxSeverity(file, doc, range);
-						if (maxSeverity > IMarker.SEVERITY_INFO) {
-							return getOverlay(res, maxSeverity);
-						}
-					}
-				} catch (CoreException | BadLocationException e) {
-					LanguageServerPlugin.logError(e);
-				}
-			}
-		}
-		return res;
-	}
-
-	protected int getMaxSeverity(@NonNull IResource resource, @NonNull IDocument doc, @NonNull Range range)
-			throws CoreException, BadLocationException {
-		if (!severities.containsKey(resource)) {
-			refreshMarkersByLine(resource);
-		}
-		RangeMap<Integer, Integer> severitiesForResource = severities.get(resource);
-		if (severitiesForResource == null) {
-			return -1;
-		}
-		int bound1 = LSPEclipseUtils.toOffset(range.getStart(), doc);
-		int bound2 = LSPEclipseUtils.toOffset(range.getEnd(), doc);
-		// using bounds here because doc may have changed in the meantime so toOffset can return wrong results.
-		com.google.common.collect.Range<Integer> subRange = com.google.common.collect.Range.closed(
-				Math.min(bound1, bound2), // we guard that lower <= endOffset
-				bound2);
-		return severitiesForResource.subRangeMap(subRange)
-				.asMapOfRanges()
-				.values()
-				.stream()
-				.max(Comparator.naturalOrder())
-				.orElse(-1);
-	}
-
-	private void refreshMarkersByLine(IResource resource) throws CoreException {
-		RangeMap<Integer, Integer> rangeMap = TreeRangeMap.create();
-		Arrays.stream(resource.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_ZERO))
-			.filter(marker -> marker.getAttribute(IMarker.SEVERITY, -1) > IMarker.SEVERITY_INFO)
-			.sorted(Comparator.comparingInt(marker -> marker.getAttribute(IMarker.SEVERITY, -1)))
-			.forEach(marker -> {
-				int start = marker.getAttribute(IMarker.CHAR_START, -1);
-				int end = marker.getAttribute(IMarker.CHAR_END, -1);
-				if (end < start) {
-					end = start;
-				}
-				int severity = marker.getAttribute(IMarker.SEVERITY, -1);
-				if (start != end) {
-					com.google.common.collect.Range<Integer> markerRange = com.google.common.collect.Range.closed(start,end - 1);
-					rangeMap.remove(markerRange);
-					rangeMap.put(markerRange, severity);
-				}
-			});
-		severities.put(resource, rangeMap);
-	}
-
-	private Image getOverlay(Image res, int maxSeverity) {
-		if (maxSeverity != 1 && maxSeverity != 2) {
-			throw new IllegalArgumentException("Severity " + maxSeverity + " not supported."); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		Image[] currentOverlays = this.overlays.computeIfAbsent(res, key -> new Image[2]);
-		if (currentOverlays[maxSeverity - 1] == null) {
-			String overlayId = null;
-			if (maxSeverity == IMarker.SEVERITY_ERROR) {
-				overlayId = ISharedImages.IMG_DEC_FIELD_ERROR;
-			} else if (maxSeverity == IMarker.SEVERITY_WARNING) {
-				overlayId = ISharedImages.IMG_DEC_FIELD_WARNING;
-			}
-			currentOverlays[maxSeverity - 1] = new DecorationOverlayIcon(res,
-				PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(overlayId),
-				IDecoration.BOTTOM_LEFT).createImage();
-		}
-		return currentOverlays[maxSeverity - 1];
-	}
-
-	@Override
-	public String getText(Object element) {
-		return getStyledText(element).getString();
-	}
-
-	@Override
-	public StyledString getStyledText(Object element) {
-
-		if (element == LSSymbolsContentProvider.COMPUTING) {
-			return new StyledString(Messages.outline_computingSymbols);
-		}
-		if (element instanceof Throwable) {
-			String message = ((Throwable) element).getMessage();
-			if (message == null) {
-				message = element.getClass().getName();
-			}
-			return new StyledString(message);
-		}
-		if (element instanceof LSPDocumentInfo) {
-			return new StyledString(((LSPDocumentInfo)element).getFileUri().getPath());
-		}
-		StyledString res = new StyledString();
-		if (element == null){
-			return res;
-		}
-		if (element instanceof Either) {
-			element = ((Either<?, ?>) element).get();
-		}
-		String name = null;
-		SymbolKind kind = null;
-		URI location = null;
-		if (element instanceof SymbolInformation) {
-			name = ((SymbolInformation) element).getName();
-			kind = ((SymbolInformation) element).getKind();
-			try {
-				location = URI.create(((SymbolInformation) element).getLocation().getUri());
-			} catch (IllegalArgumentException e) {
-				LanguageServerPlugin.logError("Invalid URI: " + ((SymbolInformation) element).getLocation().getUri(), e); //$NON-NLS-1$
-			}
-		} else if (element instanceof DocumentSymbol) {
-			name = ((DocumentSymbol) element).getName();
-			kind = ((DocumentSymbol) element).getKind();
-		} else if (element instanceof DocumentSymbolWithFile) {
-			name = ((DocumentSymbolWithFile) element).symbol.getName();
-			kind = ((DocumentSymbolWithFile) element).symbol.getKind();
-			IFile file = ((DocumentSymbolWithFile) element).file;
-			if (file != null) {
-				location = file.getLocationURI();
-			}
-		}
-		if (name != null) {
-			res.append(name, null);
-		}
-		if (showKind && kind != null) {
-			res.append(" :", null); //$NON-NLS-1$
-			res.append(kind.toString(), StyledString.DECORATIONS_STYLER);
-		}
-
-		if (showLocation && location != null) {
-			res.append(' ');
-			res.append(location.getPath(), StyledString.QUALIFIER_STYLER);
-		}
-		return res;
-	}
-
-	@Override
-	public void restoreState(IMemento aMemento) {
-	}
-
-	@Override
-	public void saveState(IMemento aMemento) {
-	}
-
-	@Override
-	public String getDescription(Object anElement) {
-		return null;
-	}
-
-	@Override
-	public void init(ICommonContentExtensionSite aConfig) {
-	}
-
-	@Override
-	public void preferenceChange(PreferenceChangeEvent event) {
-		if (event.getKey().equals(CNFOutlinePage.SHOW_KIND_PREFERENCE)) {
-			this.showKind = Boolean.valueOf(event.getNewValue().toString());
-			for (Object listener : this.getListeners()) {
-				if (listener instanceof ILabelProviderListener) {
-					((ILabelProviderListener) listener).labelProviderChanged(new LabelProviderChangedEvent(this));
-				}
-			}
-		}
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/SymbolsModel.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/SymbolsModel.java
deleted file mode 100644
index 33c2976..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/SymbolsModel.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.outline;
-
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Deque;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.Function;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.viewers.TreePath;
-import org.eclipse.lsp4j.DocumentSymbol;
-import org.eclipse.lsp4j.Location;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.SymbolInformation;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-
-public class SymbolsModel {
-
-	private static final SymbolInformation ROOT_SYMBOL_INFORMATION = new SymbolInformation();
-	private static final Object[] EMPTY = new Object[0];
-
-	private volatile Map<SymbolInformation, List<SymbolInformation>> childrenMap = Collections.emptyMap();
-	private volatile List<DocumentSymbol> rootSymbols = Collections.emptyList();
-	private Map<DocumentSymbol, DocumentSymbol> parent = new HashMap<>();
-
-	private IFile file;
-
-	public static class DocumentSymbolWithFile {
-		public final DocumentSymbol symbol;
-		public final @NonNull IFile file;
-
-		public DocumentSymbolWithFile(DocumentSymbol symbol, @NonNull IFile file) {
-			this.symbol = symbol;
-			this.file = file;
-		}
-
-		@Override
-		public boolean equals(Object obj) {
-			if (!(obj instanceof DocumentSymbolWithFile)) {
-				return false;
-			}
-			DocumentSymbolWithFile other = (DocumentSymbolWithFile) obj;
-			return Objects.equals(this.symbol, other.symbol) && Objects.equals(this.file, other.file);
-		}
-
-		@Override
-		public int hashCode() {
-			return Objects.hash(this.file, this.symbol);
-		}
-	}
-
-	public synchronized boolean update(List<Either<SymbolInformation, DocumentSymbol>> response) {
-		// TODO update model only on real change
-		parent.clear();
-		if (response == null || response.isEmpty()) {
-			childrenMap = Collections.emptyMap();
-			rootSymbols = Collections.emptyList();
-		} else {
-			final Map<SymbolInformation, List<SymbolInformation>> newChildrenMap = new HashMap<>();
-			final List<DocumentSymbol> newRootSymbols = new ArrayList<>();
-
-			Collections.sort(response, Comparator.comparing(
-					either -> either.isLeft() ? either.getLeft().getLocation().getRange().getStart()
-							: either.getRight().getRange().getStart(),
-					// strange need to cast here, could be a JDT compiler issue
-					Comparator.comparingInt(pos -> ((Position) pos).getLine())
-							.thenComparingInt(pos -> ((Position) pos).getCharacter())));
-
-			Deque<SymbolInformation> parentStack = new ArrayDeque<>();
-			parentStack.push(ROOT_SYMBOL_INFORMATION);
-			SymbolInformation previousSymbol = null;
-			for (Either<SymbolInformation, DocumentSymbol> either : response) {
-				if (either.isLeft()) {
-					SymbolInformation symbol = either.getLeft();
-					if (isIncluded(previousSymbol, symbol)) {
-						parentStack.push(previousSymbol);
-						addChild(newChildrenMap, parentStack.peek(), symbol);
-					} else if (isIncluded(parentStack.peek(), symbol)) {
-						addChild(newChildrenMap, parentStack.peek(), symbol);
-					} else {
-						while (!isIncluded(parentStack.peek(), symbol)) {
-							parentStack.pop();
-						}
-						addChild(newChildrenMap, parentStack.peek(), symbol);
-						parentStack.push(symbol);
-					}
-					previousSymbol = symbol;
-				} else if (either.isRight()) {
-					newRootSymbols.add(either.getRight());
-				}
-			}
-
-			childrenMap = newChildrenMap;
-			rootSymbols = newRootSymbols;
-		}
-		return true;
-	}
-
-	private boolean isIncluded(SymbolInformation parent, SymbolInformation symbol) {
-		if (parent == null || symbol == null) {
-			return false;
-		}
-		if (parent == ROOT_SYMBOL_INFORMATION) {
-			return true;
-		}
-		return isIncluded(parent.getLocation(), symbol.getLocation());
-	}
-
-	private boolean isIncluded(Location reference, Location included) {
-		return reference.getUri().equals(included.getUri())
-				&& !reference.equals(included)
-				&& isAfter(reference.getRange().getStart(), included.getRange().getStart())
-				&& isAfter(included.getRange().getEnd(), reference.getRange().getEnd());
-	}
-
-	private boolean isAfter(Position reference, Position included) {
-		return included.getLine() > reference.getLine()
-				|| (included.getLine() == reference.getLine() && included.getCharacter() >= reference.getCharacter());
-	}
-
-	private void addChild(Map<SymbolInformation, List<SymbolInformation>> newChildrenMap, SymbolInformation parent,
-				SymbolInformation child) {
-		List<SymbolInformation> children = newChildrenMap.computeIfAbsent(parent, key -> new ArrayList<>());
-		children.add(child);
-	}
-
-	public Object[] getElements() {
-		List<Object> res = new ArrayList<>();
-		res.addAll(Arrays.asList(getChildren(ROOT_SYMBOL_INFORMATION)));
-		final IFile current = this.file;
-		Function<DocumentSymbol, Object> mapper = current != null ?
-				symbol -> new DocumentSymbolWithFile(symbol, current) :
-				symbol -> symbol;
-		rootSymbols.stream().map(mapper).forEach(res::add);
-		return res.toArray(new Object[res.size()]);
-	}
-
-	public Object[] getChildren(Object parentElement) {
-		if (parentElement != null) {
-			if (parentElement instanceof SymbolInformation) {
-				List<SymbolInformation> children = childrenMap.get(parentElement);
-				if (children != null && !children.isEmpty()) {
-					return children.toArray();
-				}
-			} else if (parentElement instanceof DocumentSymbolWithFile) {
-				DocumentSymbolWithFile element = (DocumentSymbolWithFile) parentElement;
-				List<DocumentSymbol> children = element.symbol.getChildren();
-				if (children != null && !children.isEmpty()) {
-					return element.symbol.getChildren().stream()
-						.map(symbol -> new DocumentSymbolWithFile(symbol, element.file)).toArray();
-				}
-			}
-		}
-		return EMPTY;
-	}
-
-	public boolean hasChildren(Object parentElement) {
-		if (parentElement != null) {
-			if (parentElement instanceof SymbolInformation) {
-				List<SymbolInformation> children = childrenMap.get(parentElement);
-				if (children != null) {
-					return !children.isEmpty();
-				}
-			} else if (parentElement instanceof DocumentSymbolWithFile) {
-				DocumentSymbolWithFile element = (DocumentSymbolWithFile) parentElement;
-				List<DocumentSymbol> children = element.symbol.getChildren();
-				if (children != null) {
-					return !children.isEmpty();
-				}
-			}
-		}
-		return false;
-	}
-
-	public Object getParent(Object element) {
-		if (element instanceof SymbolInformation) {
-			for(Map.Entry<SymbolInformation, List<SymbolInformation>> entry: childrenMap.entrySet()) {
-				if(entry.getValue().contains(element)) {
-					return entry.getKey();
-				}
-			}
-		} else if (element instanceof DocumentSymbol) {
-			return parent.get(element);
-		} else if (element instanceof DocumentSymbolWithFile) {
-			DocumentSymbol parentSymbol = parent.get(element);
-			final IFile theFile = this.file;
-			if (parentSymbol != null && theFile != null) {
-				return new DocumentSymbolWithFile(parentSymbol, theFile);
-			}
-		}
-		return null;
-	}
-
-	public void setFile(IFile file) {
-		this.file = file;
-	}
-
-	public TreePath toUpdatedSymbol(TreePath initialSymbol) {
-		List<Object> res = new ArrayList<>(initialSymbol.getSegmentCount());
-		Object currentSymbol = null;
-		for (int i = 0; i < initialSymbol.getSegmentCount(); i++) {
-			String name = getName(initialSymbol.getSegment(i));
-			Object[] currentChildren = (currentSymbol == null ? getElements() : getChildren(currentSymbol));
-			currentSymbol = Arrays.stream(currentChildren).filter(child -> Objects.equals(getName(child), name)).findAny().orElse(null);
-			if (currentSymbol == null) {
-				return null;
-			}
-			res.add(currentSymbol);
-		}
-		return new TreePath(res.toArray(Object[]::new));
-	}
-
-	private String getName(Object segment) {
-		if (segment instanceof DocumentSymbolWithFile) {
-			segment = ((DocumentSymbolWithFile)segment).symbol;
-		}
-		if (segment instanceof DocumentSymbol) {
-			return ((DocumentSymbol)segment).getName();
-		}
-		return null;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/ToggleLinkingHandler.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/ToggleLinkingHandler.java
deleted file mode 100644
index f9a4aed..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/ToggleLinkingHandler.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michal Niewrzal (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.outline;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-public class ToggleLinkingHandler extends AbstractHandler {
-
-	@Override
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		Command command = event.getCommand();
-		boolean oldValue = HandlerUtil.toggleCommandState(command);
-
-		IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID);
-		preferences.putBoolean(CNFOutlinePage.LINK_WITH_EDITOR_PREFERENCE, !oldValue);
-		return null;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/refactoring/CreateFileChange.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/refactoring/CreateFileChange.java
deleted file mode 100644
index 64959f5..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/refactoring/CreateFileChange.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2016 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 org.eclipse.lsp4e.refactoring;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileInfo;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.ui.Messages;
-import org.eclipse.ltk.core.refactoring.Change;
-import org.eclipse.ltk.core.refactoring.CompositeChange;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.core.refactoring.resource.DeleteResourceChange;
-import org.eclipse.ltk.core.refactoring.resource.ResourceChange;
-import org.eclipse.osgi.util.NLS;
-
-public class CreateFileChange extends ResourceChange {
-
-	private URI uri;
-	private String fSource;
-	private String fEncoding;
-	private boolean fExplicitEncoding;
-	private long fStampToRestore;
-
-	public CreateFileChange(URI uri, String source, String encoding) {
-		this(uri, source, encoding, IResource.NULL_STAMP);
-	}
-
-	public CreateFileChange(URI uri, String source, String encoding, long stampToRestore) {
-		Assert.isNotNull(uri, "uri"); //$NON-NLS-1$
-		Assert.isNotNull(source, "source"); //$NON-NLS-1$
-		this.uri = uri;
-		fSource= source;
-		fEncoding= encoding;
-		fExplicitEncoding= fEncoding != null;
-		fStampToRestore= stampToRestore;
-	}
-
-	protected void setEncoding(String encoding, boolean explicit) {
-		Assert.isNotNull(encoding, "encoding"); //$NON-NLS-1$
-		fEncoding= encoding;
-		fExplicitEncoding= explicit;
-	}
-
-	@Override
-	public String getName() {
-		return NLS.bind(Messages.edit_CreateFile, this.uri);
-	}
-
-	@Override
-	protected IFile getModifiedResource() {
-		return LSPEclipseUtils.getFileHandle(this.uri.toString());
-	}
-
-	@Override
-	public RefactoringStatus isValid(IProgressMonitor pm) throws CoreException {
-		RefactoringStatus result= new RefactoringStatus();
-
-		IFileInfo jFile = EFS.getStore(this.uri).fetchInfo();
-		if (jFile.exists()) {
-			result.addFatalError("File " + this.uri + " already exists"); //$NON-NLS-1$ //$NON-NLS-2$
-			return result;
-		}
-		return result;
-	}
-
-	@Override
-	public Change perform(IProgressMonitor pm) throws CoreException {
-		pm.beginTask(NLS.bind(Messages.edit_CreateFile, uri), 3);
-
-		initializeEncoding();
-
-		try (InputStream is= new ByteArrayInputStream(fSource.getBytes(fEncoding))) {
-
-			IFile ifile = LSPEclipseUtils.getFileHandle(this.uri.toString());
-
-			if (ifile != null) {
-				List<IFolder> foldersToCreate = new ArrayList<>();
-				IContainer parent = ifile.getParent();
-				while (!parent.exists() && parent.getType() == IResource.FOLDER) {
-					foldersToCreate.add((IFolder) parent);
-					parent = parent.getParent();
-				}
-				Collections.reverse(foldersToCreate);
-				for (IFolder folder : foldersToCreate) {
-					folder.create(true, false, pm);
-				}
-
-				ifile.create(is, false, new SubProgressMonitor(pm, 1));
-				if (fStampToRestore != IResource.NULL_STAMP) {
-					ifile.revertModificationStamp(fStampToRestore);
-				}
-				if (fExplicitEncoding) {
-					ifile.setCharset(fEncoding, new SubProgressMonitor(pm, 1));
-				} else {
-					pm.worked(1);
-				}
-				if (foldersToCreate.isEmpty()) {
-					return new DeleteResourceChange(ifile.getFullPath(), true);
-				} else {
-					CompositeChange undoChange = new CompositeChange("Undo " + getName()); //$NON-NLS-1$
-					undoChange.add(new DeleteResourceChange(ifile.getFullPath(), true));
-					Collections.reverse(foldersToCreate);
-					for (IFolder folder : foldersToCreate) {
-						new DeleteResourceChange(folder.getFullPath(), true);
-					}
-					return undoChange;
-				}
-			} else {
-				File file = new File(this.uri);
-				Files.createDirectories(file.getParentFile().toPath());
-				if (!file.createNewFile()) {
-					throw new IOException(String.format("Failed to create file '%s'",file.toString())); //$NON-NLS-1$
-				}
-			}
-		} catch (Exception e) {
-			LanguageServerPlugin.logError(e);
-			throw new CoreException(new Status(IStatus.ERROR, LanguageServerPlugin.PLUGIN_ID, e.getMessage(), e));
-		} finally {
-			pm.done();
-		}
-		return null;
-	}
-
-	private void initializeEncoding() {
-		if (fEncoding == null) {
-			fExplicitEncoding= false;
-			IFile ifile = getModifiedResource();
-			if (ifile != null) {
-				try {
-					if (ifile.exists()) {
-						fEncoding = ifile.getCharset(false);
-						if (fEncoding == null) {
-							fEncoding = ifile.getCharset(true);
-						} else {
-							fExplicitEncoding= true;
-						}
-					} else {
-						IContentType contentType = Platform.getContentTypeManager().findContentTypeFor(ifile.getName());
-						if (contentType != null)
-							fEncoding= contentType.getDefaultCharset();
-						if (fEncoding == null)
-							fEncoding = ifile.getCharset(true);
-					}
-				} catch (CoreException e) {
-					fEncoding= ResourcesPlugin.getEncoding();
-					fExplicitEncoding= true;
-				}
-			} else {
-				fEncoding= ResourcesPlugin.getEncoding();
-				fExplicitEncoding= true;
-			}
-		}
-		Assert.isNotNull(fEncoding);
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/refactoring/DeleteExternalFile.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/refactoring/DeleteExternalFile.java
deleted file mode 100644
index f89a0e9..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/refactoring/DeleteExternalFile.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.refactoring;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.ltk.core.refactoring.Change;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-
-public class DeleteExternalFile extends Change {
-
-	private @NonNull File file;
-
-	public DeleteExternalFile(@NonNull File file) {
-		this.file = file;
-	}
-
-	@Override
-	public String getName() {
-		return "Delete " + this.file.getName(); //$NON-NLS-1$
-	}
-
-	@Override
-	public void initializeValidationData(IProgressMonitor pm) {
-		// nothing to do yet, comment requested by sonar
-	}
-
-	@Override
-	public RefactoringStatus isValid(IProgressMonitor pm) throws CoreException {
-		return RefactoringStatus.create(Status.OK_STATUS);
-	}
-
-	@Override
-	public Change perform(IProgressMonitor pm) throws CoreException {
-		try {
-			Files.delete(this.file.toPath());
-		} catch (IOException e) {
-			LanguageServerPlugin.logError(e);
-			throw new CoreException(new Status(IStatus.ERROR, LanguageServerPlugin.PLUGIN_ID, e.getMessage(), e));
-		}
-		return null;
-	}
-
-	@Override
-	public Object getModifiedElement() {
-		return this.file;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/refactoring/LSPTextChange.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/refactoring/LSPTextChange.java
deleted file mode 100644
index 298408d..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/refactoring/LSPTextChange.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Alex Boyko (Pivotal Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.refactoring;
-
-import java.net.URI;
-
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.filebuffers.ITextFileBufferManager;
-import org.eclipse.core.filebuffers.LocationKind;
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4j.TextEdit;
-import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import org.eclipse.ltk.core.refactoring.Change;
-import org.eclipse.ltk.core.refactoring.DocumentChange;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.core.refactoring.TextChange;
-import org.eclipse.ltk.core.refactoring.TextFileChange;
-import org.eclipse.ltk.internal.core.refactoring.Changes;
-import org.eclipse.text.edits.MalformedTreeException;
-import org.eclipse.text.edits.ReplaceEdit;
-import org.eclipse.text.edits.UndoEdit;
-
-@SuppressWarnings("restriction")
-public class LSPTextChange extends TextChange {
-
-	private @NonNull URI fileUri;
-	private @NonNull TextEdit textEdit;
-
-	private Either<IFile, IFileStore> file;
-	private int fAcquireCount;
-	private ITextFileBuffer fBuffer;
-
-	private TextChange delegate;
-
-	public LSPTextChange(@NonNull String name, @NonNull URI fileUri, @NonNull TextEdit textEdit) {
-		super(name);
-		this.fileUri = fileUri;
-		this.textEdit = textEdit;
-	}
-
-	@Override
-	protected IDocument acquireDocument(IProgressMonitor pm) throws CoreException {
-		fAcquireCount++;
-		if (fAcquireCount > 1) {
-			return fBuffer.getDocument();
-		}
-
-		IFile iFile = LSPEclipseUtils.getFileHandle(this.fileUri.toString());
-		if (iFile != null) {
-			this.file = Either.forLeft(iFile);
-		} else {
-			this.file = Either.forRight(EFS.getStore(this.fileUri));
-		}
-
-		ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
-		if (this.file.isLeft()) {
-			this.fBuffer = manager.getTextFileBuffer(this.file.getLeft().getFullPath(), LocationKind.IFILE);
-		} else {
-			this.fBuffer = manager.getFileStoreTextFileBuffer(this.file.getRight());
-		}
-		if (this.fBuffer != null) {
-			fAcquireCount++; // allows to mark open editor dirty instead of saving
-		} else {
-			if (this.file.isLeft()) {
-				manager.connect(this.file.getLeft().getFullPath(), LocationKind.IFILE, pm);
-				this.fBuffer = manager.getTextFileBuffer(this.file.getLeft().getFullPath(), LocationKind.IFILE);
-			} else {
-				manager.connectFileStore(this.file.getRight(), pm);
-				this.fBuffer = manager.getFileStoreTextFileBuffer(this.file.getRight());
-			}
-		}
-		return fBuffer.getDocument();
-	}
-
-	@Override
-	protected void commit(IDocument document, IProgressMonitor pm) throws CoreException {
-		this.fBuffer.commit(pm, true);
-	}
-
-	@Override
-	protected void releaseDocument(IDocument document, IProgressMonitor pm) throws CoreException {
-		Assert.isTrue(fAcquireCount > 0);
-		if (fAcquireCount == 1) {
-			ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
-			this.fBuffer.commit(pm, true);
-			if (this.file.isLeft()) {
-				manager.disconnect(this.file.getLeft().getFullPath(), LocationKind.IFILE, pm);
-			} else {
-				manager.disconnectFileStore(this.file.getRight(), pm);
-			}
-		}
-		fAcquireCount--;
-	}
-
-	@Override
-	protected Change createUndoChange(UndoEdit edit) {
-		throw new UnsupportedOperationException("Should not be called!"); //$NON-NLS-1$
-	}
-
-	@Override
-	public void initializeValidationData(IProgressMonitor pm) {
-		// nothing to do yet, comment requested by sonar
-	}
-
-	@Override
-	public RefactoringStatus isValid(IProgressMonitor pm) throws CoreException {
-		return RefactoringStatus.create(Status.OK_STATUS);
-	}
-
-	@Override
-	public Object getModifiedElement() {
-		IFile file = LSPEclipseUtils.getFileHandle(this.fileUri.toString());
-		if (file != null) {
-			return file;
-		}
-		if (this.fBuffer != null) {
-			return this.fBuffer.getDocument();
-		}
-		return null;
-	}
-
-	@Override
-	public Change perform(IProgressMonitor pm) throws CoreException {
-		pm.beginTask("", 3); //$NON-NLS-1$
-		IDocument document = null;
-
-		try {
-			document = acquireDocument(SubMonitor.convert(pm, 1));
-
-			int offset = 0;
-			int length = document.getLength();
-			if (textEdit.getRange() != null) {
-				offset = LSPEclipseUtils.toOffset(textEdit.getRange().getStart(), document);
-				length = LSPEclipseUtils.toOffset(textEdit.getRange().getEnd(), document) - offset;
-			}
-			if (this.file.isRight()) {
-				delegate = new DocumentChange("Change in document " + fileUri.getPath(), document); //$NON-NLS-1$
-			} else {
-				delegate = new TextFileChange("Change in file " + this.file.getLeft().getName(), this.file.getLeft()) { //$NON-NLS-1$
-					@Override
-					protected boolean needsSaving() {
-						return fAcquireCount == 1;
-					}
-				};
-			}
-			delegate.initializeValidationData(new NullProgressMonitor());
-			delegate.setEdit(new ReplaceEdit(offset, length, textEdit.getNewText()));
-
-			return delegate.perform(pm);
-
-		} catch (BadLocationException e) {
-			throw Changes.asCoreException(e);
-		} catch (MalformedTreeException e) {
-			throw Changes.asCoreException(e);
-		} finally {
-			if (document != null) {
-				releaseDocument(document, SubMonitor.convert(pm, 1));
-			}
-			pm.done();
-		}
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/server/ProcessOverSocketStreamConnectionProvider.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/server/ProcessOverSocketStreamConnectionProvider.java
deleted file mode 100644
index d65ba2b..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/server/ProcessOverSocketStreamConnectionProvider.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Pierre-Yves B. <pyvesdev@gmail.com> - Bug 545950 - Specifying the directory in ProcessStreamConnectionProvider should not be mandatory
- *  Pierre-Yves B. <pyvesdev@gmail.com> - Bug 508812 - Improve error and logging handling
- *******************************************************************************/
-package org.eclipse.lsp4e.server;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.util.List;
-import java.util.Objects;
-
-import org.eclipse.lsp4e.LanguageServerPlugin;
-
-/**
- *
- * @since 0.1.0
- */
-public abstract class ProcessOverSocketStreamConnectionProvider extends ProcessStreamConnectionProvider {
-
-	private int port;
-	private Socket socket;
-	private InputStream inputStream;
-	private OutputStream outputStream;
-
-	public ProcessOverSocketStreamConnectionProvider(List<String> commands, int port) {
-		super(commands);
-		this.port = port;
-	}
-
-	public ProcessOverSocketStreamConnectionProvider(List<String> commands, String workingDir, int port) {
-		super(commands, workingDir);
-		this.port = port;
-	}
-
-	@Override
-	public void start() throws IOException {
-		final ServerSocket serverSocket = new ServerSocket(port);
-		Thread socketThread = new Thread(() -> {
-			try {
-				socket = serverSocket.accept();
-			} catch (IOException e) {
-				LanguageServerPlugin.logError(e);
-			} finally {
-				try {
-					serverSocket.close();
-				} catch (IOException e) {
-					LanguageServerPlugin.logError(e);
-				}
-			}
-
-		});
-		socketThread.start();
-		super.start();
-		try {
-			socketThread.join();
-		} catch (InterruptedException e) {
-			LanguageServerPlugin.logError(e);
-			Thread.currentThread().interrupt();
-		}
-
-		if (socket == null) {
-			throw new IOException("Unable to make socket connection: " + toString()); //$NON-NLS-1$
-		}
-
-		inputStream = socket.getInputStream();
-		outputStream = socket.getOutputStream();
-	}
-
-	@Override
-	public InputStream getInputStream() {
-		return inputStream;
-	}
-
-	@Override
-	public OutputStream getOutputStream() {
-		return outputStream;
-	}
-
-	@Override
-	public void stop() {
-		super.stop();
-		if (socket != null) {
-			try {
-				socket.close();
-			} catch (IOException e) {
-				LanguageServerPlugin.logError(e);
-			}
-		}
-	}
-
-	@Override
-	public int hashCode() {
-		int result = super.hashCode();
-		return result ^ Objects.hashCode(this.port);
-	}
-
-	@Override
-	public boolean equals(Object obj) {
-		if (obj == null) {
-			return false;
-		}
-		if (!(obj instanceof ProcessOverSocketStreamConnectionProvider)) {
-			return false;
-		}
-		if (obj == this) {
-			return true;
-		}
-		ProcessOverSocketStreamConnectionProvider other = (ProcessOverSocketStreamConnectionProvider) obj;
-		return Objects.equals(this.getCommands(), other.getCommands())
-				&& Objects.equals(this.getWorkingDirectory(), other.getWorkingDirectory())
-				&& Objects.equals(this.socket, other.socket);
-	}
-
-	@Override
-	public String toString() {
-		return "ProcessOverSocketStreamConnectionProvider [socket=" + socket + ", commands=" + this.getCommands() //$NON-NLS-1$//$NON-NLS-2$
-				+ ", workingDir=" + this.getWorkingDirectory() + "]"; //$NON-NLS-1$//$NON-NLS-2$
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/server/ProcessStreamConnectionProvider.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/server/ProcessStreamConnectionProvider.java
deleted file mode 100644
index d6c14de..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/server/ProcessStreamConnectionProvider.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *  Pierre-Yves B. <pyvesdev@gmail.com> - Bug 545950 - Specifying the directory in ProcessStreamConnectionProvider should not be mandatory
- *  Pierre-Yves B. <pyvesdev@gmail.com> - Bug 508812 - Improve error and logging handling
- *******************************************************************************/
-package org.eclipse.lsp4e.server;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.List;
-import java.util.Objects;
-
-import org.eclipse.jdt.annotation.Nullable;
-
-/**
- *
- * @since 0.1.0
- */
-public abstract class ProcessStreamConnectionProvider implements StreamConnectionProvider {
-
-	private @Nullable Process process;
-	private List<String> commands;
-	private @Nullable String workingDir;
-
-	public ProcessStreamConnectionProvider() {
-	}
-
-	public ProcessStreamConnectionProvider(List<String> commands) {
-		this.commands = commands;
-	}
-
-	public ProcessStreamConnectionProvider(List<String> commands, String workingDir) {
-		this.commands = commands;
-		this.workingDir = workingDir;
-	}
-
-	@Override
-	public void start() throws IOException {
-		if (this.commands == null || this.commands.isEmpty() || this.commands.stream().anyMatch(Objects::isNull)) {
-			throw new IOException("Unable to start language server: " + this.toString()); //$NON-NLS-1$
-		}
-
-		ProcessBuilder builder = createProcessBuilder();
-		Process p = builder.start();
-		this.process = p;
-		if (!p.isAlive()) {
-			throw new IOException("Unable to start language server: " + this.toString()); //$NON-NLS-1$
-		}
-	}
-
-	protected ProcessBuilder createProcessBuilder() {
-		ProcessBuilder builder = new ProcessBuilder(getCommands());
-		if (getWorkingDirectory() != null) {
-			builder.directory(new File(getWorkingDirectory()));
-		}
-		builder.redirectError(ProcessBuilder.Redirect.INHERIT);
-		return builder;
-	}
-
-	@Override
-	public @Nullable InputStream getInputStream() {
-		Process p = process;
-		return p == null ? null : p.getInputStream();
-	}
-
-	@Override
-	public @Nullable InputStream getErrorStream() {
-		Process p = process;
-		return p == null ? null : p.getErrorStream();
-	}
-
-	@Override
-	public @Nullable OutputStream getOutputStream() {
-		Process p = process;
-		return p == null ? null : p.getOutputStream();
-	}
-
-	@Override
-	public void stop() {
-		Process p = process;
-		if (p != null) {
-			p.destroy();
-		}
-	}
-
-	protected List<String> getCommands() {
-		return commands;
-	}
-
-	public void setCommands(List<String> commands) {
-		this.commands = commands;
-	}
-
-	protected @Nullable String getWorkingDirectory() {
-		return workingDir;
-	}
-
-	public void setWorkingDirectory(String workingDir) {
-		this.workingDir = workingDir;
-	}
-
-	@Override
-	public boolean equals(Object obj) {
-		if (obj == null) {
-			return false;
-		}
-		if (!(obj instanceof ProcessStreamConnectionProvider)) {
-			return false;
-		}
-		ProcessStreamConnectionProvider other = (ProcessStreamConnectionProvider) obj;
-		return Objects.equals(this.getCommands(), other.getCommands())
-				&& Objects.equals(this.getWorkingDirectory(), other.getWorkingDirectory());
-	}
-
-	@Override
-	public int hashCode() {
-		return Objects.hash(this.getCommands(), this.getWorkingDirectory());
-	}
-
-	@Override
-	public String toString() {
-		return "ProcessStreamConnectionProvider [commands=" + this.getCommands() + ", workingDir=" //$NON-NLS-1$//$NON-NLS-2$
-				+ this.getWorkingDirectory() + "]"; //$NON-NLS-1$
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/server/StreamConnectionProvider.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/server/StreamConnectionProvider.java
deleted file mode 100644
index c145fac..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/server/StreamConnectionProvider.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.server;
-
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URI;
-
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.lsp4j.jsonrpc.messages.Message;
-import org.eclipse.lsp4j.services.LanguageServer;
-
-/**
- * Abstraction of a connection which we can start/stop and connect to via streams.
- * It's typically used to wrap startup of language servers and to retrieve their
- * streams.
- * There most likely an existing Java class already taking care of this somewhere
- * in a popular API. In such case, we should consider getting read of this one and
- * use a more popular similar interface.
- * Note that in the context of Eclipse, the ILaunch might be such interface but I'm
- * not sure we want to bind to org.eclipse.debug from this Language Server bindings.
- *
- * This method MUST implement meaningful {@link #hashCode()} and {@link #equals(Object)}
- * to prevent multiple connections to be initiated multiple times.
- *
- * @since 0.1.0
- */
-public interface StreamConnectionProvider {
-
-	public void start() throws IOException;
-
-	public InputStream getInputStream();
-
-	public OutputStream getOutputStream();
-
-	/**
-	 * Returns the {@link InputStream} connected to the error output of the process
-	 * running the language server. If the error output is redirected to standard
-	 * output it returns <code>null</code>.
-	 *
-	 * @return the {@link InputStream} connected to the error output of the language
-	 *         server process or <code>null</code> if it's redirected or process not
-	 *         yet started.
-	 */
-	public @Nullable InputStream getErrorStream();
-
-	/**
-	 * Forwards a copy of an {@link InputStream} to an {@link OutputStream}.
-	 *
-	 * @param input
-	 *            the {@link InputStream} that will be copied
-	 * @param output
-	 *            the {@link OutputStream} to forward the copy to
-	 * @return a newly created {@link InputStream} that copies all data to the
-	 *         provided {@link OutputStream}
-	 */
-	public default InputStream forwardCopyTo(InputStream input, OutputStream output) {
-		if (input == null)
-			return null;
-		if (output == null)
-			return input;
-
-		FilterInputStream filterInput = new FilterInputStream(input) {
-			@Override
-			public int read() throws IOException {
-				int res = super.read();
-				System.err.print((char) res);
-				return res;
-			}
-
-			@Override
-			public int read(byte[] b, int off, int len) throws IOException {
-				int bytes = super.read(b, off, len);
-				byte[] payload = new byte[bytes];
-				System.arraycopy(b, off, payload, 0, bytes);
-				output.write(payload, 0, payload.length);
-				return bytes;
-			}
-
-			@Override
-			public int read(byte[] b) throws IOException {
-				int bytes = super.read(b);
-				byte[] payload = new byte[bytes];
-				System.arraycopy(b, 0, payload, 0, bytes);
-				output.write(payload, 0, payload.length);
-				return bytes;
-			}
-		};
-
-		return filterInput;
-	}
-
-	/**
-	 * User provided initialization options.
-	 */
-	public default Object getInitializationOptions(URI rootUri){
-		return null;
-	}
-
-	/**
-	 * Returns an object that describes the experimental features supported
-	 * by the client.
-	 * @implNote The returned object gets serialized by LSP4J, which itself uses
-	 *           GSon, so a GSon object can work too.
-	 * @since 0.12
-	 * @return an object whose fields represent the different experimental features
-	 *         supported by the client.
-	 */
-	public default Object getExperimentalFeaturesPOJO() {
-		return null;
-	}
-
-	/**
-	 * Provides trace level to be set on language server initialization.<br>
-	 * Legal values: "off" | "messages" | "verbose".
-	 *
-	 * @param rootUri
-	 *            the workspace root URI.
-	 *
-	 * @return the initial trace level to set
-	 * @see "https://microsoft.github.io/language-server-protocol/specification#initialize"
-	 */
-	public default String getTrace(URI rootUri) {
-		return "off"; //$NON-NLS-1$
-	}
-
-	public void stop();
-
-	/**
-	 * Allows to hook custom behavior on messages.
-	 * @param message a message
-	 * @param languageServer the language server receiving/sending the message.
-	 * @param rootURI
-	 */
-	public default void handleMessage(Message message, LanguageServer languageServer, URI rootURI) {}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/EnableDisableLSJob.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/EnableDisableLSJob.java
deleted file mode 100644
index c398e0b..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/EnableDisableLSJob.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Rastislav Wagner (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.ui;
-
-import java.util.List;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.lsp4e.ContentTypeToLanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.ui.IEditorReference;
-
-public class EnableDisableLSJob extends Job {
-
-	private List<ContentTypeToLanguageServerDefinition> serverDefinitions;
-	private IEditorReference[] editors;
-
-	public EnableDisableLSJob(List<ContentTypeToLanguageServerDefinition> serverDefinitions,
-			IEditorReference[] editors) {
-		super(Messages.enableDisableLSJob);
-		this.serverDefinitions = serverDefinitions;
-		this.editors = editors;
-	}
-
-	@Override
-	protected IStatus run(IProgressMonitor monitor) {
-		for (ContentTypeToLanguageServerDefinition changedDefinition : serverDefinitions) {
-			LanguageServerDefinition serverDefinition = changedDefinition.getValue();
-			if (serverDefinition != null) {
-				if (!changedDefinition.isEnabled()) {
-					LanguageServiceAccessor.disableLanguageServerContentType(changedDefinition);
-				} else if (editors != null) {
-					LanguageServiceAccessor.enableLanguageServerContentType(changedDefinition, editors);
-				}
-			}
-		}
-		return Status.OK_STATUS;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/LSPImages.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/LSPImages.java
deleted file mode 100644
index 400da39..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/LSPImages.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2021 Rogue Wave Software Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Michał Niewrzał (Rogue Wave Software Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.ui;
-
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4j.CompletionItem;
-import org.eclipse.lsp4j.CompletionItemKind;
-import org.eclipse.lsp4j.SymbolKind;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.osgi.framework.Bundle;
-
-public class LSPImages {
-
-
-	private LSPImages() {
-		// this class shouldn't be instantiated
-	}
-
-	private static ImageRegistry imageRegistry;
-	private static final Map<java.awt.Color, Image> colorToImageCache = new HashMap<>();
-	private static final String ICONS_PATH = "$nl$/icons/full/"; //$NON-NLS-1$
-	private static final String OBJECT = ICONS_PATH + "obj16/"; // basic colors - size 16x16 //$NON-NLS-1$
-	private static final Image EMPTY_IMAGE = new Image(PlatformUI.getWorkbench().getDisplay(), 16, 16);
-
-	public static final String IMG_MODULE = "IMG_MODULE"; //$NON-NLS-1$
-	public static final String IMG_NAMESPACE = "IMG_NAMESPACE"; //$NON-NLS-1$
-	public static final String IMG_PACKAGE = "IMG_PACKAGE"; //$NON-NLS-1$
-	public static final String IMG_CLASS = "IMG_CLASS"; //$NON-NLS-1$
-	public static final String IMG_METHOD = "IMG_METOHD"; //$NON-NLS-1$
-	public static final String IMG_PROPERTY = "IMG_PROPERTY"; //$NON-NLS-1$
-	public static final String IMG_FIELD = "IMG_FIELD"; //$NON-NLS-1$
-	public static final String IMG_CONSTRUCTOR = "IMG_CONSTRUCTOR"; //$NON-NLS-1$
-	public static final String IMG_ENUM = "IMG_ENUM"; //$NON-NLS-1$
-	public static final String IMG_INTERACE = "IMG_INTERFACE"; //$NON-NLS-1$
-	public static final String IMG_FUNCTION = "IMG_FUNCTION"; //$NON-NLS-1$
-	public static final String IMG_VARIABLE = "IMG_VARIABLE"; //$NON-NLS-1$
-	public static final String IMG_CONSTANT = "IMG_CONSTANT"; //$NON-NLS-1$
-	public static final String IMG_TEXT = "IMG_TEXT"; //$NON-NLS-1$
-	public static final String IMG_STRING = IMG_TEXT;
-	public static final String IMG_NUMBER = "IMG_NUMBER"; //$NON-NLS-1$
-	public static final String IMG_BOOLEAN = "IMG_BOOLEAN"; //$NON-NLS-1$
-	public static final String IMG_ARRAY = "IMG_ARRAY"; //$NON-NLS-1$
-	public static final String IMG_UNIT = "IMG_UNIT"; //$NON-NLS-1$
-	public static final String IMG_VALUE = "IMG_VALUE"; //$NON-NLS-1$
-	public static final String IMG_KEYWORD = "IMG_KEYWORD"; //$NON-NLS-1$
-	public static final String IMG_SNIPPET = "IMG_SNIPPET"; //$NON-NLS-1$
-	public static final String IMG_COLOR = "IMG_COLOR"; //$NON-NLS-1$
-	public static final String IMG_REFERENCE = "IMG_REFERENCE"; //$NON-NLS-1$
-
-	public static void initalize(ImageRegistry registry) {
-		imageRegistry = registry;
-
-		declareRegistryImage(IMG_MODULE, OBJECT + "module.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_NAMESPACE, OBJECT + "namespace.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_PACKAGE, OBJECT + "package.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_CLASS, OBJECT + "class.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_METHOD, OBJECT + "method.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_PROPERTY, OBJECT + "property.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_FIELD, OBJECT + "field.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_CONSTRUCTOR, OBJECT + "constructor.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_ENUM, OBJECT + "enum.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_INTERACE, OBJECT + "interface.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_FUNCTION, OBJECT + "function.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_VARIABLE, OBJECT + "variable.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_CONSTANT, OBJECT + "constant.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_STRING, OBJECT + "string.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_NUMBER, OBJECT + "number.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_BOOLEAN, OBJECT + "boolean.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_ARRAY, OBJECT + "array.png"); //$NON-NLS-1$
-
-		declareRegistryImage(IMG_TEXT, OBJECT + "text.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_UNIT, OBJECT + "unit.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_VALUE, OBJECT + "value.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_KEYWORD, OBJECT + "keyword.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_SNIPPET, OBJECT + "snippet.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_COLOR, OBJECT + "color.png"); //$NON-NLS-1$
-		declareRegistryImage(IMG_REFERENCE, OBJECT + "reference.png"); //$NON-NLS-1$
-	}
-
-	private static final void declareRegistryImage(String key, String path) {
-		ImageDescriptor desc = ImageDescriptor.getMissingImageDescriptor();
-		Bundle bundle = Platform.getBundle(LanguageServerPlugin.PLUGIN_ID);
-		URL url = null;
-		if (bundle != null) {
-			url = FileLocator.find(bundle, new Path(path), null);
-			if (url != null) {
-				desc = ImageDescriptor.createFromURL(url);
-			}
-		}
-		imageRegistry.put(key, desc);
-	}
-
-	/**
-	 * Returns the <code>Image</code> identified by the given key, or <code>null</code> if it does not exist.
-	 */
-	public static Image getImage(String key) {
-		return getImageRegistry().get(key);
-	}
-
-	/**
-	 * Returns the <code>ImageDescriptor</code> identified by the given key, or <code>null</code> if it does not exist.
-	 */
-	public static ImageDescriptor getImageDescriptor(String key) {
-		return getImageRegistry().getDescriptor(key);
-	}
-
-	public static ImageRegistry getImageRegistry() {
-		if (imageRegistry == null) {
-			imageRegistry = LanguageServerPlugin.getDefault().getImageRegistry();
-		}
-		return imageRegistry;
-	}
-
-	public static Image imageFromSymbolKind(SymbolKind kind) {
-		if (kind == null) {
-			return EMPTY_IMAGE;
-		}
-		switch (kind) {
-		case Array:
-			return getImage(IMG_ARRAY);
-		case Boolean:
-			return getImage(IMG_BOOLEAN);
-		case Class:
-			return getImage(IMG_CLASS);
-		case Constant:
-			return getImage(IMG_CONSTANT);
-		case Constructor:
-			return getImage(IMG_CONSTRUCTOR);
-		case Enum:
-			return getImage(IMG_ENUM);
-		case Field:
-			return getImage(IMG_FIELD);
-		case File:
-			return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
-		case Function:
-			return getImage(IMG_FUNCTION);
-		case Interface:
-			return getImage(IMG_INTERACE);
-		case Method:
-			return getImage(IMG_METHOD);
-		case Module:
-			return getImage(IMG_MODULE);
-		case Namespace:
-			return getImage(IMG_NAMESPACE);
-		case Number:
-			return getImage(IMG_NUMBER);
-		case Package:
-			return getImage(IMG_PACKAGE);
-		case Property:
-			return getImage(IMG_PROPERTY);
-		case String:
-			return getImage(IMG_STRING);
-		case Variable:
-			return getImage(IMG_VARIABLE);
-		default:
-			// when the SymbolKind is out the cases above
-			return EMPTY_IMAGE;
-		}
-	}
-
-	public static Image imageFromCompletionItem(CompletionItem completionItem) {
-		CompletionItemKind kind = completionItem.getKind();
-		switch (kind) {
-		case Text:
-			return getImage(IMG_TEXT);
-		case Method:
-			return getImage(IMG_METHOD);
-		case Function:
-			return getImage(IMG_FUNCTION);
-		case Constructor:
-			return getImage(IMG_CONSTRUCTOR);
-		case Field:
-			return getImage(IMG_FIELD);
-		case Variable:
-			return getImage(IMG_VARIABLE);
-		case Class:
-			return getImage(IMG_CLASS);
-		case Interface:
-			return getImage(IMG_INTERACE);
-		case Module:
-			return getImage(IMG_MODULE);
-		case Property:
-			return getImage(IMG_PROPERTY);
-		case Unit:
-			return getImage(IMG_UNIT);
-		case Value:
-			return getImage(IMG_VALUE);
-		case Enum:
-			return getImage(IMG_ENUM);
-		case Keyword:
-			return getImage(IMG_KEYWORD);
-		case Snippet:
-			return getImage(IMG_SNIPPET);
-		case Color:
-			return getImageForColor(completionItem);
-		case File:
-			return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
-		case Folder:
-			return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
-		case Reference:
-			return getImage(IMG_REFERENCE);
-		default:
-			return null;
-		}
-	}
-
-	private static Image getImageForColor(CompletionItem completionItem) {
-		String hexValue = null;
-
-		// TODO most probably can be extended for more cases
-		String docString = LSPEclipseUtils.getDocString(completionItem.getDocumentation());
-		if (docString != null && docString.startsWith("#")) { //$NON-NLS-1$
-			hexValue = docString;
-		} else if (completionItem.getLabel().startsWith("#")) { //$NON-NLS-1$
-			hexValue = completionItem.getLabel();
-		}
-		if (hexValue == null) {
-			return null;
-		}
-
-		java.awt.Color decodedColor = null;
-		try {
-			decodedColor = java.awt.Color.decode(hexValue);
-		} catch (NumberFormatException e) {
-			LanguageServerPlugin.logError(e);
-			return null;
-		}
-
-		return colorToImageCache.computeIfAbsent(decodedColor, key -> {
-			// TODO most probably some scaling should be done for HIDPI
-			Image image = new Image(Display.getDefault(), 16, 16);
-			GC gc = new GC(image);
-			Color color = new Color(Display.getDefault(), key.getRed(), key.getGreen(),
-					key.getBlue(), key.getAlpha());
-			gc.setBackground(color);
-			gc.fillRectangle(0, 0, 16, 16);
-			gc.dispose();
-			return image;
-		});
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/LanguageServerPreferencePage.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/LanguageServerPreferencePage.java
deleted file mode 100644
index 19f3f13..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/LanguageServerPreferencePage.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016-2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.ui;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TableViewerColumn;
-import org.eclipse.lsp4e.ContentTypeToLSPLaunchConfigEntry;
-import org.eclipse.lsp4e.ContentTypeToLanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServersRegistry;
-import org.eclipse.lsp4e.enablement.EnablementTester;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Link;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
-
-public class LanguageServerPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
-
-	private LanguageServersRegistry registry;
-	private List<ContentTypeToLSPLaunchConfigEntry> workingCopy;
-	private Button removeButton;
-	private CheckboxTableViewer checkboxViewer;
-	private TableViewer viewer;
-	private SelectionAdapter contentTypeLinkListener;
-	private List<ContentTypeToLanguageServerDefinition> changedDefinitions;
-
-	public LanguageServerPreferencePage() {
-
-		contentTypeLinkListener = new SelectionAdapter() {
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				if (getContainer() instanceof IWorkbenchPreferenceContainer) {
-					((IWorkbenchPreferenceContainer)getContainer()).openPage("org.eclipse.ui.preferencePages.ContentTypes", null); //$NON-NLS-1$
-				}
-			}
-		};
-	}
-
-	@Override
-	public void init(IWorkbench workbench) {
-		this.changedDefinitions = new ArrayList<>();
-		this.registry = LanguageServersRegistry.getInstance();
-	}
-
-	@Override
-	public void setVisible(boolean visible) {
-		super.setVisible(visible);
-		if (visible) {
-			this.checkboxViewer.refresh();
-		}
-	}
-
-	@Override
-	protected Control createContents(Composite parent) {
-		Composite res = new Composite(parent, SWT.NONE);
-		res.setLayout(new GridLayout(2, false));
-		Link intro = new Link(res, SWT.WRAP);
-		GridDataFactory.swtDefaults().align(SWT.FILL, SWT.TOP).grab(true, false).span(2, 1).hint(400, SWT.DEFAULT).applyTo(intro);
-		intro.setText(Messages.PreferencesPage_Intro);
-		intro.addSelectionListener(this.contentTypeLinkListener);
-
-		createStaticServersTable(res);
-
-		Link manualServersIntro = new Link(res, SWT.WRAP);
-		GridDataFactory.swtDefaults().align(SWT.FILL, SWT.TOP).grab(true, false).span(2, 1).hint(400, SWT.DEFAULT).applyTo(manualServersIntro);
-		manualServersIntro.setText(Messages.PreferencesPage_manualServers);
-		manualServersIntro.addSelectionListener(this.contentTypeLinkListener);
-		viewer = new TableViewer(res);
-		viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		viewer.setContentProvider(new ArrayContentProvider());
-		workingCopy = new ArrayList<>();
-		workingCopy.addAll(LanguageServersRegistry.getInstance().getContentTypeToLSPLaunches());
-		TableViewerColumn contentTypeColumn = new TableViewerColumn(viewer, SWT.NONE);
-		contentTypeColumn.getColumn().setText(Messages.PreferencesPage_contentType);
-		contentTypeColumn.getColumn().setWidth(200);
-		contentTypeColumn.setLabelProvider(new ColumnLabelProvider() {
-			@Override
-			public String getText(Object element) {
-				return ((ContentTypeToLanguageServerDefinition)element).getKey().getName();
-			}
-		});
-		TableViewerColumn launchConfigColumn = new TableViewerColumn(viewer, SWT.NONE);
-		launchConfigColumn.getColumn().setText(Messages.PreferencesPage_LaunchConfiguration);
-		launchConfigColumn.getColumn().setWidth(300);
-		launchConfigColumn.setLabelProvider(new ColumnLabelProvider() {
-			@Override
-			public String getText(Object element) {
-				return ((ContentTypeToLSPLaunchConfigEntry)element).getLaunchConfiguration().getName();
-			}
-		});
-		TableViewerColumn launchModeColumn = new TableViewerColumn(viewer, SWT.NONE);
-		launchModeColumn.getColumn().setText(Messages.PreferencesPage_LaunchMode);
-		launchModeColumn.getColumn().setWidth(100);
-		launchModeColumn.setLabelProvider(new ColumnLabelProvider() {
-			@Override
-			public String getText(Object element) {
-				StringBuilder res = new StringBuilder();
-				for (String s : ((ContentTypeToLSPLaunchConfigEntry)element).getLaunchModes()) {
-					res.append(s);
-					res.append(',');
-				}
-				if (res.length() > 0) {
-					res.deleteCharAt(res.length() - 1);
-				}
-				return res.toString();
-			}
-		});
-		viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		viewer.getTable().setHeaderVisible(true);
-		Composite buttonComposite = new Composite(res, SWT.NONE);
-		buttonComposite.setLayout(new GridLayout(1, false));
-		Button addButton = new Button(buttonComposite, SWT.PUSH);
-		addButton.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false));
-		addButton.setText(Messages.PreferencesPage_Add);
-		addButton.addSelectionListener(new SelectionAdapter() {
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				NewContentTypeLSPLaunchDialog dialog = new NewContentTypeLSPLaunchDialog(getShell());
-				if (dialog.open() == IDialogConstants.OK_ID) {
-					workingCopy.add(new ContentTypeToLSPLaunchConfigEntry(dialog.getContentType(),
-							dialog.getLaunchConfiguration(), dialog.getLaunchMode()));
-					viewer.refresh();
-				}
-				super.widgetSelected(e);
-			}
-		});
-		removeButton = new Button(buttonComposite, SWT.PUSH);
-		removeButton.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false));
-		removeButton.setText(Messages.PreferencesPage_Remove);
-		removeButton.addSelectionListener(new SelectionAdapter() {
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				ISelection sel = viewer.getSelection();
-				if (!sel.isEmpty() && sel instanceof IStructuredSelection) {
-					for (Object item : ((IStructuredSelection)sel).toArray()) {
-						workingCopy.remove(item);
-					}
-					viewer.refresh();
-				}
-			}
-		});
-		viewer.addSelectionChangedListener(event -> updateButtons());
-		viewer.setInput(workingCopy);
-		updateButtons();
-		return res;
-	}
-
-	private void createStaticServersTable(Composite res) {
-		Link staticServersIntro = new Link(res, SWT.WRAP);
-		GridDataFactory.swtDefaults().align(SWT.FILL, SWT.TOP).grab(true, false).span(2, 1).hint(400, SWT.DEFAULT).applyTo(staticServersIntro);
-		staticServersIntro.setText(Messages.PreferencesPage_staticServers);
-		staticServersIntro.addSelectionListener(this.contentTypeLinkListener);
-		checkboxViewer = CheckboxTableViewer.newCheckList(res, SWT.NONE);
-		checkboxViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		checkboxViewer.setContentProvider(new ArrayContentProvider());
-
-		TableViewerColumn enablementColumn = new TableViewerColumn(checkboxViewer, SWT.NONE);
-		enablementColumn.getColumn().setText(Messages.PreferencesPage_Enabled);
-		enablementColumn.getColumn().setWidth(70);
-		enablementColumn.setLabelProvider(new ColumnLabelProvider() {
-			@Override
-			public String getText(Object element) {
-				return null;
-			}
-		});
-
-		TableViewerColumn contentTypeColumn = new TableViewerColumn(checkboxViewer, SWT.NONE);
-		contentTypeColumn.getColumn().setText(Messages.PreferencesPage_contentType);
-		contentTypeColumn.getColumn().setWidth(200);
-		contentTypeColumn.setLabelProvider(new ColumnLabelProvider() {
-			@Override
-			public String getText(Object element) {
-				return ((ContentTypeToLanguageServerDefinition)element).getKey().getName();
-			}
-		});
-
-		TableViewerColumn launchConfigColumn = new TableViewerColumn(checkboxViewer, SWT.NONE);
-		launchConfigColumn.getColumn().setText(Messages.PreferencesPage_languageServer);
-		launchConfigColumn.getColumn().setWidth(300);
-		launchConfigColumn.setLabelProvider(new ColumnLabelProvider() {
-			@Override
-			public String getText(Object element) {
-				return ((ContentTypeToLanguageServerDefinition)element).getValue().label;
-			}
-		});
-
-
-		List<ContentTypeToLanguageServerDefinition> contentTypeToLanguageServerDefinitions = registry.getContentTypeToLSPExtensions();
-		if (contentTypeToLanguageServerDefinitions.stream()
-				.anyMatch(definition -> definition.getEnablementCondition() != null)) {
-
-			TableViewerColumn conditionColumn = new TableViewerColumn(checkboxViewer, SWT.NONE);
-			conditionColumn.getColumn().setText(Messages.PreferencesPage_enablementCondition);
-			conditionColumn.getColumn().setWidth(150);
-			conditionColumn.setLabelProvider(new ColumnLabelProvider() {
-				@Override
-				public String getText(Object element) {
-					EnablementTester tester = ((ContentTypeToLanguageServerDefinition) element)
-							.getEnablementCondition();
-
-					if(tester == null) {
-						// table does not support mnemonic
-						return Action.removeMnemonics(IDialogConstants.NO_LABEL);
-
-					}
-					String extensionStatus = ((ContentTypeToLanguageServerDefinition) element).isExtensionEnabled()
-							? Messages.PreferencePage_enablementCondition_true
-							: Messages.PreferencePage_enablementCondition_false;
-					return tester.getDescription() + " (" + extensionStatus + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-				}
-
-				@Override
-				public Color getBackground(Object element) {
-					EnablementTester tester = ((ContentTypeToLanguageServerDefinition) element)
-							.getEnablementCondition();
-					if (tester == null) {
-						return null;
-					}
-					Color red = Display.getDefault().getSystemColor(SWT.COLOR_RED);
-					Color green = Display.getDefault().getSystemColor(SWT.COLOR_GREEN);
-					return ((ContentTypeToLanguageServerDefinition) element).isExtensionEnabled() ? green : red;
-				}
-			});
-		}
-
-		checkboxViewer.setInput(contentTypeToLanguageServerDefinitions);
-		checkboxViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
-		checkboxViewer.getTable().setHeaderVisible(true);
-		checkboxViewer.getTable().setLinesVisible(true);
-
-		this.checkboxViewer.setCheckedElements(contentTypeToLanguageServerDefinitions.stream()
-				.filter(ContentTypeToLanguageServerDefinition::isUserEnabled).toArray());
-
-		checkboxViewer.addCheckStateListener(event -> {
-			if (event.getElement() instanceof ContentTypeToLanguageServerDefinition) {
-				ContentTypeToLanguageServerDefinition contentTypeToLanguageServerDefinition = (ContentTypeToLanguageServerDefinition) event
-						.getElement();
-				contentTypeToLanguageServerDefinition.setUserEnabled(event.getChecked());
-				changedDefinitions.add(contentTypeToLanguageServerDefinition);
-			}
-		});
-	}
-
-	protected void updateButtons() {
-		this.removeButton.setEnabled(!this.viewer.getSelection().isEmpty());
-	}
-
-	@Override
-	public boolean performOk() {
-		this.registry.setAssociations(this.workingCopy);
-		EnableDisableLSJob enableDisableLSJob = new EnableDisableLSJob(changedDefinitions, getEditors());
-		enableDisableLSJob.schedule();
-		return super.performOk();
-	}
-
-	private IEditorReference[] getEditors() {
-		IWorkbenchWindow wWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-		if (wWindow != null) {
-			IWorkbenchPage wPage = wWindow.getActivePage();
-			if (wPage != null) {
-				return wPage.getEditorReferences();
-			}
-		}
-		return null;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/LoggingPreferencePage.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/LoggingPreferencePage.java
deleted file mode 100644
index a43bb6e..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/LoggingPreferencePage.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Lucas Bullen (Red Hat Inc.) - initial implementation.
- *  Pierre-Yves B. <pyvesdev@gmail.com> - Bug 553376 - Logs preference page does not work on Windows
- *******************************************************************************/
-package org.eclipse.lsp4e.ui;
-
-import static org.eclipse.swt.events.SelectionListener.widgetSelectedAdapter;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.CheckboxCellEditor;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TableViewerColumn;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.lsp4e.ContentTypeToLSPLaunchConfigEntry;
-import org.eclipse.lsp4e.ContentTypeToLanguageServerDefinition;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.lsp4e.LanguageServersRegistry;
-import org.eclipse.lsp4e.LoggingStreamConnectionProviderProxy;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Link;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.wizards.datatransfer.SmartImportWizard;
-
-public class LoggingPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
-
-	private final class BooleanMapEditingSupport extends EditingSupport {
-
-		private final Map<String, Boolean> map;
-
-		private BooleanMapEditingSupport(TableViewer viewer,  Map<String, Boolean> map) {
-			super(viewer);
-			this.map = map;
-		}
-
-		@Override
-		protected void setValue(Object element, Object value) {
-			ContentTypeToLanguageServerDefinition server = (ContentTypeToLanguageServerDefinition)element;
-			map.put(server.getValue().id, (Boolean)value);
-			hasLoggingBeenChanged = true;
-			getViewer().refresh(element);
-		}
-
-		@Override
-		protected Object getValue(Object element) {
-			ContentTypeToLanguageServerDefinition server = (ContentTypeToLanguageServerDefinition)element;
-			return map.get(server.getValue().id);
-		}
-
-		@Override
-		protected CellEditor getCellEditor(Object element) {
-			return new CheckboxCellEditor();
-		}
-
-		@Override
-		protected boolean canEdit(Object element) {
-			return true;
-		}
-	}
-
-	private final class BooleanMapLabelProvider extends ColumnLabelProvider {
-		private final Map<String, Boolean> map;
-
-		private BooleanMapLabelProvider(Map<String, Boolean> map) {
-			super();
-			this.map = map;
-		}
-
-		@Override
-		public String getText(Object element) {
-			return map.getOrDefault(((ContentTypeToLanguageServerDefinition) element).getValue().id, false).booleanValue()
-							? Messages.PreferencePage_enablementCondition_true
-							: Messages.PreferencePage_enablementCondition_false;
-		}
-	}
-
-	private TableViewer languageServerViewer;
-	private TableViewer launchConfigurationViewer;
-	private Map<String, Boolean> serverEnableLoggingToFile = new HashMap<>();
-	private Map<String, Boolean> serverEnableLoggingToConsole = new HashMap<>();
-	private IPreferenceStore store = LanguageServerPlugin.getDefault().getPreferenceStore();
-	private boolean hasLoggingBeenChanged = false;
-
-	@Override
-	public void init(IWorkbench workbench) {
-		//nothing to do
-	}
-
-	@Override
-	protected Control createContents(Composite parent) {
-		Composite res = new Composite(parent, SWT.NONE);
-		res.setLayout(new GridLayout(1, false));
-
-		createStaticServersTable(res);
-		createLaunchConfigurationServersTable(res);
-		createLoggingContents(res);
-		updateInputs();
-		return res;
-	}
-
-	private void createStaticServersTable(Composite res) {
-		languageServerViewer = new TableViewer(res, SWT.FULL_SELECTION);
-		languageServerViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		languageServerViewer.setContentProvider(new ArrayContentProvider());
-
-		TableViewerColumn launchConfigColumn = new TableViewerColumn(languageServerViewer, SWT.NONE);
-		launchConfigColumn.getColumn().setText(Messages.PreferencesPage_languageServer);
-		launchConfigColumn.getColumn().setWidth(300);
-		launchConfigColumn.setLabelProvider(new ColumnLabelProvider() {
-			@Override
-			public String getText(Object element) {
-				return ((ContentTypeToLanguageServerDefinition) element).getValue().label;
-			}
-		});
-		addLoggingColumnsToViewer(languageServerViewer);
-		languageServerViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		languageServerViewer.getTable().setHeaderVisible(true);
-		languageServerViewer.getTable().setLinesVisible(true);
-	}
-
-	private void createLaunchConfigurationServersTable(Composite res) {
-		launchConfigurationViewer = new TableViewer(res, SWT.FULL_SELECTION);
-		launchConfigurationViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		launchConfigurationViewer.setContentProvider(new ArrayContentProvider());
-
-		TableViewerColumn launchConfigColumn = new TableViewerColumn(launchConfigurationViewer, SWT.NONE);
-		launchConfigColumn.getColumn().setText(Messages.PreferencesPage_LaunchConfiguration);
-		launchConfigColumn.getColumn().setWidth(300);
-		launchConfigColumn.setLabelProvider(new ColumnLabelProvider() {
-			@Override
-			public String getText(Object element) {
-				return ((ContentTypeToLSPLaunchConfigEntry) element).getLaunchConfiguration().getName();
-			}
-		});
-		addLoggingColumnsToViewer(launchConfigurationViewer);
-		launchConfigurationViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		launchConfigurationViewer.getTable().setHeaderVisible(true);
-		languageServerViewer.getTable().setLinesVisible(true);
-	}
-
-	private void addLoggingColumnsToViewer(TableViewer viewer) {
-		TableViewerColumn logToFileColumn = new TableViewerColumn(viewer, SWT.NONE);
-		logToFileColumn.getColumn().setText(Messages.PreferencesPage_logging_toFile_title);
-		logToFileColumn.getColumn().setWidth(100);
-		logToFileColumn.setLabelProvider(new BooleanMapLabelProvider(serverEnableLoggingToFile));
-		logToFileColumn.setEditingSupport(new BooleanMapEditingSupport(viewer, serverEnableLoggingToFile));
-
-		TableViewerColumn logToConsoleColumn = new TableViewerColumn(viewer, SWT.NONE);
-		logToConsoleColumn.getColumn().setText(Messages.PreferencesPage_logging_toConsole_title);
-		logToConsoleColumn.getColumn().setWidth(125);
-		logToConsoleColumn.setLabelProvider(new BooleanMapLabelProvider(serverEnableLoggingToConsole));
-		logToConsoleColumn.setEditingSupport(new BooleanMapEditingSupport(viewer, serverEnableLoggingToConsole));
-	}
-
-	private void createLoggingContents(Composite res) {
-		Composite loggingComposite = new Composite(res, SWT.NONE);
-		loggingComposite.setLayout(new GridLayout(3, false));
-		loggingComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
-
-		Label infoLabel = new Label(loggingComposite, SWT.NONE);
-		infoLabel.setText(Messages.preferencesPage_logging_info);
-		infoLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 3, 1));
-		Link logFolderLabel = new Link(loggingComposite, SWT.NONE);
-		logFolderLabel.setText(NLS.bind(Messages.preferencesPage_logging_fileLogsLocation, LoggingStreamConnectionProviderProxy.getLogDirectory()));
-		logFolderLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 3, 1));
-		logFolderLabel.addSelectionListener(widgetSelectedAdapter(e -> {
-			SmartImportWizard importWizard = new SmartImportWizard();
-			importWizard.setInitialImportSource(LoggingStreamConnectionProviderProxy.getLogDirectory());
-			WizardDialog dialog = new WizardDialog(logFolderLabel.getShell(), importWizard);
-			dialog.open();
-		}));
-		Label fileLoggingLabel = new Label(loggingComposite, SWT.NONE);
-		fileLoggingLabel.setText(Messages.PreferencesPage_logging_toFile_description);
-		Button disableFileLogging = new Button(loggingComposite, SWT.NONE);
-		disableFileLogging.setText(Messages.PreferencePage_enablementCondition_disableAll);
-		disableFileLogging.addSelectionListener(widgetSelectedAdapter(e -> {
-			serverEnableLoggingToFile.forEach((s, b) -> serverEnableLoggingToFile.put(s, false));
-			hasLoggingBeenChanged = true;
-			languageServerViewer.refresh();
-			launchConfigurationViewer.refresh();
-		}));
-		Button enableFileLogging = new Button(loggingComposite, SWT.NONE);
-		enableFileLogging.setText(Messages.PreferencePage_enablementCondition_enableAll);
-		enableFileLogging.addSelectionListener(widgetSelectedAdapter(e -> {
-			serverEnableLoggingToFile.forEach((s, b) -> serverEnableLoggingToFile.put(s, true));
-			hasLoggingBeenChanged = true;
-			languageServerViewer.refresh();
-			launchConfigurationViewer.refresh();
-		}));
-
-		Label consoleLoggingLabel = new Label(loggingComposite, SWT.NONE);
-		consoleLoggingLabel.setText(Messages.PreferencesPage_logging_toConsole_description);
-		Button disableConsoleLogging = new Button(loggingComposite, SWT.NONE);
-		disableConsoleLogging.setText(Messages.PreferencePage_enablementCondition_disableAll);
-		disableConsoleLogging.addSelectionListener(widgetSelectedAdapter(e -> {
-			serverEnableLoggingToConsole.forEach((s, b) -> serverEnableLoggingToConsole.put(s, false));
-			hasLoggingBeenChanged = true;
-			languageServerViewer.refresh();
-			launchConfigurationViewer.refresh();
-		}));
-		Button enableConsoleLogging = new Button(loggingComposite, SWT.NONE);
-		enableConsoleLogging.setText(Messages.PreferencePage_enablementCondition_enableAll);
-		enableConsoleLogging.addSelectionListener(widgetSelectedAdapter(e -> {
-			serverEnableLoggingToConsole.forEach((s, b) -> serverEnableLoggingToConsole.put(s, true));
-			hasLoggingBeenChanged = true;
-			languageServerViewer.refresh();
-			launchConfigurationViewer.refresh();
-		}));
-	}
-
-	@Override
-	protected void performDefaults() {
-		serverEnableLoggingToFile.forEach((s, b) -> serverEnableLoggingToFile.put(s,
-				store.getBoolean(LoggingStreamConnectionProviderProxy.lsToFileLoggingId(s))));
-		serverEnableLoggingToConsole.forEach((s, b) -> serverEnableLoggingToConsole.put(s,
-				store.getBoolean(LoggingStreamConnectionProviderProxy.lsToConsoleLoggingId(s))));
-		launchConfigurationViewer.refresh();
-		languageServerViewer.refresh();
-		super.performDefaults();
-	}
-
-	private void applyLoggingEnablment() {
-		serverEnableLoggingToFile.forEach((s, b) -> store.setValue(LoggingStreamConnectionProviderProxy.lsToFileLoggingId(s), b));
-		serverEnableLoggingToConsole.forEach((s, b) -> store.setValue(LoggingStreamConnectionProviderProxy.lsToConsoleLoggingId(s), b));
-		hasLoggingBeenChanged = false;
-	}
-
-	@Override
-	public boolean performOk() {
-		if (hasLoggingBeenChanged) {
-			applyLoggingEnablment();
-			MessageDialog dialog = new MessageDialog(getShell(), Messages.PreferencesPage_restartWarning_title, null,
-					Messages.PreferencesPage_restartWarning_message, MessageDialog.WARNING,
-					new String[] { IDialogConstants.NO_LABEL, Messages.PreferencesPage_restartWarning_restart }, 1);
-			if (dialog.open() == 1) {
-				PlatformUI.getWorkbench().restart();
-			}
-		}
-		return super.performOk();
-	}
-
-	@Override
-	public void setVisible(boolean visible) {
-		super.setVisible(visible);
-		updateInputs();
-	}
-
-	private void updateInputs() {
-		Set<String> languageServerIDs = new HashSet<>();
-		List<ContentTypeToLSPLaunchConfigEntry> contentTypeToLSPLaunchConfigEntries = new ArrayList<>();
-		LanguageServersRegistry.getInstance().getContentTypeToLSPLaunches().forEach(o -> {
-			String id = o.getValue().id;
-			if (languageServerIDs.add(id)) {
-				contentTypeToLSPLaunchConfigEntries.add(o);
-				serverEnableLoggingToFile.put(id, serverEnableLoggingToFile.getOrDefault(id,
-						store.getBoolean(LoggingStreamConnectionProviderProxy.lsToFileLoggingId(id))));
-				serverEnableLoggingToConsole.put(id, serverEnableLoggingToConsole.getOrDefault(id,
-						store.getBoolean(LoggingStreamConnectionProviderProxy.lsToConsoleLoggingId(id))));
-			}
-		});
-
-		launchConfigurationViewer.setInput(contentTypeToLSPLaunchConfigEntries);
-		launchConfigurationViewer.refresh();
-
-		languageServerIDs.clear();
-		List<ContentTypeToLanguageServerDefinition> contentTypeToLanguageServerDefinitions = new ArrayList<>();
-		LanguageServersRegistry.getInstance().getContentTypeToLSPExtensions().forEach(o -> {
-			String id = o.getValue().id;
-			if (languageServerIDs.add(id)) {
-				contentTypeToLanguageServerDefinitions.add(o);
-				serverEnableLoggingToFile.put(id, serverEnableLoggingToFile.getOrDefault(id,
-						store.getBoolean(LoggingStreamConnectionProviderProxy.lsToFileLoggingId(id))));
-				serverEnableLoggingToConsole.put(id, serverEnableLoggingToConsole.getOrDefault(id,
-						store.getBoolean(LoggingStreamConnectionProviderProxy.lsToConsoleLoggingId(id))));
-			}
-		});
-
-		languageServerViewer.setInput(contentTypeToLanguageServerDefinitions);
-		launchConfigurationViewer.refresh();
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/Messages.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/Messages.java
deleted file mode 100644
index a2b1c32..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/Messages.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *  Angelo Zerr <angelo.zerr@gmail.com> - Bug 525400 - [rename] improve rename support with ltk UI
- *  Jan Koehnlein (TypeFox) add rename empty message
- *******************************************************************************/
-package org.eclipse.lsp4e.ui;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
-
-	public static String hyperlinkLabel;
-	public static String PreferencesPage_Intro;
-	public static String PreferencesPage_staticServers;
-	public static String PreferencesPage_manualServers;
-	public static String PreferencesPage_LaunchConfiguration;
-	public static String PreferencesPage_LaunchMode;
-	public static String PreferencesPage_Add;
-	public static String PreferencesPage_Remove;
-	public static String PreferencesPage_contentType;
-	public static String PreferencesPage_languageServer;
-	public static String PreferencesPage_Enabled;
-	public static String PreferencesPage_enablementCondition;
-	public static String PreferencePage_enablementCondition_true;
-	public static String PreferencePage_enablementCondition_false;
-	public static String PreferencePage_enablementCondition_enableAll;
-	public static String PreferencePage_enablementCondition_disableAll;
-	public static String PreferencesPage_logging_toFile_title;
-	public static String PreferencesPage_logging_toFile_description;
-	public static String PreferencesPage_logging_toConsole_title;
-	public static String PreferencesPage_logging_toConsole_description;
-	public static String preferencesPage_logging_info;
-	public static String preferencesPage_logging_fileLogsLocation;
-	public static String PreferencesPage_restartWarning_title;
-	public static String PreferencesPage_restartWarning_message;
-	public static String PreferencesPage_restartWarning_restart;
-	public static String NewContentTypeLSPLaunchDialog_associateContentType;
-	public static String NewContentTypeLSPLaunchDialog_withLSPLaunch;
-	public static String codeActions_description;
-	public static String codeActions_label;
-	public static String codeActions_emptyMenu;
-	public static String codeLens_emptyMenu;
-	public static String updateCodeActions_menu;
-	public static String initializeLanguageServer_job;
-	public static String computing;
-	public static String notImplemented;
-	public static String LSPSymbolInWorkspaceDialog_DialogLabel;
-	public static String LSPSymbolInWorkspaceDialog_DialogTitle;
-	public static String updateCodelensMenu_job;
-	public static String outline_computingSymbols;
-	public static String rename_title;
-	public static String rename_label;
-	public static String rename_processor_name;
-	public static String rename_processor_required;
-	public static String serverEdit;
-	public static String rename_empty_message;
-	public static String rename_invalidated;
-	public static String completionError;
-	public static String linkWithEditor_label;
-	public static String linkWithEditor_description;
-	public static String linkWithEditor_tooltip;
-	public static String LSSearchQuery_label;
-	public static String LSSearchQuery_singularReference;
-	public static String LSSearchQuery_pluralReferences;
-	public static String enableDisableLSJob;
-	public static String edit_CreateFile;
-	public static String workspaceSymbols;
-	public static String symbolsInFile;
-
-	static {
-		NLS.initializeMessages("org.eclipse.lsp4e.ui.messages", Messages.class); //$NON-NLS-1$
-	}
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/NewContentTypeLSPLaunchDialog.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/NewContentTypeLSPLaunchDialog.java
deleted file mode 100644
index d4cc033..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/NewContentTypeLSPLaunchDialog.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Red Hat Inc. and others.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *  Mickael Istria (Red Hat Inc.) - initial implementation
- *******************************************************************************/
-package org.eclipse.lsp4e.ui;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTreeContentProvider;
-import org.eclipse.debug.ui.DebugUITools;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.ComboViewer;
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.lsp4e.LanguageServerPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
-
-public class NewContentTypeLSPLaunchDialog extends Dialog {
-
-	////
-	// copied from ContentTypesPreferencePage
-
-	private static class ContentTypesLabelProvider extends LabelProvider {
-		@Override
-		public String getText(Object element) {
-			IContentType contentType = (IContentType) element;
-			return contentType.getName();
-		}
-	}
-
-	private static class ContentTypesContentProvider implements ITreeContentProvider {
-
-		private IContentTypeManager manager;
-
-		@Override
-		public Object[] getChildren(Object parentElement) {
-			List<IContentType> elements = new ArrayList<>();
-			IContentType baseType = (IContentType) parentElement;
-			IContentType[] contentTypes = manager.getAllContentTypes();
-			for (int i = 0; i < contentTypes.length; i++) {
-				IContentType type = contentTypes[i];
-				if (Objects.equals(type.getBaseType(), baseType)) {
-					elements.add(type);
-				}
-			}
-			return elements.toArray();
-		}
-
-		@Override
-		public Object getParent(Object element) {
-			IContentType contentType = (IContentType) element;
-			return contentType.getBaseType();
-		}
-
-		@Override
-		public boolean hasChildren(Object element) {
-			return getChildren(element).length > 0;
-		}
-
-		@Override
-		public Object[] getElements(Object inputElement) {
-			return getChildren(null);
-		}
-
-		@Override
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-			manager = (IContentTypeManager) newInput;
-		}
-	}
-
-	protected IContentType contentType;
-	protected ILaunchConfiguration launchConfig;
-	protected Set<String> launchMode;
-
-	//
-	////
-
-	protected NewContentTypeLSPLaunchDialog(Shell parentShell) {
-		super(parentShell);
-	}
-
-	@Override
-	protected Control createDialogArea(Composite parent) {
-		Composite res = (Composite)super.createDialogArea(parent);
-		res.setLayout(new GridLayout(2, false));
-		new Label(res, SWT.NONE).setText(Messages.NewContentTypeLSPLaunchDialog_associateContentType);
-		new Label(res, SWT.NONE).setText(Messages.NewContentTypeLSPLaunchDialog_withLSPLaunch);
-		// copied from ContentTypesPreferencePage
-		FilteredTree contentTypesFilteredTree = new FilteredTree(res, SWT.BORDER, new PatternFilter(), true, false);
-		TreeViewer contentTypesViewer = contentTypesFilteredTree.getViewer();
-		contentTypesFilteredTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		contentTypesViewer.setContentProvider(new ContentTypesContentProvider());
-		contentTypesViewer.setLabelProvider(new ContentTypesLabelProvider());
-		contentTypesViewer.setComparator(new ViewerComparator());
-		contentTypesViewer.setInput(Platform.getContentTypeManager());
-		contentTypesViewer.addSelectionChangedListener(event -> {
-			IContentType newContentType = null;
-			if (event.getSelection() instanceof IStructuredSelection) {
-				IStructuredSelection sel = (IStructuredSelection)event.getSelection();
-				if (sel.size() == 1 && sel.getFirstElement() instanceof IContentType) {
-					newContentType = (IContentType)sel.getFirstElement();
-				}
-			}
-			contentType = newContentType;
-			updateButtons();
-		});
-		// copied from LaunchConfigurationDialog : todo use LaunchConfigurationFilteredTree
-		FilteredTree launchersFilteredTree = new FilteredTree(res, SWT.BORDER, new PatternFilter(), true, false);
-		TreeViewer launchConfigViewer = launchersFilteredTree.getViewer();
-		launchersFilteredTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		launchConfigViewer.setLabelProvider(new DecoratingLabelProvider(DebugUITools.newDebugModelPresentation(), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()));
-		launchConfigViewer.setContentProvider(new LaunchConfigurationTreeContentProvider(null, getShell()));
-		launchConfigViewer.setInput(DebugPlugin.getDefault().getLaunchManager());
-		ComboViewer launchModeViewer = new ComboViewer(res);
-		GridData comboGridData = new GridData(SWT.RIGHT, SWT.DEFAULT, true, false, 2, 1);
-		comboGridData.widthHint = 100;
-		launchModeViewer.getControl().setLayoutData(comboGridData);
-		launchModeViewer.setContentProvider(new ArrayContentProvider());
-		launchModeViewer.setLabelProvider(new LabelProvider() {
-			@Override
-			public String getText(Object o) {
-				StringBuilder res = new StringBuilder();
-				for (String s : (Set<String>)o) {
-					res.append(s);
-					res.append(',');
-				}
-				if (res.length() > 0) {
-					res.deleteCharAt(res.length() - 1);
-				}
-				return res.toString();
-			}
-		});
-		launchConfigViewer.addSelectionChangedListener(event -> {
-			ILaunchConfiguration newLaunchConfig = null;
-			if (event.getSelection() instanceof IStructuredSelection) {
-				IStructuredSelection sel = (IStructuredSelection)event.getSelection();
-				if (sel.size() == 1 && sel.getFirstElement() instanceof ILaunchConfiguration) {
-					newLaunchConfig = (ILaunchConfiguration)sel.getFirstElement();
-				}
-			}
-			launchConfig = newLaunchConfig;
-			updateLaunchModes(launchModeViewer);
-			updateButtons();
-		});
-		launchModeViewer.addSelectionChangedListener(event -> {
-			ISelection sel = event.getSelection();
-			if (sel.isEmpty()) {
-				launchMode = null;
-			} else if (sel instanceof IStructuredSelection) {
-				launchMode = (Set<String>) ((IStructuredSelection)sel).getFirstElement();
-			}
-			updateButtons();
-		});
-		return res;
-	}
-
-	@Override
-	protected Control createContents(Composite parent) {
-		Control res = super.createContents(parent);
-		updateButtons();
-		return res;
-	}
-
-	public IContentType getContentType() {
-		return this.contentType;
-	}
-
-	public ILaunchConfiguration getLaunchConfiguration() {
-		return this.launchConfig;
-	}
-
-	private void updateButtons() {
-		getButton(OK).setEnabled(contentType != null && launchConfig != null && launchMode != null);
-	}
-
-	private void updateLaunchModes(ComboViewer launchModeViewer) {
-		if (launchConfig == null) {
-			launchModeViewer.setInput(Collections.emptyList());
-		} else {
-			Set<Set<String>> modes = null;
-			try {
-				modes = launchConfig.getType().getSupportedModeCombinations();
-			} catch (CoreException e) {
-				LanguageServerPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, LanguageServerPlugin.getDefault().getBundle().getSymbolicName(), e.getMessage(), e));
-			}
-			if (modes == null) {
-				modes = Collections.singleton(Collections.singleton(ILaunchManager.RUN_MODE));
-			}
-			launchModeViewer.setInput(modes);
-			Object currentMode = null;
-			if (!launchModeViewer.getStructuredSelection().isEmpty()) {
-				currentMode = launchModeViewer.getStructuredSelection().getFirstElement();
-			}
-			if (currentMode == null || !modes.contains(currentMode)) {
-				launchModeViewer.setSelection(new StructuredSelection());
-				currentMode = null;
-			}
-			if (currentMode == null) {
-				for (Set<String> mode : modes) {
-					if (mode.size() == 1 && mode.iterator().next().equals(ILaunchManager.RUN_MODE)) {
-						currentMode = mode;
-						launchModeViewer.setSelection(new StructuredSelection(currentMode));
-					}
-				}
-			}
-			if (currentMode == null && !modes.isEmpty()) {
-				launchModeViewer.setSelection(new StructuredSelection(modes.iterator().next()));
-			}
-		}
-		updateButtons();
-	}
-
-	public @NonNull Set<String> getLaunchMode() {
-		return this.launchMode;
-	}
-
-}
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/messages.properties b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/messages.properties
deleted file mode 100644
index 214522e..0000000
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/messages.properties
+++ /dev/null
@@ -1,80 +0,0 @@
-# *******************************************************************************
-# Copyright (c) 2016 Red Hat Inc. and others.
-# This program and the accompanying materials are made
-# available under the terms of the Eclipse Public License 2.0
-# which is available at https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-#   Mickael Istria (Red Hat Inc.) - initial implementation
-#  Jan Koehnlein (TypeFox) add rename empty message
-# *******************************************************************************/
-hyperlinkLabel=Open Declaration
-
-PreferencesPage_Intro=Language Servers are applications that implement the Language Server Protocol. The IDE can connect \
-to them to take advantage of editor support such as code completion, diagnostics, and refactoring.
-PreferencesPage_staticServers=The following Language Server <-> <A>Content-Type</A> associations are provided statically:
-PreferencesPage_manualServers=You can also associate <A>content-types</A> \
-with a Launch Configuration which starts a language server chatting via stdin/stdout.
-PreferencesPage_LaunchConfiguration=Launch Configuration
-PreferencesPage_LaunchMode=Launch Mode
-PreferencesPage_contentType=Content Type
-PreferencesPage_Add=Add...
-PreferencesPage_Remove=Remove
-PreferencesPage_languageServer=Language Server
-PreferencesPage_Enabled=Enabled
-PreferencesPage_enablementCondition=Enablement condition
-PreferencePage_enablementCondition_true=\u2714\ufe0f
-PreferencePage_enablementCondition_false=\u274c
-PreferencePage_enablementCondition_enableAll=Enable all
-PreferencePage_enablementCondition_disableAll=Disable all
-PreferencesPage_logging_toFile_title=Log to File
-PreferencesPage_logging_toFile_description=Log language server communications to file
-PreferencesPage_logging_toConsole_title=Log to Console
-PreferencesPage_logging_toConsole_description=Log language server communications to console
-preferencesPage_logging_info=Click on individual server logging statuses to set logging on a per server basis
-preferencesPage_logging_fileLogsLocation=File logs are stored in \uD83D\uDCC2<A>{0}</A>
-PreferencesPage_restartWarning_title=Restart Required
-PreferencesPage_restartWarning_message=Changes to the logging settings may require a restart to fully take affect. Would you like to restart Eclipse SDK to apply the changes?
-PreferencesPage_restartWarning_restart=Restart Now
-NewContentTypeLSPLaunchDialog_associateContentType=Associate content-type...
-NewContentTypeLSPLaunchDialog_withLSPLaunch=...with Language Server Launch Configuration
-
-codeActions_description=Code Actions from language server.
-codeActions_label=Code Actions
-codeActions_emptyMenu=No available code actions
-codeLens_emptyMenu=No available code lenses
-updateCodeActions_menu=Update Code Actions
-initializeLanguageServer_job=Initialize language server
-computing=Computing...
-LSPSymbolInWorkspaceDialog_DialogLabel=Select an item to open.
-LSPSymbolInWorkspaceDialog_DialogTitle=Open Symbol in Workspace
-updateCodelensMenu_job=Update CodeLens menu
-outline_computingSymbols=Computing symbols...
-notImplemented=Not implemented
-completionError=Error while computing completion
-
-rename_title=Rename
-rename_label=New name:
-rename_processor_name=Rename Symbol
-rename_processor_required=new rename cannot be null
-rename_empty_message=Nothing to rename.
-rename_invalidated=The Rename request is not valid at the given position
-
-serverEdit=Edit from Language Server
-
-linkWithEditor_label=Lin&k with Editor
-linkWithEditor_description=Link with active editor
-linkWithEditor_tooltip=Link with Editor
-
-# References
-LSSearchQuery_label=References Search
-LSSearchQuery_singularReference= ''{0}'' at [{1}:{2}] - 1 reference in {3}ms
-LSSearchQuery_pluralReferences=  ''{0}'' at [{1}:{2}] - {3} references in {4}ms
-
-enableDisableLSJob=Enable/Disable Language Servers
-
-edit_CreateFile=Create file {0}
-workspaceSymbols=Workspace symbols
-symbolsInFile=Symbols in {0}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 5443809..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,252 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>org.eclipse.lsp4e</groupId>
-	<artifactId>parent</artifactId>
-	<version>0.13.1-SNAPSHOT</version>
-	<packaging>pom</packaging>
-	
-	<prerequisites>
-		<maven>3.6.3</maven>
-	</prerequisites>
-	
-	<properties>
-		<tycho-version>2.5.0</tycho-version>
-		<sonar.jacoco.reportPath>../target/jacoco.exec</sonar.jacoco.reportPath>
-		<tycho.scmUrl>scm:git:https://git.eclipse.org/r/p/lsp4e/lsp4e.git</tycho.scmUrl>
-		<ui.test.vmargs></ui.test.vmargs>
-		<target-config>target-platform-latest</target-config>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-	</properties>
-
-	<modules>
-		<module>target-platforms/target-platform-latest</module>
-		<module>org.eclipse.lsp4e</module>
-		<module>org.eclipse.lsp4e.jdt</module>
-		<module>org.eclipse.lsp4e.debug</module>
-		<module>org.eclipse.lsp4e.tests.mock</module>
-		<module>org.eclipse.lsp4e.test</module>
-		<module>repository</module>
-	</modules>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>tycho-maven-plugin</artifactId>
-				<version>${tycho-version}</version>
-				<extensions>true</extensions>
-			</plugin>
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>target-platform-configuration</artifactId>
-				<version>${tycho-version}</version>
-				<configuration>
-					<target>
-						<artifact>
-							<groupId>${project.groupId}</groupId>
-							<artifactId>${target-config}</artifactId>
-							<version>0.13.1-SNAPSHOT</version>
-						</artifact>
-					</target>
-					<environments>
-						<environment>
-							<os>win32</os>
-							<ws>win32</ws>
-							<arch>x86_64</arch>
-						</environment>
-						<environment>
-							<os>linux</os>
-							<ws>gtk</ws>
-							<arch>x86_64</arch>
-						</environment>
-						<environment>
-							<os>macosx</os>
-							<ws>cocoa</ws>
-							<arch>x86_64</arch>
-						</environment>
-					</environments>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>tycho-source-plugin</artifactId>
-				<version>${tycho-version}</version>
-				<executions>
-					<execution>
-						<id>plugin-source</id>
-						<goals>
-							<goal>plugin-source</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>tycho-packaging-plugin</artifactId>
-				<version>${tycho-version}</version>
-				<configuration>
-					<sourceReferences>
-						<generate>true</generate>
-					</sourceReferences>
-				</configuration>
-				<dependencies>
-					<dependency>
-						<groupId>org.eclipse.tycho.extras</groupId>
-						<artifactId>tycho-sourceref-jgit</artifactId>
-						<version>${tycho-version}</version>
-					</dependency>
-				</dependencies>
-			</plugin>
-			<plugin>
-				<groupId>org.eclipse.tycho.extras</groupId>
-				<artifactId>tycho-p2-extras-plugin</artifactId>
-				<version>${tycho-version}</version>
-				<executions>
-					<!-- Make sure we don't forget to bump version -->
-					<execution>
-						<id>compare-version-with-baseline</id>
-						<goals>
-							<goal>compare-version-with-baselines</goal>
-						</goals>
-						<configuration>
-							<baselines>
-								<url>http://download.eclipse.org/lsp4e/releases/latest</url>
-							</baselines>
-							<comparator>zip</comparator>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>org.jacoco</groupId>
-				<artifactId>jacoco-maven-plugin</artifactId>
-				<version>0.8.7</version>
-				<executions>
-					<execution>
-						<goals><goal>prepare-agent</goal></goals>
-					</execution>
-				</executions>
-				<configuration>
-					<append>true</append>
-					<destFile>${sonar.jacoco.reportPath}</destFile>
-					<includes>
-						<include>org.eclipse.lsp4e*</include>
-					</includes>
-				</configuration>
-			</plugin>
-		</plugins>
-		<pluginManagement>
-			<plugins>
-				<plugin>
-					<groupId>org.eclipse.tycho</groupId>
-					<artifactId>tycho-packaging-plugin</artifactId>
-					<version>${tycho-version}</version>
-					<dependencies>
-						<dependency>
-							<groupId>org.eclipse.tycho.extras</groupId>
-							<artifactId>tycho-buildtimestamp-jgit</artifactId>
-							<version>${tycho-version}</version>
-						</dependency>
-					</dependencies>
-					<configuration>
-						<timestampProvider>jgit</timestampProvider>
-						<jgit.ignore>
-							pom.xml
-						</jgit.ignore>
-					</configuration>
-				</plugin>
-				<plugin>
-					<groupId>org.eclipse.tycho</groupId>
-					<artifactId>tycho-p2-plugin</artifactId>
-					<version>${tycho-version}</version>
-					<configuration>
-						<baselineRepositories>
-							<repository>
-								<url>http://download.eclipse.org/lsp4e/snapshots</url>
-							</repository>
-						</baselineRepositories>
-					</configuration>
-				</plugin>
-			</plugins>
-		</pluginManagement>
-	</build>
-
-	<profiles>
-		<profile>
-			<id>sign</id>
-			<build>
-				<plugins>
-					<plugin>
-						<groupId>org.eclipse.cbi.maven.plugins</groupId>
-						<artifactId>eclipse-jarsigner-plugin</artifactId>
-						<version>1.3.2</version>
-						<executions>
-							<execution>
-								<id>sign</id>
-								<phase>package</phase>
-								<goals>
-									<goal>sign</goal>
-								</goals>
-							</execution>
-						</executions>
-					</plugin>
-					<plugin>
-						<groupId>org.eclipse.tycho</groupId>
-						<artifactId>tycho-p2-plugin</artifactId>
-						<version>${tycho-version}</version>
-						<executions>
-							<execution>
-								<id>p2-metadata</id>
-								<phase>package</phase>
-								<goals>
-									<goal>p2-metadata</goal>
-								</goals>
-							</execution>
-						</executions>
-						<configuration>
-							<defaultP2Metadata>false</defaultP2Metadata>
-						</configuration>
-					</plugin>
-				</plugins>
-			</build>
-		</profile>
-		<!-- Automatic profile for Mac-specific settings -->
-		<profile>
-			<id>macos</id>
-			<activation>
-				<os>
-					<family>mac</family>
-				</os>
-			</activation>
-			<properties>
-				<ui.test.vmargs>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Djava.awt.headless=false</ui.test.vmargs>
-			</properties>
-		</profile>
-	</profiles>
-
-	<pluginRepositories>
-		<pluginRepository>
-			<id>cbi</id>
-			<url>https://repo.eclipse.org/content/groups/cbi</url>
-			<snapshots><enabled>true</enabled></snapshots>
-		</pluginRepository>
-		<pluginRepository>
-			<id>cbi-release</id>
-			<url>https://repo.eclipse.org/content/repositories/cbi-releases</url>
-			<snapshots><enabled>false</enabled></snapshots>
-			<releases><enabled>true</enabled></releases>
-		</pluginRepository>
-		<pluginRepository>
-			<id>tycho-snapshots</id>
-			<url>https://repo.eclipse.org/content/repositories/tycho-snapshots/</url>
-		</pluginRepository>
-		<pluginRepository>
-		  	<id>dash-licenses-snapshots</id>
-		  	<url>https://repo.eclipse.org/content/repositories/dash-licenses-snapshots/</url>
-		  	<snapshots>
-		  	  <enabled>true</enabled>
-		  	</snapshots>
-  		</pluginRepository>
-	</pluginRepositories>
-
-</project>
diff --git a/repository/.gitignore b/repository/.gitignore
deleted file mode 100644
index b83d222..0000000
--- a/repository/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/repository/category.xml b/repository/category.xml
deleted file mode 100644
index 29e58b7..0000000
--- a/repository/category.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
-   <category-def name="Language Server Support for Eclipse" label="Language Server Support for Eclipse IDE"/>
-   <bundle id="org.eclipse.lsp4e">
-      <category name="Language Server Support for Eclipse"/>
-   </bundle>
-   <bundle id="org.eclipse.lsp4e.jdt">
-      <category name="JDT Integration for LSP4E"/>
-   </bundle>
-   <bundle id="org.eclipse.lsp4e.debug">
-      <category name="Language Server Support for Eclipse"/>
-   </bundle>
-
-   <category-def name="Sources and Tests" label="Sources and Tests"/>
-   <bundle id="org.eclipse.lsp4e.source">
-      <category name="Sources and Tests"/>
-   </bundle>
-   <bundle id="org.eclipse.lsp4e.jdt.source">
-      <category name="Sources and Tests"/>
-   </bundle>
-   <bundle id="org.eclipse.lsp4e.debug.source">
-      <category name="Sources and Tests"/>
-   </bundle>
-   <bundle id="org.eclipse.lsp4e.test">
-      <category name="Sources and Tests"/>
-   </bundle>
-   <bundle id="org.eclipse.lsp4e.test.source">
-      <category name="Sources and Tests"/>
-   </bundle>
-   <bundle id="org.eclipse.lsp4e.tests.mock">
-      <category name="Sources and Tests"/>
-   </bundle>
-   <bundle id="org.eclipse.lsp4e.tests.mock.source">
-      <category name="Sources and Tests"/>
-   </bundle>
-   
-   <category-def name="deps" label="Dependencies"/>
-   <bundle id="org.eclipse.lsp4j">
-     <category name="deps"/>
-   </bundle>
-   <bundle id="org.eclipse.lsp4j.jsonrpc">
-     <category name="deps"/>
-   </bundle>
-   <bundle id="org.eclipse.lsp4j.debug">
-     <category name="deps"/>
-   </bundle>
-   <bundle id="org.eclipse.lsp4j.jsonrpc.debug">
-     <category name="deps"/>
-   </bundle>
-   <bundle id="org.eclipse.xtext.xbase.lib">
-     <category name="deps"/>
-   </bundle>
-   <bundle id="com.google.gson">
-     <category name="deps"/>
-   </bundle>
-</site>
diff --git a/repository/deploy-settings.xml b/repository/deploy-settings.xml
deleted file mode 100644
index 07ecc1f..0000000
--- a/repository/deploy-settings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<settings>
-    <servers>
-        <server>
-            <id>jboss-snapshots-repository</id>
-            <username>${env.DEPLOY_USER}</username>
-            <password>${env.DEPLOY_PASS}</password>
-        </server>
-    </servers>
-</settings>
-
diff --git a/repository/pom.xml b/repository/pom.xml
deleted file mode 100644
index 6fa037e..0000000
--- a/repository/pom.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <artifactId>repository</artifactId>
-	<parent>
-  	<groupId>org.eclipse.lsp4e</groupId>
-		<artifactId>parent</artifactId>
-	  <version>0.13.1-SNAPSHOT</version>
-	</parent>
-  <packaging>eclipse-repository</packaging>
-</project>
diff --git a/svg/org.eclipse.languageserver/icons/full/elcl16/link_to_editor.svg b/svg/org.eclipse.languageserver/icons/full/elcl16/link_to_editor.svg
deleted file mode 100644
index 37c0b6a..0000000
--- a/svg/org.eclipse.languageserver/icons/full/elcl16/link_to_editor.svg
+++ /dev/null
@@ -1,184 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.0 r9654"
-   sodipodi:docname="synced.svg"
-   inkscape:export-filename="C:\Users\jmietling\Documents\rect3997-9-1.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4883">
-      <stop
-         style="stop-color:#bd8416;stop-opacity:1;"
-         offset="0"
-         id="stop4885" />
-      <stop
-         style="stop-color:#aa6f10;stop-opacity:1"
-         offset="1"
-         id="stop4887" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5103">
-      <stop
-         style="stop-color:#fefdef;stop-opacity:1"
-         offset="0"
-         id="stop5105" />
-      <stop
-         style="stop-color:#fce69e;stop-opacity:1"
-         offset="1"
-         id="stop5107" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5103"
-       id="linearGradient5109"
-       x1="11.906143"
-       y1="1042.3622"
-       x2="11.906143"
-       y2="1047.2684"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-1,2.9999502)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4883"
-       id="linearGradient4889"
-       x1="11"
-       y1="1043.3622"
-       x2="11"
-       y2="1052.3622"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4883-7"
-       id="linearGradient4889-1"
-       x1="11"
-       y1="1043.3622"
-       x2="11"
-       y2="1052.3622"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1,0,0,1,15.987978,-7)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4883-7">
-      <stop
-         style="stop-color:#bd8416;stop-opacity:1;"
-         offset="0"
-         id="stop4885-4" />
-      <stop
-         style="stop-color:#aa6f10;stop-opacity:1"
-         offset="1"
-         id="stop4887-0" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5103-4">
-      <stop
-         style="stop-color:#fefdef;stop-opacity:1"
-         offset="0"
-         id="stop5105-8" />
-      <stop
-         style="stop-color:#fce69e;stop-opacity:1"
-         offset="1"
-         id="stop5107-8" />
-    </linearGradient>
-    <linearGradient
-       y2="1047.2684"
-       x2="11.906143"
-       y1="1042.3622"
-       x1="11.906143"
-       gradientTransform="matrix(-1,0,0,1,16.987978,-4)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient4911"
-       xlink:href="#linearGradient5103-4"
-       inkscape:collect="always" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="15.999999"
-     inkscape:cx="16.638127"
-     inkscape:cy="5.0891236"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1241"
-     inkscape:window-height="814"
-     inkscape:window-x="1124"
-     inkscape:window-y="592"
-     inkscape:window-maximized="0"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3999"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <path
-       style="fill:url(#linearGradient5109);fill-opacity:1;stroke:none;display:inline"
-       d="m 4,1047.3622 0,1 7,0 0,3 3.999893,-3.5 -3.999893,-3.5 0,3 z"
-       id="path4108-1"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccccccc" />
-    <path
-       style="fill:url(#linearGradient4889);fill-opacity:1;stroke:none;display:inline"
-       d="m 10,1043.3622 0,3 -5,0 -1,0 c -0.99185,0.9918 -0.986324,2.0137 0,3 l 1,0 5,0 0,3 c 0,0.6519 0.740915,0.6375 1.5,0 l 4.9375,-4.5 -4.9375,-4.5 c -0.760225,-0.7602 -1.5,-0.5203 -1.5,0 z m 1,1 4,3.5 -4,3.5 0,-3 -6.4375,0 c -0.276214,-0.2099 -0.277444,-0.7282 0,-1 l 6.4375,0 z"
-       id="path4108-1-6"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccccccccccccccccccc" />
-    <path
-       style="fill:url(#linearGradient4911);fill-opacity:1;stroke:none;display:inline"
-       d="m 11.987978,1040.3622 0,1 -7.0000023,0 0,3 -3.99989299,-3.5 3.99989299,-3.5 0,3 z"
-       id="path4108-1-2"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccccccc" />
-    <path
-       style="fill:url(#linearGradient4889-1);fill-opacity:1;stroke:none;display:inline"
-       d="m 5.9879757,1036.3622 0,3 5.0000023,0 1,0 c 0.99185,0.9918 0.986324,2.0137 0,3 l -1,0 -5.0000023,0 0,3 c 0,0.6519 -0.740915,0.6375 -1.5,0 l -4.93749974,-4.5 4.93749974,-4.5 c 0.760225,-0.7602 1.5,-0.5203 1.5,0 z m -1,1 -3.99999999,3.5 3.99999999,3.5 0,-3 6.4375023,0 c 0.276214,-0.2099 0.277444,-0.7282 0,-1 l -6.4375023,0 z"
-       id="path4108-1-6-4"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccccccccccccccccccc" />
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/etool16/mark_occurrences.svg b/svg/org.eclipse.languageserver/icons/full/etool16/mark_occurrences.svg
deleted file mode 100644
index ce440fb..0000000
--- a/svg/org.eclipse.languageserver/icons/full/etool16/mark_occurrences.svg
+++ /dev/null
@@ -1,224 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.0 r9654"
-   sodipodi:docname="mark_occurrences.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient4994">
-      <stop
-         id="stop4996"
-         offset="0"
-         style="stop-color:#a19a7c;stop-opacity:1" />
-      <stop
-         style="stop-color:#a29d80;stop-opacity:1"
-         offset="0.13130741"
-         id="stop5002" />
-      <stop
-         style="stop-color:#c5c3b5;stop-opacity:1"
-         offset="0.26261482"
-         id="stop4998" />
-      <stop
-         id="stop5004"
-         offset="0.63130742"
-         style="stop-color:#a29d80;stop-opacity:1" />
-      <stop
-         id="stop5000"
-         offset="1"
-         style="stop-color:#9e9070;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4976">
-      <stop
-         style="stop-color:#a8a38c;stop-opacity:1"
-         offset="0"
-         id="stop4978" />
-      <stop
-         id="stop4984"
-         offset="0.26261482"
-         style="stop-color:#c5c3b5;stop-opacity:1" />
-      <stop
-         style="stop-color:#a19a7c;stop-opacity:1"
-         offset="1"
-         id="stop4980" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4960">
-      <stop
-         style="stop-color:#eac826;stop-opacity:1"
-         offset="0"
-         id="stop4962" />
-      <stop
-         style="stop-color:#c5a334;stop-opacity:1"
-         offset="1"
-         id="stop4964" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4952">
-      <stop
-         style="stop-color:#fbdd83;stop-opacity:1"
-         offset="0"
-         id="stop4954" />
-      <stop
-         id="stop4970"
-         offset="0.25"
-         style="stop-color:#fdf39f;stop-opacity:1" />
-      <stop
-         id="stop4968"
-         offset="0.62763387"
-         style="stop-color:#fee745;stop-opacity:1" />
-      <stop
-         style="stop-color:#eac826;stop-opacity:1"
-         offset="1"
-         id="stop4956" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4942">
-      <stop
-         style="stop-color:#f5d71e;stop-opacity:1"
-         offset="0"
-         id="stop4944" />
-      <stop
-         style="stop-color:#fdf39f;stop-opacity:1"
-         offset="1"
-         id="stop4946" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4942"
-       id="linearGradient4948"
-       x1="17.662846"
-       y1="1052.5724"
-       x2="19.885061"
-       y2="1052.5724"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(0,-2.1397741)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4952"
-       id="linearGradient4958"
-       x1="26.461384"
-       y1="1045.0045"
-       x2="29.825548"
-       y2="1048.598"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-2.1397741,4.8953347e-7)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4960"
-       id="linearGradient4966"
-       x1="28.021715"
-       y1="1042.9713"
-       x2="32.686157"
-       y2="1046.8485"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-2.1397741,4.8953347e-7)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4976"
-       id="linearGradient4982"
-       x1="26.544964"
-       y1="1057.6731"
-       x2="30.345661"
-       y2="1061.172"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(0,-14.978419)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4994"
-       id="linearGradient4992"
-       x1="29.5947"
-       y1="1053.5125"
-       x2="35.038246"
-       y2="1058.7136"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(0,-14.978419)" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313709"
-     inkscape:cx="27.607793"
-     inkscape:cy="3.0183401"
-     inkscape:document-units="px"
-     inkscape:current-layer="g8472"
-     showgrid="false"
-     inkscape:window-width="1171"
-     inkscape:window-height="959"
-     inkscape:window-x="175"
-     inkscape:window-y="175"
-     inkscape:window-maximized="0"
-     showguides="true"
-     inkscape:guide-bbox="true" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <g
-       style="display:inline"
-       id="g8472"
-       transform="matrix(0.9346781,0,0,0.9346781,-14.571811,69.044514)">
-      <rect
-         style="fill:url(#linearGradient4948);fill-opacity:1;stroke:none"
-         id="rect4172"
-         width="5.3480377"
-         height="1.0668679"
-         x="15.590192"
-         y="1049.8992" />
-      <g
-         transform="translate(15.600543,0)"
-         id="g8421" />
-      <path
-         style="fill:url(#linearGradient4958);fill-opacity:1;stroke:url(#linearGradient4966);stroke-width:1.06988704px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 25.874196,1042.866 -5.532085,5.3903 c 0,0 -0.425545,1.3948 0.33098,1.9858 0.756524,0.5911 5.933987,0.2601 5.933987,0.2601 l 3.90083,-3.8299 z"
-         id="path4950"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:url(#linearGradient4982);fill-opacity:1;stroke:#999072;stroke-width:1.06988704px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 30.106004,1047.3342 -4.633711,-4.3499 3.889236,-3.8893 4.468222,4.3027 z"
-         id="path4972"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccccc" />
-      <path
-         style="fill:url(#linearGradient4992);fill-opacity:1;stroke:#9c9170;stroke-width:1.06988704px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 30.36606,1044.5919 c -0.532814,-0.6954 -1.460212,-1.6094 -2.245932,-2.1042 -0.785721,-0.4947 -1.820388,-0.6616 -1.820388,-0.6616 0,0 0.09457,-0.993 1.205712,-1.9859 l 8.700031,-8.854 0,12.542 -2.742401,2.3641 c -0.898374,0.5438 -2.316857,0.662 -2.316857,0.662 0.127896,-0.6188 -0.247352,-1.267 -0.780165,-1.9624 z"
-         id="path4974"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="zzccccccz" />
-    </g>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/boolean.svg b/svg/org.eclipse.languageserver/icons/full/obj16/boolean.svg
deleted file mode 100644
index 6a7b26e..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/boolean.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="32"
-   height="32"
-   viewBox="0 0 32 32.000001"
-   id="svg4136"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="boolean.svg">
-  <defs
-     id="defs4138" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.5"
-     inkscape:cx="-70.000326"
-     inkscape:cy="-28.261349"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:window-width="1920"
-     inkscape:window-height="1016"
-     inkscape:window-x="0"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1" />
-  <metadata
-     id="metadata4141">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer2"
-     inkscape:label="false">
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:32.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="7.4999995"
-       y="32.08939"
-       id="text4688"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4690"
-         x="7.4999995"
-         y="32.08939">✘</tspan></text>
-  </g>
-  <g
-     inkscape:label="true"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1020.3622)">
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#009100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
-       x="-3.3928573"
-       y="1047.3176"
-       id="text4684"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4686"
-         x="-3.3928573"
-         y="1047.3176">✔</tspan></text>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/class.svg b/svg/org.eclipse.languageserver/icons/full/obj16/class.svg
deleted file mode 100644
index b7322a0..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/class.svg
+++ /dev/null
@@ -1,164 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="class_obj.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient3827">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="0"
-         id="stop3829" />
-      <stop
-         id="stop3835"
-         offset="0.60149658"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop3831" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1">
-      <stop
-         style="stop-color:#4f9e55;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2"
-         offset="0.5"
-         style="stop-color:#418a4d;stop-opacity:1" />
-      <stop
-         style="stop-color:#91c168;stop-opacity:1;"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       id="linearGradient4293"
-       gradientUnits="userSpaceOnUse"
-       x1="388.63736"
-       y1="478.18777"
-       x2="388.63736"
-       y2="462.11539" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313709"
-     inkscape:cx="1.2407203"
-     inkscape:cy="19.988601"
-     inkscape:document-units="px"
-     inkscape:current-layer="g3025"
-     showgrid="true"
-     inkscape:window-width="925"
-     inkscape:window-height="862"
-     inkscape:window-x="1633"
-     inkscape:window-y="287"
-     inkscape:window-maximized="0"
-     inkscape:snap-global="false"
-     showguides="true"
-     inkscape:guide-bbox="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3950" />
-    <sodipodi:guide
-       orientation="1,0"
-       position="5,3.25"
-       id="guide3797" />
-    <sodipodi:guide
-       orientation="0,1"
-       position="6.4375,3.75"
-       id="guide3801" />
-    <sodipodi:guide
-       orientation="1,0"
-       position="12.0625,5.3125"
-       id="guide3803" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <g
-       transform="matrix(0.27903303,0,0,0.27903303,-100.53208,912.07901)"
-       style="display:inline"
-       id="g11331-3-1-1">
-      <g
-         id="g13408-8"
-         style="fill:#737986;fill-opacity:1;stroke:#595e68;stroke-opacity:1" />
-    </g>
-    <g
-       id="g3025">
-      <g
-         style="display:inline"
-         id="g4193"
-         transform="translate(-1.0452774,-1.9697016)">
-        <g
-           transform="matrix(-1,0,0,1,16.12959,8.0140628)"
-           style="display:inline"
-           id="g6124-3-3">
-          <g
-             transform="scale(-1,1)"
-             style="font-style:normal;font-weight:normal;font-size:13.58917427px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-             id="text6430-2" />
-          <g
-             transform="scale(-1,1)"
-             style="font-style:normal;font-weight:normal;font-size:13.58917427px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
-             id="g6438-7">
-            <circle
-               r="8.9586821"
-               cy="468.23718"
-               cx="388.125"
-               style="display:inline;fill:url(#linearGradient4293);fill-opacity:1;stroke:#14733c;stroke-width:1.49227178;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-               id="path10796-2-6-2"
-               transform="matrix(0.66884336,0,0,0.67139756,-267.18268,722.47026)" />
-            <g
-               transform="scale(0.94400511,1.0593163)"
-               style="font-size:15.56941891px;font-family:Sans;fill:#ffffff"
-               id="text3782-3" />
-          </g>
-        </g>
-        <path
-           d="m 9.9582435,1043.4532 c -0.2897069,-0.3986 -0.2258257,-0.3177 -0.4712765,-0.5307 -0.2405524,-0.2129 -0.5547364,-0.3192 -0.9425527,-0.3192 -0.5154625,0 -0.927829,0.185 -1.2371006,0.5551 -0.3043689,0.3648 -0.4565517,0.6031 -0.4565489,1.4648 -2.8e-6,0.958 0.1546346,1.3845 0.4639127,1.7799 0.3141807,0.3954 0.8001884,0.593 1.2591915,0.593 0.4590031,0 0.7078193,-0.1439 0.9646439,-0.3422 0.2568246,-0.1983 0.2834574,-0.2 0.5301861,-0.7297 l 2.032379,-0.017 c -0.211101,0.9629 -0.616102,1.6013 -1.215009,2.093 -0.598921,0.4917 -1.401562,0.7374 -2.407928,0.7374 -1.1438303,0 -2.0569271,-0.3724 -2.7392935,-1.1176 -0.6774613,-0.7449 -1.0161905,-1.5264 -1.0161905,-2.8443 0,-1.333 0.3411837,-1.9946 1.0235539,-2.7344 0.6823664,-0.7452 1.6052818,-1.1177 2.7687486,-1.1177 0.9523657,0 1.7083715,0.2129 2.2680175,0.6387 0.564543,0.4205 1.032045,0.9883 1.277509,1.8547 z"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15.56941891px;line-height:125%;font-family:Arial;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path3817-0"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ccscsczzccsscscsccc" />
-      </g>
-    </g>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/constant.svg b/svg/org.eclipse.languageserver/icons/full/obj16/constant.svg
deleted file mode 100644
index 909856c..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/constant.svg
+++ /dev/null
@@ -1,452 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="constant.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient4198">
-      <stop
-         id="stop4200"
-         offset="0"
-         style="stop-color:#14733c;stop-opacity:1" />
-      <stop
-         style="stop-color:#14733c;stop-opacity:1"
-         offset="0.5"
-         id="stop4202" />
-      <stop
-         id="stop4204"
-         offset="1"
-         style="stop-color:#14733c;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       y2="459.24786"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3929-5"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1">
-      <stop
-         style="stop-color:#a17748;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2"
-         offset="0.5"
-         style="stop-color:#8e5c24;stop-opacity:1" />
-      <stop
-         style="stop-color:#c7af93;stop-opacity:1"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2" />
-    </linearGradient>
-    <mask
-       id="mask17098"
-       maskUnits="userSpaceOnUse">
-      <g
-         transform="translate(-0.696415,-25.515546)"
-         style="fill:#ffffff"
-         id="g17100">
-        <g
-           transform="matrix(0.27903303,0,0,0.27903303,-148.50157,940.95641)"
-           style="fill:#ffffff;stroke:#ffffff;display:inline"
-           id="g17102">
-          <g
-             style="fill:#ffffff;stroke:#ffffff"
-             transform="matrix(1.1835826,0,0,1.1835826,-7.5789257,-74.544918)"
-             id="g17104">
-            <g
-               transform="matrix(3.0279299,0,0,3.0279299,456.02712,-2782.985)"
-               style="fill:#ffffff;stroke:#ffffff;display:inline"
-               id="g17106"
-               inkscape:label="Layer 1">
-              <g
-                 id="g17108"
-                 style="fill:#ffffff;stroke:#ffffff;display:inline"
-                 transform="matrix(0.27903303,0,0,0.27903303,-129.51159,939.94639)">
-                <rect
-                   y="363.23068"
-                   x="464.14426"
-                   height="7.1676102"
-                   width="54.014832"
-                   id="rect17110"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-                <g
-                   style="fill:#ffffff;stroke:#ffffff"
-                   id="g17112"
-                   transform="matrix(1.1835826,0,0,1.1835826,-75.612218,-74.709882)">
-                  <rect
-                     ry="2.625"
-                     rx="2.625"
-                     y="365.46738"
-                     x="463.93262"
-                     height="16.625"
-                     width="15"
-                     id="rect17114"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17116"
-                     d="m 463.24874,371.54269 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.39926 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.96909 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17118"
-                     d="m 463.24874,371.6096 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.33235 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.90218 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     inkscape:connector-curvature="0"
-                     id="path17120"
-                     d="m 462.26171,371.52622 20.09375,0"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-                  <g
-                     style="fill:#ffffff;stroke:#ffffff"
-                     mask="url(#mask4917-4-0)"
-                     id="g17122">
-                    <rect
-                       style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.38039374;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;filter:url(#filter4929-9)"
-                       id="rect17124"
-                       width="30.899641"
-                       height="22.649353"
-                       x="860.68469"
-                       y="542.8974"
-                       rx="2.625"
-                       ry="3.7184925"
-                       transform="matrix(1,0,-0.70828043,0.70593118,0,0)" />
-                  </g>
-                  <rect
-                     transform="matrix(1,0,-0.70828042,0.70593119,0,0)"
-                     ry="3.7184927"
-                     rx="2.625"
-                     y="543.43286"
-                     x="860.68469"
-                     height="21.542582"
-                     width="30.23728"
-                     id="rect17126"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.60383272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                </g>
-                <path
-                   sodipodi:nodetypes="ccccccc"
-                   inkscape:connector-curvature="0"
-                   id="path17128"
-                   d="m 492.81474,377.56576 -14.33522,0 0,3.5838 2.02645,0 0,-1.47461 11.8608,0 z"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-              </g>
-            </g>
-          </g>
-        </g>
-        <path
-           sodipodi:nodetypes="ssscccssscccscss"
-           inkscape:connector-curvature="0"
-           id="path17130"
-           d="m 5.7026894,1044.9373 c -0.185041,-0.018 -0.402396,-0.059 -0.576929,-0.1108 -0.270837,-0.079 -0.243851,0.015 -0.243851,-0.8593 0,-0.4579 0.0077,-0.7598 0.01951,-0.7646 0.01072,0 0.0317,0 0.04665,0.013 0.04847,0.037 0.294579,0.1623 0.376062,0.1926 0.186482,0.069 0.46629,0.1032 0.663393,0.083 0.436936,-0.047 0.733026,-0.2945 0.881951,-0.7389 0.120095,-0.3583 0.114052,-0.2194 0.12641,-2.9086 l 0.01137,-2.4738 0.829393,0 0.829395,0 0.0062,2.3061 c 0.0064,2.384 -5.49e-4,2.6629 -0.0777,3.0973 -0.156267,0.8809 -0.598495,1.5436 -1.254122,1.8796 -0.440731,0.2258 -1.0806,0.337 -1.637678,0.2843 z"
-           style="fill:#ffffff;fill-opacity:1;display:inline" />
-      </g>
-    </mask>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask4917-4-0">
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline"
-         d="m 462.77563,373.22885 29.11636,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,18.76896 c 0,1.45425 -1.17412,2.52598 -2.625,2.625 l -29.11636,1.98708 c -1.45088,0.099 -2.625,-1.17075 -2.625,-2.625 l 0,-20.75604 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-         id="path4919-6-6"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sssssssss" />
-    </mask>
-    <filter
-       inkscape:collect="always"
-       id="filter4929-9"
-       x="-0.13757156"
-       width="1.2751431"
-       y="-0.37744918"
-       height="1.7548983"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="3.5620748"
-         id="feGaussianBlur4931-98" />
-    </filter>
-    <mask
-       id="mask17064"
-       maskUnits="userSpaceOnUse">
-      <g
-         transform="matrix(2.4682548,0,0,2.4682548,-151.3224,-1556.3662)"
-         style="fill:#ffffff"
-         id="g17066">
-        <g
-           transform="matrix(0.27903303,0,0,0.27903303,-148.50157,940.95641)"
-           style="fill:#ffffff;stroke:#ffffff;display:inline"
-           id="g17068">
-          <g
-             style="fill:#ffffff;stroke:#ffffff"
-             transform="matrix(1.1835826,0,0,1.1835826,-7.5789257,-74.544918)"
-             id="g17070">
-            <g
-               transform="matrix(3.0279299,0,0,3.0279299,456.02712,-2782.985)"
-               style="fill:#ffffff;stroke:#ffffff;display:inline"
-               id="g17072"
-               inkscape:label="Layer 1">
-              <g
-                 id="g17074"
-                 style="fill:#ffffff;stroke:#ffffff;display:inline"
-                 transform="matrix(0.27903303,0,0,0.27903303,-129.51159,939.94639)">
-                <rect
-                   y="363.23068"
-                   x="464.14426"
-                   height="7.1676102"
-                   width="54.014832"
-                   id="rect17076"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-                <g
-                   style="fill:#ffffff;stroke:#ffffff"
-                   id="g17078"
-                   transform="matrix(1.1835826,0,0,1.1835826,-75.612218,-74.709882)">
-                  <rect
-                     ry="2.625"
-                     rx="2.625"
-                     y="365.46738"
-                     x="463.93262"
-                     height="16.625"
-                     width="15"
-                     id="rect17080"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17082"
-                     d="m 463.24874,371.54269 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.39926 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.96909 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17084"
-                     d="m 463.24874,371.6096 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.33235 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.90218 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     inkscape:connector-curvature="0"
-                     id="path17086"
-                     d="m 462.26171,371.52622 20.09375,0"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-                  <g
-                     style="fill:#ffffff;stroke:#ffffff"
-                     mask="url(#mask4917-4-0)"
-                     id="g17088">
-                    <rect
-                       style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.38039374;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;filter:url(#filter4929-9)"
-                       id="rect17090"
-                       width="30.899641"
-                       height="22.649353"
-                       x="860.68469"
-                       y="542.8974"
-                       rx="2.625"
-                       ry="3.7184925"
-                       transform="matrix(1,0,-0.70828043,0.70593118,0,0)" />
-                  </g>
-                  <rect
-                     transform="matrix(1,0,-0.70828042,0.70593119,0,0)"
-                     ry="3.7184927"
-                     rx="2.625"
-                     y="543.43286"
-                     x="860.68469"
-                     height="21.542582"
-                     width="30.23728"
-                     id="rect17092"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.60383272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                </g>
-                <path
-                   sodipodi:nodetypes="ccccccc"
-                   inkscape:connector-curvature="0"
-                   id="path17094"
-                   d="m 492.81474,377.56576 -14.33522,0 0,3.5838 2.02645,0 0,-1.47461 11.8608,0 z"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-              </g>
-            </g>
-          </g>
-        </g>
-        <path
-           sodipodi:nodetypes="ssscccssscccscss"
-           inkscape:connector-curvature="0"
-           id="path17096"
-           d="m 5.7026894,1044.9373 c -0.185041,-0.018 -0.402396,-0.059 -0.576929,-0.1108 -0.270837,-0.079 -0.243851,0.015 -0.243851,-0.8593 0,-0.4579 0.0077,-0.7598 0.01951,-0.7646 0.01072,0 0.0317,0 0.04665,0.013 0.04847,0.037 0.294579,0.1623 0.376062,0.1926 0.186482,0.069 0.46629,0.1032 0.663393,0.083 0.436936,-0.047 0.733026,-0.2945 0.881951,-0.7389 0.120095,-0.3583 0.114052,-0.2194 0.12641,-2.9086 l 0.01137,-2.4738 0.829393,0 0.829395,0 0.0062,2.3061 c 0.0064,2.384 -5.49e-4,2.6629 -0.0777,3.0973 -0.156267,0.8809 -0.598495,1.5436 -1.254122,1.8796 -0.440731,0.2258 -1.0806,0.337 -1.637678,0.2843 z"
-           style="fill:#ffffff;fill-opacity:1;display:inline" />
-      </g>
-    </mask>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask18860">
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline"
-         d="m 462.77563,373.22885 29.11636,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,18.76896 c 0,1.45425 -1.17412,2.52598 -2.625,2.625 l -29.11636,1.98708 c -1.45088,0.099 -2.625,-1.17075 -2.625,-2.625 l 0,-20.75604 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-         id="path18862"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sssssssss" />
-    </mask>
-    <linearGradient
-       id="linearGradient7540-2-3-8">
-      <stop
-         id="stop7542-8-7-5"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.502" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.47623286"
-         id="stop7544-8-2-0" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0"
-         offset="0.5"
-         id="stop7546-1-7-9" />
-      <stop
-         id="stop7548-98-9-2"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7540-6-33-6-3">
-      <stop
-         id="stop7542-4-4-3-3"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.502" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.47623286"
-         id="stop7544-5-3-8-5" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0"
-         offset="0.5"
-         id="stop7546-2-9-1-2" />
-      <stop
-         id="stop7548-9-2-0-9"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6738"
-       id="linearGradient6744"
-       x1="-31.957434"
-       y1="1042.2544"
-       x2="-31.957434"
-       y2="1039.6025"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.4617999,0,0,1.4617999,38.859115,-483.60399)" />
-    <linearGradient
-       id="linearGradient6738">
-      <stop
-         style="stop-color:#5481b6;stop-opacity:1"
-         offset="0"
-         id="stop6740" />
-      <stop
-         id="stop5729"
-         offset="0.5"
-         style="stop-color:#1c65a2;stop-opacity:1" />
-      <stop
-         style="stop-color:#5286ba;stop-opacity:1"
-         offset="1"
-         id="stop6742" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1-3">
-      <stop
-         style="stop-color:#4f9e55;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2-6" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2-7"
-         offset="0.5"
-         style="stop-color:#418a4d;stop-opacity:1" />
-      <stop
-         style="stop-color:#91c168;stop-opacity:1;"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2-5" />
-    </linearGradient>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="44.8"
-     inkscape:cx="5.8773283"
-     inkscape:cy="8.2924192"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1043"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2985"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1036.3622)">
-    <g
-       style="display:inline"
-       id="layer1-3"
-       inkscape:label="Layer 1"
-       transform="translate(1.6252372,17.080298)" />
-    <g
-       transform="translate(11.084313,10.044361)"
-       style="font-style:normal;font-weight:normal;font-size:13.58917427px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-       id="text6430-2" />
-    <ellipse
-       id="path10796-2-6-2"
-       style="font-style:normal;font-weight:normal;font-size:medium;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#923236;fill-opacity:1;stroke:#731418;stroke-width:0.76525658;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       cx="7.0009236"
-       cy="1044.3566"
-       rx="4.5914693"
-       ry="4.5967937" />
-    <g
-       id="text3782-3"
-       style="font-style:normal;font-weight:normal;font-size:15.56941891px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-       transform="matrix(0.94400511,0,0,1.0593163,11.084313,10.044361)" />
-    <path
-       sodipodi:nodetypes="ccscsczzccsscscsccc"
-       inkscape:connector-curvature="0"
-       id="path3817-0"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15.56941891px;line-height:125%;font-family:Arial;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
-       d="m 8.1028729,1043.414 c -0.2134896,-0.2727 -0.1664145,-0.2173 -0.3472908,-0.3632 -0.1772666,-0.1456 -0.4087933,-0.2184 -0.6945809,-0.2184 -0.3798517,0 -0.6837306,0.1267 -0.9116374,0.38 -0.2242938,0.2497 -0.3364394,0.4127 -0.3364373,1.0024 -2.1e-6,0.6556 0.1139519,0.9477 0.341864,1.2182 0.2315241,0.2707 0.5896703,0.4058 0.9279164,0.4058 0.338246,0 0.5216022,-0.099 0.71086,-0.2342 0.1892578,-0.1357 0.208884,-0.1369 0.3907016,-0.4993 l 1.4977005,-0.012 c -0.1555658,0.659 -0.454022,1.0959 -0.8953689,1.4324 -0.4413533,0.3364 -1.0328309,0.5046 -1.7744364,0.5046 -0.8429052,0 -1.5157796,-0.2548 -2.0186253,-0.7648 -0.4992311,-0.5098 -0.7488455,-1.0447 -0.7488455,-1.9466 0,-0.9123 0.2514232,-1.3651 0.7542718,-1.8714 0.5028456,-0.5101 1.1829555,-0.7649 2.0403309,-0.7649 0.701812,0 1.2589234,0.1457 1.6713348,0.437 0.4160216,0.288 0.760537,0.6764 0.9414262,1.2692 z" />
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/constructor.svg b/svg/org.eclipse.languageserver/icons/full/obj16/constructor.svg
deleted file mode 100644
index c1fdb73..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/constructor.svg
+++ /dev/null
@@ -1,485 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="constructor.svg"
-   inkscape:export-filename="/home/wywrzal/git/lsp4e/org.eclipse.lsp4e/icons/full/obj16/constructor.png"
-   inkscape:export-xdpi="96"
-   inkscape:export-ydpi="96">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient4198">
-      <stop
-         id="stop4200"
-         offset="0"
-         style="stop-color:#14733c;stop-opacity:1" />
-      <stop
-         style="stop-color:#14733c;stop-opacity:1"
-         offset="0.5"
-         id="stop4202" />
-      <stop
-         id="stop4204"
-         offset="1"
-         style="stop-color:#14733c;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       y2="459.24786"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3929-5"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1">
-      <stop
-         style="stop-color:#a17748;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2"
-         offset="0.5"
-         style="stop-color:#8e5c24;stop-opacity:1" />
-      <stop
-         style="stop-color:#c7af93;stop-opacity:1"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2" />
-    </linearGradient>
-    <mask
-       id="mask17098"
-       maskUnits="userSpaceOnUse">
-      <g
-         transform="translate(-0.696415,-25.515546)"
-         style="fill:#ffffff"
-         id="g17100">
-        <g
-           transform="matrix(0.27903303,0,0,0.27903303,-148.50157,940.95641)"
-           style="fill:#ffffff;stroke:#ffffff;display:inline"
-           id="g17102">
-          <g
-             style="fill:#ffffff;stroke:#ffffff"
-             transform="matrix(1.1835826,0,0,1.1835826,-7.5789257,-74.544918)"
-             id="g17104">
-            <g
-               transform="matrix(3.0279299,0,0,3.0279299,456.02712,-2782.985)"
-               style="fill:#ffffff;stroke:#ffffff;display:inline"
-               id="g17106"
-               inkscape:label="Layer 1">
-              <g
-                 id="g17108"
-                 style="fill:#ffffff;stroke:#ffffff;display:inline"
-                 transform="matrix(0.27903303,0,0,0.27903303,-129.51159,939.94639)">
-                <rect
-                   y="363.23068"
-                   x="464.14426"
-                   height="7.1676102"
-                   width="54.014832"
-                   id="rect17110"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-                <g
-                   style="fill:#ffffff;stroke:#ffffff"
-                   id="g17112"
-                   transform="matrix(1.1835826,0,0,1.1835826,-75.612218,-74.709882)">
-                  <rect
-                     ry="2.625"
-                     rx="2.625"
-                     y="365.46738"
-                     x="463.93262"
-                     height="16.625"
-                     width="15"
-                     id="rect17114"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17116"
-                     d="m 463.24874,371.54269 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.39926 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.96909 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17118"
-                     d="m 463.24874,371.6096 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.33235 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.90218 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     inkscape:connector-curvature="0"
-                     id="path17120"
-                     d="m 462.26171,371.52622 20.09375,0"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-                  <g
-                     style="fill:#ffffff;stroke:#ffffff"
-                     mask="url(#mask4917-4-0)"
-                     id="g17122">
-                    <rect
-                       style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.38039374;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;filter:url(#filter4929-9)"
-                       id="rect17124"
-                       width="30.899641"
-                       height="22.649353"
-                       x="860.68469"
-                       y="542.8974"
-                       rx="2.625"
-                       ry="3.7184925"
-                       transform="matrix(1,0,-0.70828043,0.70593118,0,0)" />
-                  </g>
-                  <rect
-                     transform="matrix(1,0,-0.70828042,0.70593119,0,0)"
-                     ry="3.7184927"
-                     rx="2.625"
-                     y="543.43286"
-                     x="860.68469"
-                     height="21.542582"
-                     width="30.23728"
-                     id="rect17126"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.60383272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                </g>
-                <path
-                   sodipodi:nodetypes="ccccccc"
-                   inkscape:connector-curvature="0"
-                   id="path17128"
-                   d="m 492.81474,377.56576 -14.33522,0 0,3.5838 2.02645,0 0,-1.47461 11.8608,0 z"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-              </g>
-            </g>
-          </g>
-        </g>
-        <path
-           sodipodi:nodetypes="ssscccssscccscss"
-           inkscape:connector-curvature="0"
-           id="path17130"
-           d="m 5.7026894,1044.9373 c -0.185041,-0.018 -0.402396,-0.059 -0.576929,-0.1108 -0.270837,-0.079 -0.243851,0.015 -0.243851,-0.8593 0,-0.4579 0.0077,-0.7598 0.01951,-0.7646 0.01072,0 0.0317,0 0.04665,0.013 0.04847,0.037 0.294579,0.1623 0.376062,0.1926 0.186482,0.069 0.46629,0.1032 0.663393,0.083 0.436936,-0.047 0.733026,-0.2945 0.881951,-0.7389 0.120095,-0.3583 0.114052,-0.2194 0.12641,-2.9086 l 0.01137,-2.4738 0.829393,0 0.829395,0 0.0062,2.3061 c 0.0064,2.384 -5.49e-4,2.6629 -0.0777,3.0973 -0.156267,0.8809 -0.598495,1.5436 -1.254122,1.8796 -0.440731,0.2258 -1.0806,0.337 -1.637678,0.2843 z"
-           style="fill:#ffffff;fill-opacity:1;display:inline" />
-      </g>
-    </mask>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask4917-4-0">
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline"
-         d="m 462.77563,373.22885 29.11636,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,18.76896 c 0,1.45425 -1.17412,2.52598 -2.625,2.625 l -29.11636,1.98708 c -1.45088,0.099 -2.625,-1.17075 -2.625,-2.625 l 0,-20.75604 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-         id="path4919-6-6"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sssssssss" />
-    </mask>
-    <filter
-       inkscape:collect="always"
-       id="filter4929-9"
-       x="-0.13757156"
-       width="1.2751431"
-       y="-0.37744918"
-       height="1.7548983"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="3.5620748"
-         id="feGaussianBlur4931-98" />
-    </filter>
-    <mask
-       id="mask17064"
-       maskUnits="userSpaceOnUse">
-      <g
-         transform="matrix(2.4682548,0,0,2.4682548,-151.3224,-1556.3662)"
-         style="fill:#ffffff"
-         id="g17066">
-        <g
-           transform="matrix(0.27903303,0,0,0.27903303,-148.50157,940.95641)"
-           style="fill:#ffffff;stroke:#ffffff;display:inline"
-           id="g17068">
-          <g
-             style="fill:#ffffff;stroke:#ffffff"
-             transform="matrix(1.1835826,0,0,1.1835826,-7.5789257,-74.544918)"
-             id="g17070">
-            <g
-               transform="matrix(3.0279299,0,0,3.0279299,456.02712,-2782.985)"
-               style="fill:#ffffff;stroke:#ffffff;display:inline"
-               id="g17072"
-               inkscape:label="Layer 1">
-              <g
-                 id="g17074"
-                 style="fill:#ffffff;stroke:#ffffff;display:inline"
-                 transform="matrix(0.27903303,0,0,0.27903303,-129.51159,939.94639)">
-                <rect
-                   y="363.23068"
-                   x="464.14426"
-                   height="7.1676102"
-                   width="54.014832"
-                   id="rect17076"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-                <g
-                   style="fill:#ffffff;stroke:#ffffff"
-                   id="g17078"
-                   transform="matrix(1.1835826,0,0,1.1835826,-75.612218,-74.709882)">
-                  <rect
-                     ry="2.625"
-                     rx="2.625"
-                     y="365.46738"
-                     x="463.93262"
-                     height="16.625"
-                     width="15"
-                     id="rect17080"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17082"
-                     d="m 463.24874,371.54269 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.39926 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.96909 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17084"
-                     d="m 463.24874,371.6096 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.33235 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.90218 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     inkscape:connector-curvature="0"
-                     id="path17086"
-                     d="m 462.26171,371.52622 20.09375,0"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-                  <g
-                     style="fill:#ffffff;stroke:#ffffff"
-                     mask="url(#mask4917-4-0)"
-                     id="g17088">
-                    <rect
-                       style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.38039374;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;filter:url(#filter4929-9)"
-                       id="rect17090"
-                       width="30.899641"
-                       height="22.649353"
-                       x="860.68469"
-                       y="542.8974"
-                       rx="2.625"
-                       ry="3.7184925"
-                       transform="matrix(1,0,-0.70828043,0.70593118,0,0)" />
-                  </g>
-                  <rect
-                     transform="matrix(1,0,-0.70828042,0.70593119,0,0)"
-                     ry="3.7184927"
-                     rx="2.625"
-                     y="543.43286"
-                     x="860.68469"
-                     height="21.542582"
-                     width="30.23728"
-                     id="rect17092"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.60383272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                </g>
-                <path
-                   sodipodi:nodetypes="ccccccc"
-                   inkscape:connector-curvature="0"
-                   id="path17094"
-                   d="m 492.81474,377.56576 -14.33522,0 0,3.5838 2.02645,0 0,-1.47461 11.8608,0 z"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-              </g>
-            </g>
-          </g>
-        </g>
-        <path
-           sodipodi:nodetypes="ssscccssscccscss"
-           inkscape:connector-curvature="0"
-           id="path17096"
-           d="m 5.7026894,1044.9373 c -0.185041,-0.018 -0.402396,-0.059 -0.576929,-0.1108 -0.270837,-0.079 -0.243851,0.015 -0.243851,-0.8593 0,-0.4579 0.0077,-0.7598 0.01951,-0.7646 0.01072,0 0.0317,0 0.04665,0.013 0.04847,0.037 0.294579,0.1623 0.376062,0.1926 0.186482,0.069 0.46629,0.1032 0.663393,0.083 0.436936,-0.047 0.733026,-0.2945 0.881951,-0.7389 0.120095,-0.3583 0.114052,-0.2194 0.12641,-2.9086 l 0.01137,-2.4738 0.829393,0 0.829395,0 0.0062,2.3061 c 0.0064,2.384 -5.49e-4,2.6629 -0.0777,3.0973 -0.156267,0.8809 -0.598495,1.5436 -1.254122,1.8796 -0.440731,0.2258 -1.0806,0.337 -1.637678,0.2843 z"
-           style="fill:#ffffff;fill-opacity:1;display:inline" />
-      </g>
-    </mask>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask18860">
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline"
-         d="m 462.77563,373.22885 29.11636,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,18.76896 c 0,1.45425 -1.17412,2.52598 -2.625,2.625 l -29.11636,1.98708 c -1.45088,0.099 -2.625,-1.17075 -2.625,-2.625 l 0,-20.75604 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-         id="path18862"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sssssssss" />
-    </mask>
-    <linearGradient
-       id="linearGradient7540-2-3-8">
-      <stop
-         id="stop7542-8-7-5"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.502" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.47623286"
-         id="stop7544-8-2-0" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0"
-         offset="0.5"
-         id="stop7546-1-7-9" />
-      <stop
-         id="stop7548-98-9-2"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7540-6-33-6-3">
-      <stop
-         id="stop7542-4-4-3-3"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.502" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.47623286"
-         id="stop7544-5-3-8-5" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0"
-         offset="0.5"
-         id="stop7546-2-9-1-2" />
-      <stop
-         id="stop7548-9-2-0-9"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6738"
-       id="linearGradient6744"
-       x1="-31.957434"
-       y1="1042.2544"
-       x2="-31.957434"
-       y2="1039.6025"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.4617999,0,0,1.4617999,38.859115,-483.60399)" />
-    <linearGradient
-       id="linearGradient6738">
-      <stop
-         style="stop-color:#5481b6;stop-opacity:1"
-         offset="0"
-         id="stop6740" />
-      <stop
-         id="stop5729"
-         offset="0.5"
-         style="stop-color:#1c65a2;stop-opacity:1" />
-      <stop
-         style="stop-color:#5286ba;stop-opacity:1"
-         offset="1"
-         id="stop6742" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1-3">
-      <stop
-         style="stop-color:#4f9e55;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2-6" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2-7"
-         offset="0.5"
-         style="stop-color:#418a4d;stop-opacity:1" />
-      <stop
-         style="stop-color:#91c168;stop-opacity:1;"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2-5" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient28456">
-      <stop
-         style="stop-color:#17325d;stop-opacity:1;"
-         offset="0"
-         id="stop28458" />
-      <stop
-         style="stop-color:#9daeca;stop-opacity:1;"
-         offset="1"
-         id="stop28460" />
-    </linearGradient>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.4"
-     inkscape:cx="8.7915893"
-     inkscape:cy="7.5218372"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1366"
-     inkscape:window-height="707"
-     inkscape:window-x="0"
-     inkscape:window-y="24"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2985"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1036.3622)">
-    <g
-       style="display:inline"
-       id="layer1-3"
-       inkscape:label="Layer 1"
-       transform="translate(1.6252372,17.080298)" />
-    <g
-       transform="translate(11.084313,10.044361)"
-       style="font-style:normal;font-weight:normal;font-size:13.58917427px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-       id="text6430-2" />
-    <ellipse
-       id="path10796-2-6-2"
-       style="font-style:normal;font-weight:normal;font-size:medium;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#7f7b49;fill-opacity:1;stroke:#615e32;stroke-width:0.76525658;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       cx="7.0009236"
-       cy="1044.3566"
-       rx="4.5914693"
-       ry="4.5967937" />
-    <g
-       id="text3782-3"
-       style="font-style:normal;font-weight:normal;font-size:15.56941891px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-       transform="matrix(0.94400511,0,0,1.0593163,11.084313,10.044361)" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="4.8992257"
-       y="938.64496"
-       id="text4207"
-       transform="scale(0.89670232,1.1151973)"><tspan
-         sodipodi:role="line"
-         id="tspan4209"
-         x="4.8992257"
-         y="938.64496"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.14256096px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ffffff;fill-opacity:1">M</tspan></text>
-    <rect
-       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#615e32;stroke-width:0.89608824;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-       id="rect28446"
-       width="5.302156"
-       height="5.4357443"
-       x="10"
-       y="1046.3622" />
-    <path
-       style="display:inline;fill:#615e32;fill-opacity:1;stroke:none;stroke-width:0.89608824"
-       d="m 15.689928,1051.7198 -0.606575,0.6424 -2.787225,-2.8617 -0.985903,0.9568 -0.0033,-2.7415 h 2.639894 l -0.955773,1.1363 z"
-       id="path3986"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccccccc" />
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/enum.svg b/svg/org.eclipse.languageserver/icons/full/obj16/enum.svg
deleted file mode 100644
index fa482f0..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/enum.svg
+++ /dev/null
@@ -1,184 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="enum_obj.svg">
-  <defs
-     id="defs4">
-    <filter
-       color-interpolation-filters="sRGB"
-       inkscape:collect="always"
-       id="filter8104">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="0.15625"
-         id="feGaussianBlur8106" />
-    </filter>
-    <linearGradient
-       y2="459.24786"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3929-5"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1">
-      <stop
-         style="stop-color:#a17748;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2"
-         offset="0.5"
-         style="stop-color:#8e5c24;stop-opacity:1" />
-      <stop
-         style="stop-color:#c7af93;stop-opacity:1"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2" />
-    </linearGradient>
-    <linearGradient
-       y2="459.24786"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient7302"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       inkscape:collect="always" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.4"
-     inkscape:cx="1.0793039"
-     inkscape:cy="7.2555176"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1107"
-     inkscape:window-height="899"
-     inkscape:window-x="1349"
-     inkscape:window-y="355"
-     inkscape:window-maximized="0">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2985"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1036.3622)">
-    <path
-       sodipodi:type="arc"
-       style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient7302);fill-opacity:1;stroke:#905e27;stroke-width:2.16621375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;font-family:Sans"
-       id="path10796-2-6-2"
-       sodipodi:cx="388.125"
-       sodipodi:cy="468.23718"
-       sodipodi:rx="10.625"
-       sodipodi:ry="10.625"
-       d="m 398.75,468.23718 a 10.625,10.625 0 1 1 -21.25,0 10.625,10.625 0 1 1 21.25,0 z"
-       transform="matrix(0.55482947,0,0,0.55482947,-207.83019,783.0574)" />
-    <g
-       style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
-       id="g8046"
-       transform="translate(-4.8704053,8.014093)">
-      <rect
-         y="1031.3481"
-         x="9.87041"
-         height="7"
-         width="2"
-         id="rect7222"
-         style="fill:#ffffff;fill-opacity:1;stroke:none" />
-      <rect
-         y="1031.3481"
-         x="9.87041"
-         height="1.03125"
-         width="5.46875"
-         id="rect7222-7"
-         style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans" />
-      <rect
-         y="1037.3481"
-         x="9.87041"
-         height="1.03125"
-         width="5.46875"
-         id="rect7222-7-2"
-         style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans" />
-      <rect
-         y="1034.3481"
-         x="9.87041"
-         height="1.03125"
-         width="4.96875"
-         id="rect7222-7-2-5"
-         style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans" />
-    </g>
-    <g
-       style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;filter:url(#filter8104);font-family:Sans"
-       id="g8046-4"
-       transform="translate(-4.7454053,8.139093)">
-      <rect
-         y="1031.3481"
-         x="9.87041"
-         height="7"
-         width="2"
-         id="rect7222-4"
-         style="fill:#ffffff;fill-opacity:1;stroke:none" />
-      <rect
-         y="1031.3481"
-         x="9.87041"
-         height="1.03125"
-         width="5.46875"
-         id="rect7222-7-3"
-         style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans" />
-      <rect
-         y="1037.3481"
-         x="9.87041"
-         height="1.03125"
-         width="5.46875"
-         id="rect7222-7-2-3"
-         style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans" />
-      <rect
-         y="1034.3481"
-         x="9.87041"
-         height="1.03125"
-         width="4.96875"
-         id="rect7222-7-2-5-4"
-         style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans" />
-    </g>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/field.svg b/svg/org.eclipse.languageserver/icons/full/obj16/field.svg
deleted file mode 100644
index a33e366..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/field.svg
+++ /dev/null
@@ -1,437 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="field.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient4198">
-      <stop
-         id="stop4200"
-         offset="0"
-         style="stop-color:#14733c;stop-opacity:1" />
-      <stop
-         style="stop-color:#14733c;stop-opacity:1"
-         offset="0.5"
-         id="stop4202" />
-      <stop
-         id="stop4204"
-         offset="1"
-         style="stop-color:#14733c;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       y2="459.24786"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3929-5"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1">
-      <stop
-         style="stop-color:#a17748;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2"
-         offset="0.5"
-         style="stop-color:#8e5c24;stop-opacity:1" />
-      <stop
-         style="stop-color:#c7af93;stop-opacity:1"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2" />
-    </linearGradient>
-    <mask
-       id="mask17098"
-       maskUnits="userSpaceOnUse">
-      <g
-         transform="translate(-0.696415,-25.515546)"
-         style="fill:#ffffff"
-         id="g17100">
-        <g
-           transform="matrix(0.27903303,0,0,0.27903303,-148.50157,940.95641)"
-           style="fill:#ffffff;stroke:#ffffff;display:inline"
-           id="g17102">
-          <g
-             style="fill:#ffffff;stroke:#ffffff"
-             transform="matrix(1.1835826,0,0,1.1835826,-7.5789257,-74.544918)"
-             id="g17104">
-            <g
-               transform="matrix(3.0279299,0,0,3.0279299,456.02712,-2782.985)"
-               style="fill:#ffffff;stroke:#ffffff;display:inline"
-               id="g17106"
-               inkscape:label="Layer 1">
-              <g
-                 id="g17108"
-                 style="fill:#ffffff;stroke:#ffffff;display:inline"
-                 transform="matrix(0.27903303,0,0,0.27903303,-129.51159,939.94639)">
-                <rect
-                   y="363.23068"
-                   x="464.14426"
-                   height="7.1676102"
-                   width="54.014832"
-                   id="rect17110"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-                <g
-                   style="fill:#ffffff;stroke:#ffffff"
-                   id="g17112"
-                   transform="matrix(1.1835826,0,0,1.1835826,-75.612218,-74.709882)">
-                  <rect
-                     ry="2.625"
-                     rx="2.625"
-                     y="365.46738"
-                     x="463.93262"
-                     height="16.625"
-                     width="15"
-                     id="rect17114"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17116"
-                     d="m 463.24874,371.54269 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.39926 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.96909 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17118"
-                     d="m 463.24874,371.6096 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.33235 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.90218 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     inkscape:connector-curvature="0"
-                     id="path17120"
-                     d="m 462.26171,371.52622 20.09375,0"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-                  <g
-                     style="fill:#ffffff;stroke:#ffffff"
-                     mask="url(#mask4917-4-0)"
-                     id="g17122">
-                    <rect
-                       style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.38039374;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;filter:url(#filter4929-9)"
-                       id="rect17124"
-                       width="30.899641"
-                       height="22.649353"
-                       x="860.68469"
-                       y="542.8974"
-                       rx="2.625"
-                       ry="3.7184925"
-                       transform="matrix(1,0,-0.70828043,0.70593118,0,0)" />
-                  </g>
-                  <rect
-                     transform="matrix(1,0,-0.70828042,0.70593119,0,0)"
-                     ry="3.7184927"
-                     rx="2.625"
-                     y="543.43286"
-                     x="860.68469"
-                     height="21.542582"
-                     width="30.23728"
-                     id="rect17126"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.60383272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                </g>
-                <path
-                   sodipodi:nodetypes="ccccccc"
-                   inkscape:connector-curvature="0"
-                   id="path17128"
-                   d="m 492.81474,377.56576 -14.33522,0 0,3.5838 2.02645,0 0,-1.47461 11.8608,0 z"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-              </g>
-            </g>
-          </g>
-        </g>
-        <path
-           sodipodi:nodetypes="ssscccssscccscss"
-           inkscape:connector-curvature="0"
-           id="path17130"
-           d="m 5.7026894,1044.9373 c -0.185041,-0.018 -0.402396,-0.059 -0.576929,-0.1108 -0.270837,-0.079 -0.243851,0.015 -0.243851,-0.8593 0,-0.4579 0.0077,-0.7598 0.01951,-0.7646 0.01072,0 0.0317,0 0.04665,0.013 0.04847,0.037 0.294579,0.1623 0.376062,0.1926 0.186482,0.069 0.46629,0.1032 0.663393,0.083 0.436936,-0.047 0.733026,-0.2945 0.881951,-0.7389 0.120095,-0.3583 0.114052,-0.2194 0.12641,-2.9086 l 0.01137,-2.4738 0.829393,0 0.829395,0 0.0062,2.3061 c 0.0064,2.384 -5.49e-4,2.6629 -0.0777,3.0973 -0.156267,0.8809 -0.598495,1.5436 -1.254122,1.8796 -0.440731,0.2258 -1.0806,0.337 -1.637678,0.2843 z"
-           style="fill:#ffffff;fill-opacity:1;display:inline" />
-      </g>
-    </mask>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask4917-4-0">
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline"
-         d="m 462.77563,373.22885 29.11636,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,18.76896 c 0,1.45425 -1.17412,2.52598 -2.625,2.625 l -29.11636,1.98708 c -1.45088,0.099 -2.625,-1.17075 -2.625,-2.625 l 0,-20.75604 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-         id="path4919-6-6"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sssssssss" />
-    </mask>
-    <filter
-       inkscape:collect="always"
-       id="filter4929-9"
-       x="-0.13757156"
-       width="1.2751431"
-       y="-0.37744918"
-       height="1.7548983"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="3.5620748"
-         id="feGaussianBlur4931-98" />
-    </filter>
-    <mask
-       id="mask17064"
-       maskUnits="userSpaceOnUse">
-      <g
-         transform="matrix(2.4682548,0,0,2.4682548,-151.3224,-1556.3662)"
-         style="fill:#ffffff"
-         id="g17066">
-        <g
-           transform="matrix(0.27903303,0,0,0.27903303,-148.50157,940.95641)"
-           style="fill:#ffffff;stroke:#ffffff;display:inline"
-           id="g17068">
-          <g
-             style="fill:#ffffff;stroke:#ffffff"
-             transform="matrix(1.1835826,0,0,1.1835826,-7.5789257,-74.544918)"
-             id="g17070">
-            <g
-               transform="matrix(3.0279299,0,0,3.0279299,456.02712,-2782.985)"
-               style="fill:#ffffff;stroke:#ffffff;display:inline"
-               id="g17072"
-               inkscape:label="Layer 1">
-              <g
-                 id="g17074"
-                 style="fill:#ffffff;stroke:#ffffff;display:inline"
-                 transform="matrix(0.27903303,0,0,0.27903303,-129.51159,939.94639)">
-                <rect
-                   y="363.23068"
-                   x="464.14426"
-                   height="7.1676102"
-                   width="54.014832"
-                   id="rect17076"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-                <g
-                   style="fill:#ffffff;stroke:#ffffff"
-                   id="g17078"
-                   transform="matrix(1.1835826,0,0,1.1835826,-75.612218,-74.709882)">
-                  <rect
-                     ry="2.625"
-                     rx="2.625"
-                     y="365.46738"
-                     x="463.93262"
-                     height="16.625"
-                     width="15"
-                     id="rect17080"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17082"
-                     d="m 463.24874,371.54269 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.39926 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.96909 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17084"
-                     d="m 463.24874,371.6096 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.33235 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.90218 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     inkscape:connector-curvature="0"
-                     id="path17086"
-                     d="m 462.26171,371.52622 20.09375,0"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-                  <g
-                     style="fill:#ffffff;stroke:#ffffff"
-                     mask="url(#mask4917-4-0)"
-                     id="g17088">
-                    <rect
-                       style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.38039374;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;filter:url(#filter4929-9)"
-                       id="rect17090"
-                       width="30.899641"
-                       height="22.649353"
-                       x="860.68469"
-                       y="542.8974"
-                       rx="2.625"
-                       ry="3.7184925"
-                       transform="matrix(1,0,-0.70828043,0.70593118,0,0)" />
-                  </g>
-                  <rect
-                     transform="matrix(1,0,-0.70828042,0.70593119,0,0)"
-                     ry="3.7184927"
-                     rx="2.625"
-                     y="543.43286"
-                     x="860.68469"
-                     height="21.542582"
-                     width="30.23728"
-                     id="rect17092"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.60383272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                </g>
-                <path
-                   sodipodi:nodetypes="ccccccc"
-                   inkscape:connector-curvature="0"
-                   id="path17094"
-                   d="m 492.81474,377.56576 -14.33522,0 0,3.5838 2.02645,0 0,-1.47461 11.8608,0 z"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-              </g>
-            </g>
-          </g>
-        </g>
-        <path
-           sodipodi:nodetypes="ssscccssscccscss"
-           inkscape:connector-curvature="0"
-           id="path17096"
-           d="m 5.7026894,1044.9373 c -0.185041,-0.018 -0.402396,-0.059 -0.576929,-0.1108 -0.270837,-0.079 -0.243851,0.015 -0.243851,-0.8593 0,-0.4579 0.0077,-0.7598 0.01951,-0.7646 0.01072,0 0.0317,0 0.04665,0.013 0.04847,0.037 0.294579,0.1623 0.376062,0.1926 0.186482,0.069 0.46629,0.1032 0.663393,0.083 0.436936,-0.047 0.733026,-0.2945 0.881951,-0.7389 0.120095,-0.3583 0.114052,-0.2194 0.12641,-2.9086 l 0.01137,-2.4738 0.829393,0 0.829395,0 0.0062,2.3061 c 0.0064,2.384 -5.49e-4,2.6629 -0.0777,3.0973 -0.156267,0.8809 -0.598495,1.5436 -1.254122,1.8796 -0.440731,0.2258 -1.0806,0.337 -1.637678,0.2843 z"
-           style="fill:#ffffff;fill-opacity:1;display:inline" />
-      </g>
-    </mask>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask18860">
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline"
-         d="m 462.77563,373.22885 29.11636,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,18.76896 c 0,1.45425 -1.17412,2.52598 -2.625,2.625 l -29.11636,1.98708 c -1.45088,0.099 -2.625,-1.17075 -2.625,-2.625 l 0,-20.75604 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-         id="path18862"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sssssssss" />
-    </mask>
-    <linearGradient
-       id="linearGradient7540-2-3-8">
-      <stop
-         id="stop7542-8-7-5"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.502" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.47623286"
-         id="stop7544-8-2-0" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0"
-         offset="0.5"
-         id="stop7546-1-7-9" />
-      <stop
-         id="stop7548-98-9-2"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7540-6-33-6-3">
-      <stop
-         id="stop7542-4-4-3-3"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.502" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.47623286"
-         id="stop7544-5-3-8-5" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0"
-         offset="0.5"
-         id="stop7546-2-9-1-2" />
-      <stop
-         id="stop7548-9-2-0-9"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6738"
-       id="linearGradient6744"
-       x1="-31.957434"
-       y1="1042.2544"
-       x2="-31.957434"
-       y2="1039.6025"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.4617999,0,0,1.4617999,38.859115,-483.60399)" />
-    <linearGradient
-       id="linearGradient6738">
-      <stop
-         style="stop-color:#5481b6;stop-opacity:1"
-         offset="0"
-         id="stop6740" />
-      <stop
-         id="stop5729"
-         offset="0.5"
-         style="stop-color:#1c65a2;stop-opacity:1" />
-      <stop
-         style="stop-color:#5286ba;stop-opacity:1"
-         offset="1"
-         id="stop6742" />
-    </linearGradient>
-    <linearGradient
-       y2="1039.6025"
-       x2="-31.957434"
-       y1="1042.2544"
-       x1="-31.957434"
-       gradientTransform="matrix(1.1876056,0,0,1.1876056,46.681185,-191.60474)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient4964"
-       xlink:href="#linearGradient4198"
-       inkscape:collect="always" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="44.8"
-     inkscape:cx="5.0762858"
-     inkscape:cy="5.8085639"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1107"
-     inkscape:window-height="899"
-     inkscape:window-x="813"
-     inkscape:window-y="144"
-     inkscape:window-maximized="0">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2985"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1036.3622)">
-    <g
-       style="display:inline"
-       id="layer1-3"
-       inkscape:label="Layer 1"
-       transform="translate(1.6252372,17.080298)" />
-    <path
-       style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient4964);fill-opacity:1.0;stroke:#14733c;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;font-family:Sans"
-       d="m 11.609555,1046.917 -6.1713054,0 3.0856518,-5.143 z"
-       id="path6736"
-       inkscape:connector-curvature="0" />
-    <path
-       sodipodi:nodetypes="czczczczc"
-       inkscape:connector-curvature="0"
-       id="rect6501-1-6-1"
-       d="m 8.5107074,1043.0116 c 0,0 0.1917576,0.6999 0.6766707,1.1849 0.4849113,0.4848 1.1847919,0.6765 1.1847919,0.6765 0,0 -0.6959103,0.1879 -1.1847903,0.6767 -0.4888799,0.4889 -0.6766706,1.1847 -0.6766706,1.1847 0,0 -0.1719097,-0.6798 -0.6766707,-1.1847 -0.504761,-0.5048 -1.1847934,-0.6767 -1.1847934,-0.6767 0,0 0.7117911,-0.2037 1.1847934,-0.6765 0.4730006,-0.4732 0.676669,-1.1849 0.676669,-1.1849 z"
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;display:inline" />
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/function.svg b/svg/org.eclipse.languageserver/icons/full/obj16/function.svg
deleted file mode 100644
index b1a9301..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/function.svg
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="function.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient6738">
-      <stop
-         style="stop-color:#5481b6;stop-opacity:1"
-         offset="0"
-         id="stop6740" />
-      <stop
-         id="stop5729"
-         offset="0.5"
-         style="stop-color:#1c65a2;stop-opacity:1" />
-      <stop
-         style="stop-color:#5286ba;stop-opacity:1"
-         offset="1"
-         id="stop6742" />
-    </linearGradient>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="32"
-     inkscape:cx="1.39793"
-     inkscape:cy="9.1345142"
-     inkscape:document-units="px"
-     inkscape:current-layer="g6438"
-     showgrid="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1043"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3960" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <g
-       transform="matrix(0.27903303,0,0,0.27903303,-100.53208,912.07901)"
-       style="display:inline"
-       id="g11331-3-1-1">
-      <g
-         id="g13408-8"
-         style="fill:#737986;fill-opacity:1;stroke:#595e68;stroke-opacity:1" />
-    </g>
-    <g
-       transform="matrix(-1,0,0,1,16.12959,8.0140628)"
-       style="display:inline"
-       id="g6124-3">
-      <g
-         transform="scale(-1,1)"
-         style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         id="text6430" />
-      <g
-         transform="scale(-1,1)"
-         style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
-         id="g6438">
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-weight:normal;font-size:10.21863174px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#246196;fill-opacity:1;stroke:#246196;stroke-width:0.13718553;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1"
-           x="-8.6484728"
-           y="993.0683"
-           id="text4149"
-           sodipodi:linespacing="125%"
-           transform="scale(0.95278565,1.049554)"><tspan
-             sodipodi:role="line"
-             id="tspan4151"
-             x="-8.6484728"
-             y="993.0683"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#246196;fill-opacity:1;stroke:#246196;stroke-width:0.13718553;stroke-opacity:1">x</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-weight:normal;font-size:4.82530689px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#246196;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           x="-14.597612"
-           y="1030.1418"
-           id="text4147"
-           sodipodi:linespacing="125%"
-           transform="scale(0.98828965,1.0118491)"><tspan
-             sodipodi:role="line"
-             id="tspan4149"
-             x="-14.597612"
-             y="1030.1418"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:16.8885746px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">f</tspan></text>
-      </g>
-    </g>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/interface.svg b/svg/org.eclipse.languageserver/icons/full/obj16/interface.svg
deleted file mode 100644
index f9e84b0..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/interface.svg
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="int_obj.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       y2="462.11539"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3929-5"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1">
-      <stop
-         style="stop-color:#7564b1;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2"
-         offset="0.5"
-         style="stop-color:#5d4aa1;stop-opacity:1" />
-      <stop
-         style="stop-color:#9283c3;stop-opacity:1"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2" />
-    </linearGradient>
-    <filter
-       color-interpolation-filters="sRGB"
-       inkscape:collect="always"
-       id="filter8047">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="0.13789128"
-         id="feGaussianBlur8049" />
-    </filter>
-    <linearGradient
-       y2="462.11539"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient7188"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       inkscape:collect="always" />
-    <linearGradient
-       y2="462.11539"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3046"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1-9"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1-9">
-      <stop
-         style="stop-color:#7564b1;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2-1" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2-7"
-         offset="0.5"
-         style="stop-color:#5d4aa1;stop-opacity:1" />
-      <stop
-         style="stop-color:#9283c3;stop-opacity:1"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2-3" />
-    </linearGradient>
-    <linearGradient
-       y2="462.11539"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3016"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1-9"
-       inkscape:collect="always" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313708"
-     inkscape:cx="8.9148766"
-     inkscape:cy="12.16319"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="925"
-     inkscape:window-height="1055"
-     inkscape:window-x="414"
-     inkscape:window-y="438"
-     inkscape:window-maximized="0">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2985"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1036.3622)">
-    <path
-       sodipodi:type="arc"
-       style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3016);fill-opacity:1;stroke:#55429f;stroke-width:2.16621375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;font-family:Sans"
-       id="path10796-2-6-2"
-       sodipodi:cx="388.125"
-       sodipodi:cy="468.23718"
-       sodipodi:rx="10.625"
-       sodipodi:ry="10.625"
-       d="m 398.75,468.23718 a 10.625,10.625 0 1 1 -21.25,0 10.625,10.625 0 1 1 21.25,0 z"
-       transform="matrix(0.55482947,0,0,0.55482947,-207.83019,783.15705)" />
-    <path
-       style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
-       d="m 5.0513836,1039.3735 0,1.0313 0.8880662,0 0,4.9687 -0.9322604,0 0,1.0313 4.789695,0 0,-1.0313 -1.2858115,0 0,-4.9687 1.2858115,0 0,-1.0313 z"
-       id="rect7222"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccccccccccccc" />
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/keyword.svg b/svg/org.eclipse.languageserver/icons/full/obj16/keyword.svg
deleted file mode 100644
index bf8edab..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/keyword.svg
+++ /dev/null
@@ -1,554 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg4223"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="compare_method.svg">
-  <defs
-     id="defs4225">
-    <linearGradient
-       id="linearGradient3895">
-      <stop
-         style="stop-color:#a8a8a7;stop-opacity:1"
-         offset="0"
-         id="stop3897" />
-      <stop
-         id="stop3861"
-         offset="0.45270789"
-         style="stop-color:#939392;stop-opacity:1" />
-      <stop
-         style="stop-color:#cbcbcb;stop-opacity:1"
-         offset="1"
-         id="stop3899" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3887">
-      <stop
-         style="stop-color:#838893;stop-opacity:1"
-         offset="0"
-         id="stop3889" />
-      <stop
-         id="stop3863"
-         offset="0.5"
-         style="stop-color:#6f7684;stop-opacity:1" />
-      <stop
-         style="stop-color:#9a9b9c;stop-opacity:1"
-         offset="1"
-         id="stop3891" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3837">
-      <stop
-         style="stop-color:#6f8db9;stop-opacity:1;"
-         offset="0"
-         id="stop3839" />
-      <stop
-         style="stop-color:#1b639e;stop-opacity:1"
-         offset="1"
-         id="stop3841" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3829">
-      <stop
-         style="stop-color:#8297bc;stop-opacity:1"
-         offset="0"
-         id="stop3831" />
-      <stop
-         style="stop-color:#6c81ad;stop-opacity:1"
-         offset="1"
-         id="stop3833" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3047"
-       inkscape:collect="always">
-      <stop
-         id="stop3049"
-         offset="0"
-         style="stop-color:#146d39;stop-opacity:1" />
-      <stop
-         id="stop3051"
-         offset="1"
-         style="stop-color:#359b58;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient23102">
-      <stop
-         style="stop-color:#c9473e;stop-opacity:1"
-         offset="0"
-         id="stop23104" />
-      <stop
-         id="stop23118"
-         offset="0.25388375"
-         style="stop-color:#f35863;stop-opacity:1" />
-      <stop
-         style="stop-color:#f6928e;stop-opacity:1"
-         offset="1"
-         id="stop23106" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5103-3-7"
-       id="linearGradient9563"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(19.911612,-20)"
-       x1="12.339488"
-       y1="1043.0511"
-       x2="12.339488"
-       y2="1048.0511" />
-    <linearGradient
-       id="linearGradient5103-3-7">
-      <stop
-         style="stop-color:#96b956;stop-opacity:1"
-         offset="0"
-         id="stop5105-5-4" />
-      <stop
-         id="stop7550-07-0"
-         offset="0.26694915"
-         style="stop-color:#c6d560;stop-opacity:1" />
-      <stop
-         id="stop7548-6-9"
-         offset="0.51694918"
-         style="stop-color:#cfdc63;stop-opacity:1" />
-      <stop
-         style="stop-color:#abca52;stop-opacity:1"
-         offset="1"
-         id="stop5107-7-48" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient8562"
-       id="linearGradient9565"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(19.911612,-40)"
-       x1="11.339488"
-       y1="1064.0511"
-       x2="11.339488"
-       y2="1067.0511" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient8562">
-      <stop
-         style="stop-color:#6994ad;stop-opacity:1"
-         offset="0"
-         id="stop8564" />
-      <stop
-         style="stop-color:#005596;stop-opacity:1"
-         offset="1"
-         id="stop8566" />
-    </linearGradient>
-    <linearGradient
-       y2="1067.0511"
-       x2="11.339488"
-       y1="1064.0511"
-       x1="11.339488"
-       gradientTransform="translate(19.911612,-40)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient6482"
-       xlink:href="#linearGradient3047"
-       inkscape:collect="always" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3829"
-       id="linearGradient3835"
-       x1="52.177807"
-       y1="-1019.7672"
-       x2="56.177807"
-       y2="-1019.7672"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3837"
-       id="linearGradient3843"
-       x1="53.177807"
-       y1="-1022.2672"
-       x2="53.177807"
-       y2="-1017.2672"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       id="linearGradient5103-3-7-7">
-      <stop
-         style="stop-color:#96b956;stop-opacity:1"
-         offset="0"
-         id="stop5105-5-4-4" />
-      <stop
-         id="stop7550-07-0-0"
-         offset="0.26694915"
-         style="stop-color:#c6d560;stop-opacity:1" />
-      <stop
-         id="stop7548-6-9-9"
-         offset="0.51694918"
-         style="stop-color:#cfdc63;stop-opacity:1" />
-      <stop
-         style="stop-color:#abca52;stop-opacity:1"
-         offset="1"
-         id="stop5107-7-48-4" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3047-8"
-       id="linearGradient3861-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,-1,-6.266193,2108.6294)"
-       x1="11.339488"
-       y1="1064.0511"
-       x2="11.339488"
-       y2="1067.0511" />
-    <linearGradient
-       id="linearGradient3047-8"
-       inkscape:collect="always">
-      <stop
-         id="stop3049-2"
-         offset="0"
-         style="stop-color:#146d39;stop-opacity:1" />
-      <stop
-         id="stop3051-4"
-         offset="1"
-         style="stop-color:#359b58;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3829-7"
-       id="linearGradient3853-2"
-       gradientUnits="userSpaceOnUse"
-       x1="52.177807"
-       y1="-1019.7672"
-       x2="56.177807"
-       y2="-1019.7672" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3829-7">
-      <stop
-         style="stop-color:#8297bc;stop-opacity:1"
-         offset="0"
-         id="stop3831-6" />
-      <stop
-         style="stop-color:#6c81ad;stop-opacity:1"
-         offset="1"
-         id="stop3833-1" />
-    </linearGradient>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask3991">
-      <g
-         transform="matrix(1,0,0,-1,-46.177805,2068.6294)"
-         id="g3993"
-         style="fill:#ffffff">
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3995"
-           width="10"
-           height="5"
-           x="48.177807"
-           y="-1022.2672"
-           transform="scale(1,-1)" />
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3997"
-           width="8"
-           height="3"
-           x="49.177807"
-           y="-1021.2672"
-           transform="scale(1,-1)" />
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3999"
-           width="1"
-           height="1"
-           x="50.177807"
-           y="-1020.2672"
-           transform="scale(1,-1)" />
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect4001"
-           width="4"
-           height="1"
-           x="52.177807"
-           y="-1020.2672"
-           transform="scale(1,-1)" />
-      </g>
-    </mask>
-    <linearGradient
-       id="linearGradient5103-3-7-74">
-      <stop
-         style="stop-color:#96b956;stop-opacity:1"
-         offset="0"
-         id="stop5105-5-4-0" />
-      <stop
-         id="stop7550-07-0-9"
-         offset="0.26694915"
-         style="stop-color:#c6d560;stop-opacity:1" />
-      <stop
-         id="stop7548-6-9-4"
-         offset="0.51694918"
-         style="stop-color:#cfdc63;stop-opacity:1" />
-      <stop
-         style="stop-color:#abca52;stop-opacity:1"
-         offset="1"
-         id="stop5107-7-48-8" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3047-2"
-       id="linearGradient3063-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,-1,-6.266193,2108.6294)"
-       x1="11.339488"
-       y1="1064.0511"
-       x2="11.339488"
-       y2="1067.0511" />
-    <linearGradient
-       id="linearGradient3047-2"
-       inkscape:collect="always">
-      <stop
-         id="stop3049-4"
-         offset="0"
-         style="stop-color:#146d39;stop-opacity:1" />
-      <stop
-         id="stop3051-5"
-         offset="1"
-         style="stop-color:#359b58;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4902-3"
-       id="linearGradient4908-2"
-       x1="10.544736"
-       y1="1038.5779"
-       x2="10.544736"
-       y2="1052.3228"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-2.009153,-1.0294106)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4902-3">
-      <stop
-         style="stop-color:#b28a30;stop-opacity:1"
-         offset="0"
-         id="stop4904-2" />
-      <stop
-         style="stop-color:#7f703d;stop-opacity:1"
-         offset="1"
-         id="stop4906-2" />
-    </linearGradient>
-    <linearGradient
-       y2="1052.3228"
-       x2="10.544736"
-       y1="1038.5779"
-       x1="10.544736"
-       gradientTransform="translate(-2.009153,-1.0294106)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient6318-3"
-       xlink:href="#linearGradient4902-3-2"
-       inkscape:collect="always" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4902-3-2">
-      <stop
-         style="stop-color:#b28a30;stop-opacity:1"
-         offset="0"
-         id="stop4904-2-2" />
-      <stop
-         style="stop-color:#7f703d;stop-opacity:1"
-         offset="1"
-         id="stop4906-2-1" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5103-3-7-74-8">
-      <stop
-         style="stop-color:#96b956;stop-opacity:1"
-         offset="0"
-         id="stop5105-5-4-0-5" />
-      <stop
-         id="stop7550-07-0-9-7"
-         offset="0.26694915"
-         style="stop-color:#c6d560;stop-opacity:1" />
-      <stop
-         id="stop7548-6-9-4-6"
-         offset="0.51694918"
-         style="stop-color:#cfdc63;stop-opacity:1" />
-      <stop
-         style="stop-color:#abca52;stop-opacity:1"
-         offset="1"
-         id="stop5107-7-48-8-1" />
-    </linearGradient>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask4069">
-      <g
-         style="fill:#ffffff;stroke:#ffffff;display:inline"
-         id="g4071"
-         transform="translate(-2,-1.0105)"
-         mask="none">
-        <path
-           sodipodi:nodetypes="cccccc"
-           inkscape:connector-curvature="0"
-           id="path4073"
-           d="m 3.488129,1037.8727 7.00967,0 3.062057,3.0066 0,9.9546 -10.071727,0 z"
-           style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;display:inline" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4075"
-           d="m 9.967468,1037.41 0,3.9112 3.977478,0 z"
-           style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;display:inline" />
-        <path
-           sodipodi:nodetypes="cccccc"
-           inkscape:connector-curvature="0"
-           id="path4077"
-           d="m 3.488129,1037.8727 6.94717,0 3.062057,3.0066 0,9.9546 -10.009227,0 z"
-           style="fill:#ffffff;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline" />
-      </g>
-    </mask>
-    <linearGradient
-       id="linearGradient5103-3-7-8">
-      <stop
-         style="stop-color:#96b956;stop-opacity:1"
-         offset="0"
-         id="stop5105-5-4-7" />
-      <stop
-         id="stop7550-07-0-4"
-         offset="0.26694915"
-         style="stop-color:#c6d560;stop-opacity:1" />
-      <stop
-         id="stop7548-6-9-2"
-         offset="0.51694918"
-         style="stop-color:#cfdc63;stop-opacity:1" />
-      <stop
-         style="stop-color:#abca52;stop-opacity:1"
-         offset="1"
-         id="stop5107-7-48-7" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3047-9"
-       id="linearGradient3063-7"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,-1,-6.266193,2108.6294)"
-       x1="11.339488"
-       y1="1064.0511"
-       x2="11.339488"
-       y2="1067.0511" />
-    <linearGradient
-       id="linearGradient3047-9"
-       inkscape:collect="always">
-      <stop
-         id="stop3049-3"
-         offset="0"
-         style="stop-color:#146d39;stop-opacity:1" />
-      <stop
-         id="stop3051-1"
-         offset="1"
-         style="stop-color:#359b58;stop-opacity:1" />
-    </linearGradient>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask4146">
-      <g
-         id="g4148"
-         transform="translate(4.0267846,2.0179)"
-         style="fill:#ffffff">
-        <path
-           style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline"
-           d="m 1.519236,1046.6559 -0.816057,-1.9944 0.88243,-2.3985 3.398198,0.051 0,-1.5313 3.781143,2.432 -3.781143,3.0027 0,-1.5156 -2.544844,0 z"
-           id="path4150"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cccccccccc" />
-        <path
-           style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline"
-           d="m 3.983807,1046.8197 0,-1.5156 -0.07965,0 c -1.711191,0 -1.9036885,1.2987 -1.9036885,2.075 l -1,0 c -1.93733397,-3.08 -0.6777005,-6.0631 1.8476505,-6.0884 l 1.135685,0.023 0,-1.5313 c 0,-0.6519 0.740915,-0.6375 1.5,0 l 3.923255,3.4983 -3.923255,3.5386 c -0.760225,0.7602 -1.5,0.5203 -1.5,0 z m 1,-1 2.985755,-2.5386 -2.985755,-2.4983 0,1.5313 -2.12809,0.07 c -1.65655,0 -2.276462,2.3386 -1.391431,3.4245 0.477391,-0.9138 0.93524,-1.5048 2.407536,-1.5048 l 1.111985,0 z"
-           id="path4152"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cccccccccccccccccccccc" />
-      </g>
-    </mask>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3887"
-       id="linearGradient3893"
-       x1="7.1339283"
-       y1="10.566964"
-       x2="7.1339283"
-       y2="5.4737153"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3895"
-       id="linearGradient3901"
-       x1="9.34375"
-       y1="10.8125"
-       x2="9.34375"
-       y2="5.2537832"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="44.8"
-     inkscape:cx="3.2991576"
-     inkscape:cy="6.9215825"
-     inkscape:document-units="px"
-     inkscape:current-layer="g3866"
-     showgrid="true"
-     inkscape:window-width="1574"
-     inkscape:window-height="1098"
-     inkscape:window-x="115"
-     inkscape:window-y="119"
-     inkscape:window-maximized="0"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4999"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata4228">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1036.3622)">
-    <g
-       id="g3866">
-      <path
-         sodipodi:type="arc"
-         style="fill:url(#linearGradient3901);fill-opacity:1;stroke:url(#linearGradient3893);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="path3117"
-         sodipodi:cx="7"
-         sodipodi:cy="8"
-         sodipodi:rx="3.5178573"
-         sodipodi:ry="3.5178573"
-         d="M 10.517857,8 A 3.5178573,3.5178573 0 1 1 3.4821427,8 3.5178573,3.5178573 0 1 1 10.517857,8 z"
-         transform="translate(1,1036.3622)" />
-    </g>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/method.svg b/svg/org.eclipse.languageserver/icons/full/obj16/method.svg
deleted file mode 100644
index 83b170d..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/method.svg
+++ /dev/null
@@ -1,459 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="cmethod.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient4198">
-      <stop
-         id="stop4200"
-         offset="0"
-         style="stop-color:#14733c;stop-opacity:1" />
-      <stop
-         style="stop-color:#14733c;stop-opacity:1"
-         offset="0.5"
-         id="stop4202" />
-      <stop
-         id="stop4204"
-         offset="1"
-         style="stop-color:#14733c;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       y2="459.24786"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3929-5"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1">
-      <stop
-         style="stop-color:#a17748;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2"
-         offset="0.5"
-         style="stop-color:#8e5c24;stop-opacity:1" />
-      <stop
-         style="stop-color:#c7af93;stop-opacity:1"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2" />
-    </linearGradient>
-    <mask
-       id="mask17098"
-       maskUnits="userSpaceOnUse">
-      <g
-         transform="translate(-0.696415,-25.515546)"
-         style="fill:#ffffff"
-         id="g17100">
-        <g
-           transform="matrix(0.27903303,0,0,0.27903303,-148.50157,940.95641)"
-           style="fill:#ffffff;stroke:#ffffff;display:inline"
-           id="g17102">
-          <g
-             style="fill:#ffffff;stroke:#ffffff"
-             transform="matrix(1.1835826,0,0,1.1835826,-7.5789257,-74.544918)"
-             id="g17104">
-            <g
-               transform="matrix(3.0279299,0,0,3.0279299,456.02712,-2782.985)"
-               style="fill:#ffffff;stroke:#ffffff;display:inline"
-               id="g17106"
-               inkscape:label="Layer 1">
-              <g
-                 id="g17108"
-                 style="fill:#ffffff;stroke:#ffffff;display:inline"
-                 transform="matrix(0.27903303,0,0,0.27903303,-129.51159,939.94639)">
-                <rect
-                   y="363.23068"
-                   x="464.14426"
-                   height="7.1676102"
-                   width="54.014832"
-                   id="rect17110"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-                <g
-                   style="fill:#ffffff;stroke:#ffffff"
-                   id="g17112"
-                   transform="matrix(1.1835826,0,0,1.1835826,-75.612218,-74.709882)">
-                  <rect
-                     ry="2.625"
-                     rx="2.625"
-                     y="365.46738"
-                     x="463.93262"
-                     height="16.625"
-                     width="15"
-                     id="rect17114"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17116"
-                     d="m 463.24874,371.54269 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.39926 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.96909 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17118"
-                     d="m 463.24874,371.6096 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.33235 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.90218 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     inkscape:connector-curvature="0"
-                     id="path17120"
-                     d="m 462.26171,371.52622 20.09375,0"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-                  <g
-                     style="fill:#ffffff;stroke:#ffffff"
-                     mask="url(#mask4917-4-0)"
-                     id="g17122">
-                    <rect
-                       style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.38039374;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;filter:url(#filter4929-9)"
-                       id="rect17124"
-                       width="30.899641"
-                       height="22.649353"
-                       x="860.68469"
-                       y="542.8974"
-                       rx="2.625"
-                       ry="3.7184925"
-                       transform="matrix(1,0,-0.70828043,0.70593118,0,0)" />
-                  </g>
-                  <rect
-                     transform="matrix(1,0,-0.70828042,0.70593119,0,0)"
-                     ry="3.7184927"
-                     rx="2.625"
-                     y="543.43286"
-                     x="860.68469"
-                     height="21.542582"
-                     width="30.23728"
-                     id="rect17126"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.60383272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                </g>
-                <path
-                   sodipodi:nodetypes="ccccccc"
-                   inkscape:connector-curvature="0"
-                   id="path17128"
-                   d="m 492.81474,377.56576 -14.33522,0 0,3.5838 2.02645,0 0,-1.47461 11.8608,0 z"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-              </g>
-            </g>
-          </g>
-        </g>
-        <path
-           sodipodi:nodetypes="ssscccssscccscss"
-           inkscape:connector-curvature="0"
-           id="path17130"
-           d="m 5.7026894,1044.9373 c -0.185041,-0.018 -0.402396,-0.059 -0.576929,-0.1108 -0.270837,-0.079 -0.243851,0.015 -0.243851,-0.8593 0,-0.4579 0.0077,-0.7598 0.01951,-0.7646 0.01072,0 0.0317,0 0.04665,0.013 0.04847,0.037 0.294579,0.1623 0.376062,0.1926 0.186482,0.069 0.46629,0.1032 0.663393,0.083 0.436936,-0.047 0.733026,-0.2945 0.881951,-0.7389 0.120095,-0.3583 0.114052,-0.2194 0.12641,-2.9086 l 0.01137,-2.4738 0.829393,0 0.829395,0 0.0062,2.3061 c 0.0064,2.384 -5.49e-4,2.6629 -0.0777,3.0973 -0.156267,0.8809 -0.598495,1.5436 -1.254122,1.8796 -0.440731,0.2258 -1.0806,0.337 -1.637678,0.2843 z"
-           style="fill:#ffffff;fill-opacity:1;display:inline" />
-      </g>
-    </mask>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask4917-4-0">
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline"
-         d="m 462.77563,373.22885 29.11636,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,18.76896 c 0,1.45425 -1.17412,2.52598 -2.625,2.625 l -29.11636,1.98708 c -1.45088,0.099 -2.625,-1.17075 -2.625,-2.625 l 0,-20.75604 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-         id="path4919-6-6"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sssssssss" />
-    </mask>
-    <filter
-       inkscape:collect="always"
-       id="filter4929-9"
-       x="-0.13757156"
-       width="1.2751431"
-       y="-0.37744918"
-       height="1.7548983"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="3.5620748"
-         id="feGaussianBlur4931-98" />
-    </filter>
-    <mask
-       id="mask17064"
-       maskUnits="userSpaceOnUse">
-      <g
-         transform="matrix(2.4682548,0,0,2.4682548,-151.3224,-1556.3662)"
-         style="fill:#ffffff"
-         id="g17066">
-        <g
-           transform="matrix(0.27903303,0,0,0.27903303,-148.50157,940.95641)"
-           style="fill:#ffffff;stroke:#ffffff;display:inline"
-           id="g17068">
-          <g
-             style="fill:#ffffff;stroke:#ffffff"
-             transform="matrix(1.1835826,0,0,1.1835826,-7.5789257,-74.544918)"
-             id="g17070">
-            <g
-               transform="matrix(3.0279299,0,0,3.0279299,456.02712,-2782.985)"
-               style="fill:#ffffff;stroke:#ffffff;display:inline"
-               id="g17072"
-               inkscape:label="Layer 1">
-              <g
-                 id="g17074"
-                 style="fill:#ffffff;stroke:#ffffff;display:inline"
-                 transform="matrix(0.27903303,0,0,0.27903303,-129.51159,939.94639)">
-                <rect
-                   y="363.23068"
-                   x="464.14426"
-                   height="7.1676102"
-                   width="54.014832"
-                   id="rect17076"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-                <g
-                   style="fill:#ffffff;stroke:#ffffff"
-                   id="g17078"
-                   transform="matrix(1.1835826,0,0,1.1835826,-75.612218,-74.709882)">
-                  <rect
-                     ry="2.625"
-                     rx="2.625"
-                     y="365.46738"
-                     x="463.93262"
-                     height="16.625"
-                     width="15"
-                     id="rect17080"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17082"
-                     d="m 463.24874,371.54269 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.39926 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.96909 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17084"
-                     d="m 463.24874,371.6096 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.33235 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.90218 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     inkscape:connector-curvature="0"
-                     id="path17086"
-                     d="m 462.26171,371.52622 20.09375,0"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-                  <g
-                     style="fill:#ffffff;stroke:#ffffff"
-                     mask="url(#mask4917-4-0)"
-                     id="g17088">
-                    <rect
-                       style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.38039374;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;filter:url(#filter4929-9)"
-                       id="rect17090"
-                       width="30.899641"
-                       height="22.649353"
-                       x="860.68469"
-                       y="542.8974"
-                       rx="2.625"
-                       ry="3.7184925"
-                       transform="matrix(1,0,-0.70828043,0.70593118,0,0)" />
-                  </g>
-                  <rect
-                     transform="matrix(1,0,-0.70828042,0.70593119,0,0)"
-                     ry="3.7184927"
-                     rx="2.625"
-                     y="543.43286"
-                     x="860.68469"
-                     height="21.542582"
-                     width="30.23728"
-                     id="rect17092"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.60383272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                </g>
-                <path
-                   sodipodi:nodetypes="ccccccc"
-                   inkscape:connector-curvature="0"
-                   id="path17094"
-                   d="m 492.81474,377.56576 -14.33522,0 0,3.5838 2.02645,0 0,-1.47461 11.8608,0 z"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-              </g>
-            </g>
-          </g>
-        </g>
-        <path
-           sodipodi:nodetypes="ssscccssscccscss"
-           inkscape:connector-curvature="0"
-           id="path17096"
-           d="m 5.7026894,1044.9373 c -0.185041,-0.018 -0.402396,-0.059 -0.576929,-0.1108 -0.270837,-0.079 -0.243851,0.015 -0.243851,-0.8593 0,-0.4579 0.0077,-0.7598 0.01951,-0.7646 0.01072,0 0.0317,0 0.04665,0.013 0.04847,0.037 0.294579,0.1623 0.376062,0.1926 0.186482,0.069 0.46629,0.1032 0.663393,0.083 0.436936,-0.047 0.733026,-0.2945 0.881951,-0.7389 0.120095,-0.3583 0.114052,-0.2194 0.12641,-2.9086 l 0.01137,-2.4738 0.829393,0 0.829395,0 0.0062,2.3061 c 0.0064,2.384 -5.49e-4,2.6629 -0.0777,3.0973 -0.156267,0.8809 -0.598495,1.5436 -1.254122,1.8796 -0.440731,0.2258 -1.0806,0.337 -1.637678,0.2843 z"
-           style="fill:#ffffff;fill-opacity:1;display:inline" />
-      </g>
-    </mask>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask18860">
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline"
-         d="m 462.77563,373.22885 29.11636,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,18.76896 c 0,1.45425 -1.17412,2.52598 -2.625,2.625 l -29.11636,1.98708 c -1.45088,0.099 -2.625,-1.17075 -2.625,-2.625 l 0,-20.75604 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-         id="path18862"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sssssssss" />
-    </mask>
-    <linearGradient
-       id="linearGradient7540-2-3-8">
-      <stop
-         id="stop7542-8-7-5"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.502" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.47623286"
-         id="stop7544-8-2-0" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0"
-         offset="0.5"
-         id="stop7546-1-7-9" />
-      <stop
-         id="stop7548-98-9-2"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7540-6-33-6-3">
-      <stop
-         id="stop7542-4-4-3-3"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.502" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.47623286"
-         id="stop7544-5-3-8-5" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0"
-         offset="0.5"
-         id="stop7546-2-9-1-2" />
-      <stop
-         id="stop7548-9-2-0-9"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6738"
-       id="linearGradient6744"
-       x1="-31.957434"
-       y1="1042.2544"
-       x2="-31.957434"
-       y2="1039.6025"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.4617999,0,0,1.4617999,38.859115,-483.60399)" />
-    <linearGradient
-       id="linearGradient6738">
-      <stop
-         style="stop-color:#5481b6;stop-opacity:1"
-         offset="0"
-         id="stop6740" />
-      <stop
-         id="stop5729"
-         offset="0.5"
-         style="stop-color:#1c65a2;stop-opacity:1" />
-      <stop
-         style="stop-color:#5286ba;stop-opacity:1"
-         offset="1"
-         id="stop6742" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1-3">
-      <stop
-         style="stop-color:#4f9e55;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2-6" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2-7"
-         offset="0.5"
-         style="stop-color:#418a4d;stop-opacity:1" />
-      <stop
-         style="stop-color:#91c168;stop-opacity:1;"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2-5" />
-    </linearGradient>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="44.8"
-     inkscape:cx="2.25583"
-     inkscape:cy="8.1584905"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1043"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2985"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1036.3622)">
-    <g
-       style="display:inline"
-       id="layer1-3"
-       inkscape:label="Layer 1"
-       transform="translate(1.6252372,17.080298)" />
-    <g
-       transform="translate(11.084313,10.044361)"
-       style="font-style:normal;font-weight:normal;font-size:13.58917427px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-       id="text6430-2" />
-    <ellipse
-       id="path10796-2-6-2"
-       style="font-style:normal;font-weight:normal;font-size:medium;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#7f7b49;fill-opacity:1;stroke:#615e32;stroke-width:0.76525658;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       cx="7.0009236"
-       cy="1044.3566"
-       rx="4.5914693"
-       ry="4.5967937" />
-    <g
-       id="text3782-3"
-       style="font-style:normal;font-weight:normal;font-size:15.56941891px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-       transform="matrix(0.94400511,0,0,1.0593163,11.084313,10.044361)" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:6.14256096px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="4.8992257"
-       y="938.64496"
-       id="text4207"
-       sodipodi:linespacing="125%"
-       transform="scale(0.89670232,1.1151973)"><tspan
-         sodipodi:role="line"
-         id="tspan4209"
-         x="4.8992257"
-         y="938.64496"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ffffff;fill-opacity:1">M</tspan></text>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/module.svg b/svg/org.eclipse.languageserver/icons/full/obj16/module.svg
deleted file mode 100644
index b0e3e9c..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/module.svg
+++ /dev/null
@@ -1,221 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="classpath.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4918-5"
-       id="linearGradient4975-9"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9790709,0,0,1.0606414,0.3028847,-68.582544)"
-       x1="6.6639614"
-       y1="1051.8521"
-       x2="6.6639614"
-       y2="1053.6217" />
-    <linearGradient
-       id="linearGradient4918-5">
-      <stop
-         style="stop-color:#d48a4b;stop-opacity:1;"
-         offset="0"
-         id="stop4920-9" />
-      <stop
-         style="stop-color:#b1623a;stop-opacity:1;"
-         offset="1"
-         id="stop4922-9" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4907-9"
-       id="linearGradient4977-3"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9790709,0,0,1.0606414,0.3028847,-68.582544)"
-       x1="6.6639614"
-       y1="1051.8521"
-       x2="6.6639614"
-       y2="1053.6217" />
-    <linearGradient
-       id="linearGradient4907-9">
-      <stop
-         style="stop-color:#b86c44;stop-opacity:1;"
-         offset="0"
-         id="stop4909-5" />
-      <stop
-         style="stop-color:#8f4017;stop-opacity:1;"
-         offset="1"
-         id="stop4911-0" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4928-4"
-       id="linearGradient4979-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.93200086,0,0,1.0533679,0.56637026,-65.083369)"
-       x1="5.9250002"
-       y1="1051.6095"
-       x2="5.9250002"
-       y2="1054.2059" />
-    <linearGradient
-       id="linearGradient4928-4">
-      <stop
-         style="stop-color:#4dac81;stop-opacity:1;"
-         offset="0"
-         id="stop4930-9" />
-      <stop
-         style="stop-color:#058048;stop-opacity:1;"
-         offset="1"
-         id="stop4932-8" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4938-8">
-      <stop
-         style="stop-color:#8bc7d7;stop-opacity:1;"
-         offset="0"
-         id="stop4940-4" />
-      <stop
-         style="stop-color:#17477c;stop-opacity:1;"
-         offset="1"
-         id="stop4942-8" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4961-6">
-      <stop
-         style="stop-color:#df9a39;stop-opacity:1;"
-         offset="0"
-         id="stop4963-0" />
-      <stop
-         style="stop-color:#b55829;stop-opacity:1;"
-         offset="1"
-         id="stop4965-3" />
-    </linearGradient>
-    <linearGradient
-       y2="1049.2014"
-       x2="18.744612"
-       y1="1040.0764"
-       x1="15.073242"
-       gradientTransform="translate(-4.625,0)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient5020"
-       xlink:href="#linearGradient4961-6"
-       inkscape:collect="always" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4961-6"
-       id="linearGradient9855"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-4.625,0)"
-       x1="15.073242"
-       y1="1040.0764"
-       x2="18.744612"
-       y2="1049.2014" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4938-8"
-       id="linearGradient9955"
-       x1="-0.81249988"
-       y1="1040.3623"
-       x2="-0.81249994"
-       y2="1044.3622"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(5.9999999,-2.0001051)" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="32.194078"
-     inkscape:cx="0.70258481"
-     inkscape:cy="7.5860216"
-     inkscape:document-units="px"
-     inkscape:current-layer="g4969"
-     showgrid="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1036"
-     inkscape:window-x="1440"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3948" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <g
-       style="display:inline"
-       id="g4969"
-       transform="translate(-0.18750003,0)">
-      <rect
-         y="1045.8622"
-         x="1.6875"
-         height="3"
-         width="9"
-         id="rect4897"
-         style="fill:url(#linearGradient4975-9);fill-opacity:1;stroke:url(#linearGradient4977-3);stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <rect
-         y="1042.8622"
-         x="2.6875"
-         height="2"
-         width="7"
-         id="rect4926"
-         style="fill:#78b87c;fill-opacity:1;stroke:url(#linearGradient4979-8);stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4949"
-         d="m 9.635742,1039.5901 c 0.08839,-0.044 1.569658,-0.9063 1.569658,-0.9063 l 3.976711,10.3859 -1.956435,0.5243 z"
-         style="fill:#f0c028;fill-opacity:1;stroke:url(#linearGradient5020);stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         style="fill:url(#linearGradient9955);fill-opacity:1;stroke:none;stroke-width:0.83589131;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="rect4159"
-         width="7"
-         height="2"
-         x="1.1875"
-         y="1040.3622" />
-      <rect
-         y="1040.3622"
-         x="2.1875"
-         height="1"
-         width="5"
-         id="rect4161"
-         style="fill:#0595d3;fill-opacity:1;stroke:none;stroke-width:0.83589131;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    </g>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/namespace.svg b/svg/org.eclipse.languageserver/icons/full/obj16/namespace.svg
deleted file mode 100644
index 4168946..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/namespace.svg
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="namespace.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient3827">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="0"
-         id="stop3829" />
-      <stop
-         id="stop3835"
-         offset="0.60149658"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop3831" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1">
-      <stop
-         style="stop-color:#965f4a;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2"
-         offset="0.5"
-         style="stop-color:#764e16;stop-opacity:1" />
-      <stop
-         style="stop-color:#a17367;stop-opacity:1"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       id="linearGradient4293"
-       gradientUnits="userSpaceOnUse"
-       x1="388.63736"
-       y1="478.18777"
-       x2="388.63736"
-       y2="462.11539"
-       gradientTransform="matrix(0.66884336,0,0,0.67139756,-252.09837,728.51462)" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="32.000001"
-     inkscape:cx="-3.0209908"
-     inkscape:cy="9.6721244"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1043"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     inkscape:snap-global="false"
-     showguides="true"
-     inkscape:guide-bbox="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3950" />
-    <sodipodi:guide
-       orientation="1,0"
-       position="5,3.25"
-       id="guide3797" />
-    <sodipodi:guide
-       orientation="0,1"
-       position="6.4375,3.75"
-       id="guide3801" />
-    <sodipodi:guide
-       orientation="1,0"
-       position="12.0625,5.3125"
-       id="guide3803" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <g
-       transform="matrix(0.27903303,0,0,0.27903303,-100.53208,912.07901)"
-       style="display:inline"
-       id="g11331-3-1-1">
-      <g
-         id="g13408-8"
-         style="fill:#737986;fill-opacity:1;stroke:#595e68;stroke-opacity:1" />
-    </g>
-    <g
-       transform="translate(15.084313,6.0443612)"
-       style="font-style:normal;font-weight:normal;font-size:13.58917427px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-       id="text6430-2" />
-    <ellipse
-       id="path10796-2-6-2"
-       style="font-style:normal;font-weight:normal;font-size:medium;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:url(#linearGradient4293);fill-opacity:1;stroke:#764e16;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       cx="7.496459"
-       cy="1042.8879"
-       rx="5.9919548"
-       ry="6.0148373" />
-    <g
-       id="text3782-3"
-       style="font-style:normal;font-weight:normal;font-size:15.56941891px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-       transform="matrix(0.94400511,0,0,1.0593163,15.084313,6.0443612)" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:11.87002277px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="3.9373145"
-       y="1023.1268"
-       id="text4171"
-       sodipodi:linespacing="125%"
-       transform="scale(0.9779643,1.0225322)"><tspan
-         sodipodi:role="line"
-         id="tspan4173"
-         x="3.9373145"
-         y="1023.1268"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.83269215px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">N</tspan></text>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/number.svg b/svg/org.eclipse.languageserver/icons/full/obj16/number.svg
deleted file mode 100644
index 4c90e89..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/number.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="number.svg"
-   inkscape:export-filename="C:\Users\jmietling\Documents\rect3997-9-1.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="31.999999"
-     inkscape:cx="-0.89185837"
-     inkscape:cy="5.8139818"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1043"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3999"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:5.15435791px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#246196;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
-       x="1.8983319"
-       y="1063.2415"
-       id="text4137"
-       sodipodi:linespacing="125%"
-       transform="scale(1.0132263,0.98694634)"><tspan
-         sodipodi:role="line"
-         id="tspan4139"
-         x="1.8983319"
-         y="1063.2415"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15.46307468px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#246196;fill-opacity:1;">#</tspan></text>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/package.svg b/svg/org.eclipse.languageserver/icons/full/obj16/package.svg
deleted file mode 100644
index b70d20b..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/package.svg
+++ /dev/null
@@ -1,327 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.0 r9654"
-   sodipodi:docname="package_obj.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient10573">
-      <stop
-         style="stop-color:#c18965;stop-opacity:1;"
-         offset="0"
-         id="stop10575" />
-      <stop
-         style="stop-color:#975c45;stop-opacity:1"
-         offset="1"
-         id="stop10577" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient10507">
-      <stop
-         style="stop-color:#5f392d;stop-opacity:1"
-         offset="0"
-         id="stop10509" />
-      <stop
-         id="stop10511"
-         offset="0.18181793"
-         style="stop-color:#9e7058;stop-opacity:1" />
-      <stop
-         id="stop10513"
-         offset="0.36363617"
-         style="stop-color:#794f40;stop-opacity:1" />
-      <stop
-         id="stop10515"
-         offset="0.49999985"
-         style="stop-color:#794f40;stop-opacity:1" />
-      <stop
-         id="stop10517"
-         offset="0.63636351"
-         style="stop-color:#794f40;stop-opacity:1" />
-      <stop
-         style="stop-color:#9e7058;stop-opacity:1"
-         offset="0.81818175"
-         id="stop10519" />
-      <stop
-         style="stop-color:#5f392d;stop-opacity:1"
-         offset="1"
-         id="stop10522" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient11146-4-4-4-6-2">
-      <stop
-         id="stop11150-4-72-3-9-7"
-         offset="0"
-         style="stop-color:#faefba;stop-opacity:1" />
-      <stop
-         style="stop-color:#9e6542;stop-opacity:1"
-         offset="1"
-         id="stop11152-9-0-7-3-8" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient11146-8-3-2-6-1-7">
-      <stop
-         id="stop11150-7-5-9-3-8-2"
-         offset="0"
-         style="stop-color:#faefba;stop-opacity:1" />
-      <stop
-         style="stop-color:#9e6542;stop-opacity:1"
-         offset="1"
-         id="stop11152-8-4-35-5-4-6" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient11146-7-5-30-1-1-4">
-      <stop
-         id="stop11150-9-6-9-5-6-9"
-         offset="0"
-         style="stop-color:#faefba;stop-opacity:1" />
-      <stop
-         style="stop-color:#9e6542;stop-opacity:1"
-         offset="1"
-         id="stop11152-6-7-6-3-3-3" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient11146-8-7-5-7-5-6-8">
-      <stop
-         id="stop11150-7-8-3-8-7-0-6"
-         offset="0"
-         style="stop-color:#faefba;stop-opacity:1" />
-      <stop
-         style="stop-color:#9e6542;stop-opacity:1"
-         offset="1"
-         id="stop11152-8-8-6-3-2-5-1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient10507"
-       id="linearGradient4895"
-       gradientUnits="userSpaceOnUse"
-       x1="355.2973"
-       y1="449.88141"
-       x2="394.71915"
-       y2="449.88141"
-       gradientTransform="matrix(0,1,-1,0,824.88775,74.875059)" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11146-7-5-30-1-1-4"
-       id="radialGradient10499"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.5866405,-4.9074941e-6,4.3066195e-6,2.2699317,-639.81718,-549.01598)"
-       cx="387.59717"
-       cy="442.57816"
-       fx="387.59717"
-       fy="442.57816"
-       r="6.1875" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11146-8-7-5-7-5-6-8"
-       id="radialGradient10501"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.5866405,-4.9074941e-6,4.3066195e-6,2.2699317,-621.85195,-549.01598)"
-       cx="387.59717"
-       cy="442.57816"
-       fx="387.59717"
-       fy="442.57816"
-       r="6.1875" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11146-8-3-2-6-1-7"
-       id="radialGradient10503"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.5866405,-4.9074941e-6,4.3066195e-6,2.2699317,-621.85195,-566.97066)"
-       cx="387.59717"
-       cy="442.57816"
-       fx="387.59717"
-       fy="442.57816"
-       r="6.1875" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11146-4-4-4-6-2"
-       id="radialGradient10505"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.5866405,-4.9074941e-6,4.3066195e-6,2.2699317,-639.81718,-566.97066)"
-       cx="387.59717"
-       cy="442.57816"
-       fx="387.59717"
-       fy="442.57816"
-       r="6.1875" />
-    <linearGradient
-       id="linearGradient10507-2">
-      <stop
-         style="stop-color:#5f392d;stop-opacity:1"
-         offset="0"
-         id="stop10509-4" />
-      <stop
-         id="stop10511-2"
-         offset="0.18181793"
-         style="stop-color:#9e7058;stop-opacity:1" />
-      <stop
-         id="stop10513-9"
-         offset="0.36363617"
-         style="stop-color:#794f40;stop-opacity:1" />
-      <stop
-         id="stop10515-0"
-         offset="0.49999985"
-         style="stop-color:#794f40;stop-opacity:1" />
-      <stop
-         id="stop10517-9"
-         offset="0.63636351"
-         style="stop-color:#794f40;stop-opacity:1" />
-      <stop
-         style="stop-color:#9e7058;stop-opacity:1"
-         offset="0.81818175"
-         id="stop10519-2" />
-      <stop
-         style="stop-color:#5f392d;stop-opacity:1"
-         offset="1"
-         id="stop10522-7" />
-    </linearGradient>
-    <linearGradient
-       y2="449.88141"
-       x2="394.71915"
-       y1="449.88141"
-       x1="355.2973"
-       gradientTransform="matrix(-1,0,0,-1,750.01459,899.76468)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient10544"
-       xlink:href="#linearGradient10507-2"
-       inkscape:collect="always" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient10573"
-       id="linearGradient10579"
-       x1="366.04819"
-       y1="430.17236"
-       x2="366.04819"
-       y2="466.01041"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="30.80334"
-     inkscape:cx="1.2064551"
-     inkscape:cy="10.646745"
-     inkscape:document-units="px"
-     inkscape:current-layer="g13862"
-     showgrid="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1138"
-     inkscape:window-x="-8"
-     inkscape:window-y="-8"
-     inkscape:window-maximized="1"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3947" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <g
-       transform="matrix(0.27903303,0,0,0.27903303,-129.51159,939.94639)"
-       style="display:inline"
-       id="g13862">
-      <g
-         transform="matrix(3.5838051,0,0,3.5838051,511.21484,-3419.8264)"
-         style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
-         id="layer1-9"
-         inkscape:label="Layer 1">
-        <g
-           id="g11260-4-2"
-           transform="matrix(0.27903303,0,0,0.27903303,-109.29986,933.62804)"
-           style="display:inline">
-          <rect
-             style="fill:url(#radialGradient10505);fill-opacity:1;stroke:#c37e3b;stroke-width:3.58380508;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
-             id="rect10961-8-3"
-             width="17.965227"
-             height="17.965227"
-             x="357.0806"
-             y="431.97098" />
-          <rect
-             style="fill:url(#radialGradient10503);fill-opacity:1;stroke:#c37e3b;stroke-width:3.58380508;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
-             id="rect10961-9-0-4"
-             width="17.965227"
-             height="17.965227"
-             x="375.04584"
-             y="431.97098" />
-          <path
-             sodipodi:nodetypes="ccccc"
-             inkscape:connector-curvature="0"
-             id="rect10961-3-9-1"
-             d="m 357.08057,449.75837 17.96523,0 0,18.13262 -17.96523,0 z"
-             style="fill:url(#radialGradient10499);fill-opacity:1;stroke:#a45d2b;stroke-width:3.58380508;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-          <path
-             sodipodi:nodetypes="ccccc"
-             inkscape:connector-curvature="0"
-             id="rect10961-9-6-4-1"
-             d="m 375.0458,449.75837 17.96522,0 0,18.13262 -17.96522,0 z"
-             style="fill:url(#radialGradient10501);fill-opacity:1;stroke:#a45d2b;stroke-width:3.58380508;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-          <path
-             style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:none;stroke:url(#linearGradient10579);stroke-width:3.58380508;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;font-family:Sans"
-             d="m 357.27589,432.15148 0,17.71804 0,17.85756 17.71805,0 17.85755,0 0,-17.85756 0,-0.13951 0,-17.57853 -17.85755,0 -17.71805,0 z"
-             id="rect10961-8-3-6"
-             inkscape:connector-curvature="0" />
-          <path
-             sodipodi:nodetypes="cc"
-             inkscape:connector-curvature="0"
-             id="path11108-6-7-5"
-             d="m 375.00635,426.58855 0,46.58947"
-             style="fill:#915323;fill-opacity:1;stroke:url(#linearGradient4895);stroke-width:3.58380508;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
-          <path
-             sodipodi:nodetypes="cc"
-             inkscape:connector-curvature="0"
-             id="path11108-6-7-5-6"
-             d="m 398.30108,449.88328 -46.58947,0"
-             style="font-size:13.58917427px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#915323;fill-opacity:1;stroke:url(#linearGradient10544);stroke-width:3.58380508;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;font-family:Sans" />
-        </g>
-        <g
-           id="g11331-3"
-           style="display:inline"
-           transform="matrix(0.27903303,0,0,0.27903303,-64.52871,915.34629)" />
-      </g>
-      <g
-         id="g14104"
-         transform="matrix(1.1835826,0,0,1.1835826,-68.597078,-81.712528)"
-         style="fill:#ffffff;stroke:#ffffff;display:inline" />
-      <g
-         transform="matrix(1.1835826,0,0,1.1835826,-68.597078,-81.712526)"
-         style="display:inline"
-         id="g6258"
-         mask="none" />
-    </g>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/property.svg b/svg/org.eclipse.languageserver/icons/full/obj16/property.svg
deleted file mode 100644
index 7e5978a..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/property.svg
+++ /dev/null
@@ -1,459 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="property.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient4198">
-      <stop
-         id="stop4200"
-         offset="0"
-         style="stop-color:#14733c;stop-opacity:1" />
-      <stop
-         style="stop-color:#14733c;stop-opacity:1"
-         offset="0.5"
-         id="stop4202" />
-      <stop
-         id="stop4204"
-         offset="1"
-         style="stop-color:#14733c;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       y2="459.24786"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3929-5"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1">
-      <stop
-         style="stop-color:#a17748;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2"
-         offset="0.5"
-         style="stop-color:#8e5c24;stop-opacity:1" />
-      <stop
-         style="stop-color:#c7af93;stop-opacity:1"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2" />
-    </linearGradient>
-    <mask
-       id="mask17098"
-       maskUnits="userSpaceOnUse">
-      <g
-         transform="translate(-0.696415,-25.515546)"
-         style="fill:#ffffff"
-         id="g17100">
-        <g
-           transform="matrix(0.27903303,0,0,0.27903303,-148.50157,940.95641)"
-           style="fill:#ffffff;stroke:#ffffff;display:inline"
-           id="g17102">
-          <g
-             style="fill:#ffffff;stroke:#ffffff"
-             transform="matrix(1.1835826,0,0,1.1835826,-7.5789257,-74.544918)"
-             id="g17104">
-            <g
-               transform="matrix(3.0279299,0,0,3.0279299,456.02712,-2782.985)"
-               style="fill:#ffffff;stroke:#ffffff;display:inline"
-               id="g17106"
-               inkscape:label="Layer 1">
-              <g
-                 id="g17108"
-                 style="fill:#ffffff;stroke:#ffffff;display:inline"
-                 transform="matrix(0.27903303,0,0,0.27903303,-129.51159,939.94639)">
-                <rect
-                   y="363.23068"
-                   x="464.14426"
-                   height="7.1676102"
-                   width="54.014832"
-                   id="rect17110"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-                <g
-                   style="fill:#ffffff;stroke:#ffffff"
-                   id="g17112"
-                   transform="matrix(1.1835826,0,0,1.1835826,-75.612218,-74.709882)">
-                  <rect
-                     ry="2.625"
-                     rx="2.625"
-                     y="365.46738"
-                     x="463.93262"
-                     height="16.625"
-                     width="15"
-                     id="rect17114"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17116"
-                     d="m 463.24874,371.54269 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.39926 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.96909 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17118"
-                     d="m 463.24874,371.6096 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.33235 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.90218 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     inkscape:connector-curvature="0"
-                     id="path17120"
-                     d="m 462.26171,371.52622 20.09375,0"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-                  <g
-                     style="fill:#ffffff;stroke:#ffffff"
-                     mask="url(#mask4917-4-0)"
-                     id="g17122">
-                    <rect
-                       style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.38039374;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;filter:url(#filter4929-9)"
-                       id="rect17124"
-                       width="30.899641"
-                       height="22.649353"
-                       x="860.68469"
-                       y="542.8974"
-                       rx="2.625"
-                       ry="3.7184925"
-                       transform="matrix(1,0,-0.70828043,0.70593118,0,0)" />
-                  </g>
-                  <rect
-                     transform="matrix(1,0,-0.70828042,0.70593119,0,0)"
-                     ry="3.7184927"
-                     rx="2.625"
-                     y="543.43286"
-                     x="860.68469"
-                     height="21.542582"
-                     width="30.23728"
-                     id="rect17126"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.60383272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                </g>
-                <path
-                   sodipodi:nodetypes="ccccccc"
-                   inkscape:connector-curvature="0"
-                   id="path17128"
-                   d="m 492.81474,377.56576 -14.33522,0 0,3.5838 2.02645,0 0,-1.47461 11.8608,0 z"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-              </g>
-            </g>
-          </g>
-        </g>
-        <path
-           sodipodi:nodetypes="ssscccssscccscss"
-           inkscape:connector-curvature="0"
-           id="path17130"
-           d="m 5.7026894,1044.9373 c -0.185041,-0.018 -0.402396,-0.059 -0.576929,-0.1108 -0.270837,-0.079 -0.243851,0.015 -0.243851,-0.8593 0,-0.4579 0.0077,-0.7598 0.01951,-0.7646 0.01072,0 0.0317,0 0.04665,0.013 0.04847,0.037 0.294579,0.1623 0.376062,0.1926 0.186482,0.069 0.46629,0.1032 0.663393,0.083 0.436936,-0.047 0.733026,-0.2945 0.881951,-0.7389 0.120095,-0.3583 0.114052,-0.2194 0.12641,-2.9086 l 0.01137,-2.4738 0.829393,0 0.829395,0 0.0062,2.3061 c 0.0064,2.384 -5.49e-4,2.6629 -0.0777,3.0973 -0.156267,0.8809 -0.598495,1.5436 -1.254122,1.8796 -0.440731,0.2258 -1.0806,0.337 -1.637678,0.2843 z"
-           style="fill:#ffffff;fill-opacity:1;display:inline" />
-      </g>
-    </mask>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask4917-4-0">
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline"
-         d="m 462.77563,373.22885 29.11636,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,18.76896 c 0,1.45425 -1.17412,2.52598 -2.625,2.625 l -29.11636,1.98708 c -1.45088,0.099 -2.625,-1.17075 -2.625,-2.625 l 0,-20.75604 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-         id="path4919-6-6"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sssssssss" />
-    </mask>
-    <filter
-       inkscape:collect="always"
-       id="filter4929-9"
-       x="-0.13757156"
-       width="1.2751431"
-       y="-0.37744918"
-       height="1.7548983"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="3.5620748"
-         id="feGaussianBlur4931-98" />
-    </filter>
-    <mask
-       id="mask17064"
-       maskUnits="userSpaceOnUse">
-      <g
-         transform="matrix(2.4682548,0,0,2.4682548,-151.3224,-1556.3662)"
-         style="fill:#ffffff"
-         id="g17066">
-        <g
-           transform="matrix(0.27903303,0,0,0.27903303,-148.50157,940.95641)"
-           style="fill:#ffffff;stroke:#ffffff;display:inline"
-           id="g17068">
-          <g
-             style="fill:#ffffff;stroke:#ffffff"
-             transform="matrix(1.1835826,0,0,1.1835826,-7.5789257,-74.544918)"
-             id="g17070">
-            <g
-               transform="matrix(3.0279299,0,0,3.0279299,456.02712,-2782.985)"
-               style="fill:#ffffff;stroke:#ffffff;display:inline"
-               id="g17072"
-               inkscape:label="Layer 1">
-              <g
-                 id="g17074"
-                 style="fill:#ffffff;stroke:#ffffff;display:inline"
-                 transform="matrix(0.27903303,0,0,0.27903303,-129.51159,939.94639)">
-                <rect
-                   y="363.23068"
-                   x="464.14426"
-                   height="7.1676102"
-                   width="54.014832"
-                   id="rect17076"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-                <g
-                   style="fill:#ffffff;stroke:#ffffff"
-                   id="g17078"
-                   transform="matrix(1.1835826,0,0,1.1835826,-75.612218,-74.709882)">
-                  <rect
-                     ry="2.625"
-                     rx="2.625"
-                     y="365.46738"
-                     x="463.93262"
-                     height="16.625"
-                     width="15"
-                     id="rect17080"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17082"
-                     d="m 463.24874,371.54269 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.39926 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.96909 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-                  <path
-                     sodipodi:nodetypes="sssssssss"
-                     inkscape:connector-curvature="0"
-                     id="path17084"
-                     d="m 463.24874,371.6096 31.10344,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,14.33235 c 0,1.45425 -1.21199,2.28111 -2.625,2.625 l -31.10344,7.56983 c -1.413,0.34389 -2.625,-1.17075 -2.625,-2.625 l 0,-21.90218 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                  <path
-                     inkscape:connector-curvature="0"
-                     id="path17086"
-                     d="m 462.26171,371.52622 20.09375,0"
-                     style="fill:#ffffff;stroke:#ffffff;stroke-width:3.02792978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-                  <g
-                     style="fill:#ffffff;stroke:#ffffff"
-                     mask="url(#mask4917-4-0)"
-                     id="g17088">
-                    <rect
-                       style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.38039374;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline;filter:url(#filter4929-9)"
-                       id="rect17090"
-                       width="30.899641"
-                       height="22.649353"
-                       x="860.68469"
-                       y="542.8974"
-                       rx="2.625"
-                       ry="3.7184925"
-                       transform="matrix(1,0,-0.70828043,0.70593118,0,0)" />
-                  </g>
-                  <rect
-                     transform="matrix(1,0,-0.70828042,0.70593119,0,0)"
-                     ry="3.7184927"
-                     rx="2.625"
-                     y="543.43286"
-                     x="860.68469"
-                     height="21.542582"
-                     width="30.23728"
-                     id="rect17092"
-                     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.60383272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
-                </g>
-                <path
-                   sodipodi:nodetypes="ccccccc"
-                   inkscape:connector-curvature="0"
-                   id="path17094"
-                   d="m 492.81474,377.56576 -14.33522,0 0,3.5838 2.02645,0 0,-1.47461 11.8608,0 z"
-                   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
-              </g>
-            </g>
-          </g>
-        </g>
-        <path
-           sodipodi:nodetypes="ssscccssscccscss"
-           inkscape:connector-curvature="0"
-           id="path17096"
-           d="m 5.7026894,1044.9373 c -0.185041,-0.018 -0.402396,-0.059 -0.576929,-0.1108 -0.270837,-0.079 -0.243851,0.015 -0.243851,-0.8593 0,-0.4579 0.0077,-0.7598 0.01951,-0.7646 0.01072,0 0.0317,0 0.04665,0.013 0.04847,0.037 0.294579,0.1623 0.376062,0.1926 0.186482,0.069 0.46629,0.1032 0.663393,0.083 0.436936,-0.047 0.733026,-0.2945 0.881951,-0.7389 0.120095,-0.3583 0.114052,-0.2194 0.12641,-2.9086 l 0.01137,-2.4738 0.829393,0 0.829395,0 0.0062,2.3061 c 0.0064,2.384 -5.49e-4,2.6629 -0.0777,3.0973 -0.156267,0.8809 -0.598495,1.5436 -1.254122,1.8796 -0.440731,0.2258 -1.0806,0.337 -1.637678,0.2843 z"
-           style="fill:#ffffff;fill-opacity:1;display:inline" />
-      </g>
-    </mask>
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask18860">
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline"
-         d="m 462.77563,373.22885 29.11636,0 c 1.45425,0 2.625,1.17075 2.625,2.625 l 0,18.76896 c 0,1.45425 -1.17412,2.52598 -2.625,2.625 l -29.11636,1.98708 c -1.45088,0.099 -2.625,-1.17075 -2.625,-2.625 l 0,-20.75604 c 0,-1.45425 1.17075,-2.625 2.625,-2.625 z"
-         id="path18862"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sssssssss" />
-    </mask>
-    <linearGradient
-       id="linearGradient7540-2-3-8">
-      <stop
-         id="stop7542-8-7-5"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.502" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.47623286"
-         id="stop7544-8-2-0" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0"
-         offset="0.5"
-         id="stop7546-1-7-9" />
-      <stop
-         id="stop7548-98-9-2"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7540-6-33-6-3">
-      <stop
-         id="stop7542-4-4-3-3"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.502" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.47623286"
-         id="stop7544-5-3-8-5" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0"
-         offset="0.5"
-         id="stop7546-2-9-1-2" />
-      <stop
-         id="stop7548-9-2-0-9"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6738"
-       id="linearGradient6744"
-       x1="-31.957434"
-       y1="1042.2544"
-       x2="-31.957434"
-       y2="1039.6025"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.4617999,0,0,1.4617999,38.859115,-483.60399)" />
-    <linearGradient
-       id="linearGradient6738">
-      <stop
-         style="stop-color:#5481b6;stop-opacity:1"
-         offset="0"
-         id="stop6740" />
-      <stop
-         id="stop5729"
-         offset="0.5"
-         style="stop-color:#1c65a2;stop-opacity:1" />
-      <stop
-         style="stop-color:#5286ba;stop-opacity:1"
-         offset="1"
-         id="stop6742" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1-3">
-      <stop
-         style="stop-color:#4f9e55;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2-6" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2-7"
-         offset="0.5"
-         style="stop-color:#418a4d;stop-opacity:1" />
-      <stop
-         style="stop-color:#91c168;stop-opacity:1;"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2-5" />
-    </linearGradient>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="44.8"
-     inkscape:cx="-1.9798145"
-     inkscape:cy="8.2031334"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1043"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2985"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1036.3622)">
-    <g
-       style="display:inline"
-       id="layer1-3"
-       inkscape:label="Layer 1"
-       transform="translate(1.6252372,17.080298)" />
-    <g
-       transform="translate(11.084313,10.044361)"
-       style="font-style:normal;font-weight:normal;font-size:13.58917427px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-       id="text6430-2" />
-    <ellipse
-       id="path10796-2-6-2"
-       style="font-style:normal;font-weight:normal;font-size:medium;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#a36f43;fill-opacity:1;stroke:#925e32;stroke-width:0.76525658;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       cx="7.0009236"
-       cy="1044.3566"
-       rx="4.5914693"
-       ry="4.5967937" />
-    <g
-       id="text3782-3"
-       style="font-style:normal;font-weight:normal;font-size:15.56941891px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-       transform="matrix(0.94400511,0,0,1.0593163,11.084313,10.044361)" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:7.38322639px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="4.7280755"
-       y="1023.6911"
-       id="text4207"
-       sodipodi:linespacing="125%"
-       transform="scale(0.97763713,1.0228744)"><tspan
-         sodipodi:role="line"
-         id="tspan4209"
-         x="4.7280755"
-         y="1023.6911"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ffffff;fill-opacity:1">P</tspan></text>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/reference.svg b/svg/org.eclipse.languageserver/icons/full/obj16/reference.svg
deleted file mode 100644
index d686030..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/reference.svg
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="reference_obj.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3776">
-      <stop
-         style="stop-color:#fdf2d0;stop-opacity:1;"
-         offset="0"
-         id="stop3778" />
-      <stop
-         style="stop-color:#fffdf9;stop-opacity:1"
-         offset="1"
-         id="stop3780" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3788">
-      <stop
-         style="stop-color:#d8bb8c;stop-opacity:1"
-         offset="0"
-         id="stop3790" />
-      <stop
-         style="stop-color:#dfc38d;stop-opacity:1"
-         offset="1"
-         id="stop3792" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3780">
-      <stop
-         style="stop-color:#fdf2d0;stop-opacity:1;"
-         offset="0"
-         id="stop3782" />
-      <stop
-         style="stop-color:#fffdf9;stop-opacity:1"
-         offset="1"
-         id="stop3784" />
-    </linearGradient>
-    <linearGradient
-       y2="462.11539"
-       x2="388.63736"
-       y1="478.18777"
-       x1="388.63736"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3929-5"
-       xlink:href="#linearGradient10798-1-9-3-7-6-8-9-0-9-1"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient10798-1-9-3-7-6-8-9-0-9-1">
-      <stop
-         style="stop-color:#7564b1;stop-opacity:1"
-         offset="0"
-         id="stop10800-5-2-1-8-20-6-4-9-8-2" />
-      <stop
-         id="stop10806-6-8-5-3-9-24-8-4-3-2"
-         offset="0.5"
-         style="stop-color:#5d4aa1;stop-opacity:1" />
-      <stop
-         style="stop-color:#9283c3;stop-opacity:1"
-         offset="1"
-         id="stop10802-1-5-3-0-4-8-4-2-9-2" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3780"
-       id="linearGradient3786"
-       x1="22.377558"
-       y1="1040.4054"
-       x2="31.388678"
-       y2="1040.4054"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-20,0)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3788"
-       id="linearGradient3794"
-       x1="22.03125"
-       y1="1043.3622"
-       x2="32.03125"
-       y2="1043.3622"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-20,0)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3776"
-       id="linearGradient3782"
-       x1="2.9905782"
-       y1="1061.8914"
-       x2="13.021825"
-       y2="1061.8914"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(0,-20)" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="7.9999997"
-     inkscape:cx="9.0626167"
-     inkscape:cy="-10.629194"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="925"
-     inkscape:window-height="900"
-     inkscape:window-x="671"
-     inkscape:window-y="25"
-     inkscape:window-maximized="0"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2985"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1036.3622)">
-    <path
-       style="fill:url(#linearGradient3782);fill-opacity:1;stroke:#d8bb8c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 3.4905782,1039.3602 0,5.5312 3.03125,0 0,-3.0312 2.9999998,0 0,3.0312 2.999997,0 0,-5.5312 -0.476562,-0.4688 -4.039061,0 -4.0390621,0 z"
-       id="path3796"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccccccccccc" />
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/snippet.svg b/svg/org.eclipse.languageserver/icons/full/obj16/snippet.svg
deleted file mode 100644
index 6a2a329..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/snippet.svg
+++ /dev/null
@@ -1,285 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="template_obj.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient4972">
-      <stop
-         style="stop-color:#c7e3e7;stop-opacity:1;"
-         offset="0"
-         id="stop4974" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="1"
-         id="stop4976" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4894">
-      <stop
-         style="stop-color:#7e707a;stop-opacity:1;"
-         offset="0"
-         id="stop4896" />
-      <stop
-         style="stop-color:#8a5e8d;stop-opacity:1"
-         offset="1"
-         id="stop4898" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4894"
-       id="linearGradient4900"
-       x1="7.3804269"
-       y1="2.7417479"
-       x2="0.044194315"
-       y2="2.7859421"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.1295495,0,0,1.2357023,3.4694144,1036.4202)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4972"
-       id="linearGradient4978"
-       x1="5.1146582"
-       y1="1044.7372"
-       x2="12.520393"
-       y2="1044.7372"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4972-5"
-       id="linearGradient5138-5"
-       gradientUnits="userSpaceOnUse"
-       x1="5.1146584"
-       y1="1044.7372"
-       x2="12.520393"
-       y2="1044.7372" />
-    <linearGradient
-       id="linearGradient4972-5">
-      <stop
-         style="stop-color:#85c2cb;stop-opacity:1;"
-         offset="0"
-         id="stop4974-7" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop4976-1" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4972-4-1">
-      <stop
-         style="stop-color:#daedef;stop-opacity:1;"
-         offset="0"
-         id="stop4974-6-9" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="1"
-         id="stop4976-2-4" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6799-4-3">
-      <stop
-         style="stop-color:#a6bacf;stop-opacity:1;"
-         offset="0"
-         id="stop6801-4-0" />
-      <stop
-         style="stop-color:#798da2;stop-opacity:1;"
-         offset="1"
-         id="stop6803-5-7" />
-    </linearGradient>
-    <linearGradient
-       y2="1044.7372"
-       x2="12.520393"
-       y1="1044.7372"
-       x1="5.1146584"
-       gradientTransform="matrix(1.0469997,0,0,1.0188679,1.9141168,-19.251887)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient5417"
-       xlink:href="#linearGradient4972-4-1"
-       inkscape:collect="always" />
-    <linearGradient
-       y2="1047.6122"
-       x2="6.0002952"
-       y1="1047.6122"
-       x1="5.1146584"
-       gradientTransform="matrix(1.0469997,0,0,1.0188679,1.9141168,-22.404012)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient5419"
-       xlink:href="#linearGradient6799-4-3"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient6799-4-3-8">
-      <stop
-         style="stop-color:#a6bacf;stop-opacity:1;"
-         offset="0"
-         id="stop6801-4-0-5" />
-      <stop
-         style="stop-color:#798da2;stop-opacity:1;"
-         offset="1"
-         id="stop6803-5-7-2" />
-    </linearGradient>
-    <linearGradient
-       y2="1044.7372"
-       x2="12.520393"
-       y1="1044.7372"
-       x1="5.1146584"
-       gradientTransform="matrix(1.163235,0,0,0.88082597,-1.3209316,125.71553)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient4891-29"
-       xlink:href="#linearGradient6799-4-3-9-9"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient6799-4-3-9-9">
-      <stop
-         style="stop-color:#a6bacf;stop-opacity:1;"
-         offset="0"
-         id="stop6801-4-0-1-4" />
-      <stop
-         style="stop-color:#798da2;stop-opacity:1;"
-         offset="1"
-         id="stop6803-5-7-1-4" />
-    </linearGradient>
-    <linearGradient
-       y2="1044.7372"
-       x2="12.520393"
-       y1="1044.7372"
-       x1="5.1146584"
-       gradientTransform="matrix(0.72702183,0,0,0.88079591,1.4861494,126.97218)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient4925-6"
-       xlink:href="#linearGradient6799-4-3-9-0-0"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient6799-4-3-9-0-0">
-      <stop
-         style="stop-color:#a6bacf;stop-opacity:1;"
-         offset="0"
-         id="stop6801-4-0-1-3-2" />
-      <stop
-         style="stop-color:#798da2;stop-opacity:1;"
-         offset="1"
-         id="stop6803-5-7-1-5-1" />
-    </linearGradient>
-    <linearGradient
-       y2="1044.7372"
-       x2="12.520393"
-       y1="1044.7372"
-       x1="5.1146584"
-       gradientTransform="matrix(1.163235,0,0,0.88085603,-1.3209316,124.45888)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient4969"
-       xlink:href="#linearGradient6799-4-3-8"
-       inkscape:collect="always" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="32"
-     inkscape:cx="6.1487591"
-     inkscape:cy="4.5666429"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1171"
-     inkscape:window-height="959"
-     inkscape:window-x="1384"
-     inkscape:window-y="24"
-     inkscape:window-maximized="0"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3022" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <g
-       id="g4087"
-       transform="matrix(1.6322255,0,0,1.6585351,-10.172103,-689.24457)"
-       style="fill:url(#linearGradient4978);fill-opacity:1">
-      <rect
-         ry="0"
-         y="1041.3597"
-         x="7.7534022"
-         height="7.6753397"
-         width="6.7853222"
-         id="rect6795"
-         style="color:#000000;fill:url(#linearGradient5417);fill-opacity:1;stroke:url(#linearGradient5419);stroke-width:0.63910681;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
-    </g>
-    <rect
-       y="1038.0304"
-       x="2.6822987"
-       height="2.6134865"
-       width="10.725135"
-       id="rect6891"
-       style="opacity:0.77310947;color:#000000;fill:#fef17a;fill-opacity:1;stroke:#c89840;stroke-width:1.36659169;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
-    <rect
-       style="color:#000000;fill:url(#linearGradient4900);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       id="rect4892"
-       width="7.9871211"
-       height="0.98299515"
-       x="4.0185289"
-       y="1039.3713" />
-    <g
-       id="g6750"
-       style="fill:url(#linearGradient5138-5);fill-opacity:1;display:inline"
-       transform="matrix(1.6322255,0,0,1.6322255,-6.0620452,-660.70836)">
-      <rect
-         y="1044.0166"
-         x="6.1646171"
-         height="0.61263388"
-         width="4.9012837"
-         id="rect6891-5-7-3-9"
-         style="color:#000000;fill:url(#linearGradient4969);fill-opacity:1;stroke:none;stroke-width:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
-      <rect
-         y="1045.2419"
-         x="6.1646171"
-         height="0.61261296"
-         width="4.9012837"
-         id="rect6891-5-7-3-9-7"
-         style="color:#000000;fill:url(#linearGradient4891-29);fill-opacity:1;stroke:none;stroke-width:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
-      <rect
-         y="1046.4673"
-         x="6.1646171"
-         height="0.61259204"
-         width="3.063302"
-         id="rect6891-5-7-3-9-7-4"
-         style="color:#000000;fill:url(#linearGradient4925-6);fill-opacity:1;stroke:none;stroke-width:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
-    </g>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/text.svg b/svg/org.eclipse.languageserver/icons/full/obj16/text.svg
deleted file mode 100644
index 31bbd4e..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/text.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="text.svg"
-   inkscape:export-filename="C:\Users\jmietling\Documents\rect3997-9-1.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="31.999999"
-     inkscape:cx="-0.95435837"
-     inkscape:cy="4.1953582"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1241"
-     inkscape:window-height="814"
-     inkscape:window-x="341"
-     inkscape:window-y="187"
-     inkscape:window-maximized="0"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3999"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <path
-       inkscape:connector-curvature="0"
-       id="path4719"
-       d="m 14.464118,1049.2149 c -0.423701,0 -0.784673,-0.1086 -1.082887,-0.3248 -0.327307,-0.2449 -0.501742,-0.5743 -0.523298,-0.9886 -0.483034,0.8661 -1.115289,1.2992 -1.89675,1.2992 -0.706167,0 -1.268019,-0.2164 -1.685572,-0.6495 -0.417843,-0.4426 -0.637261,-1.0217 -0.658246,-1.7372 -0.02899,-0.9886 0.302696,-1.8784 0.995072,-2.6693 0.692364,-0.7909 1.523441,-1.1863 2.493226,-1.1863 0.932125,0 1.447444,0.3954 1.545972,1.1863 l 0.28047,-1.031 1.610026,0 c -0.239065,0.8381 -0.473417,1.676 -0.703042,2.5139 -0.322726,1.1959 -0.477998,2.0008 -0.465847,2.4151 0.01269,0.4331 0.174396,0.6497 0.485117,0.6497 m -1.655353,-4.4347 c -0.01354,-0.4613 -0.227442,-0.692 -0.641712,-0.692 -0.583757,0 -1.095142,0.5413 -1.534151,1.6241 -0.386941,0.9322 -0.570468,1.7372 -0.550585,2.4151 0.01905,0.6497 0.282794,0.9745 0.791232,0.9745 0.508425,0 0.980339,-0.6026 1.41577,-1.8078 0.365073,-1.0356 0.538211,-1.8737 0.519446,-2.5139"
-       style="font-size:11.05178356px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#246196;fill-opacity:1;stroke:#246196;stroke-width:0.31768805;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;font-family:AustralianFlyingCorpsStencil;-inkscape-font-specification:AustralianFlyingCorpsStencil"
-       sodipodi:nodetypes="cccscssscccccccsccscc" />
-    <g
-       transform="scale(0.93822513,1.0658423)"
-       style="font-size:10.25895119px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#246196;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:DejaVu Serif Bold Italic"
-       id="text7319">
-      <path
-         d="m 0.49347803,984.61603 0.11521283,-0.60612 0.61112894,0 4.1526711,-6.8727 1.1972116,0 1.4827391,6.8727 0.711314,0 -0.1152129,0.60612 -3.5014682,0 0.1152129,-0.60612 0.731351,0 -0.315583,-1.52782 -2.8101912,0 -0.9267119,1.52782 0.8916471,0 -0.1152128,0.60612 -2.22410857,0 m 2.73505237,-2.74006 2.3192844,0 -0.5961011,-2.86029 -1.7231833,2.86029"
-         style="font-style:italic;font-variant:normal;font-stretch:normal;fill:#246196;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold Italic;fill-opacity:1"
-         id="path7303" />
-    </g>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/unit.svg b/svg/org.eclipse.languageserver/icons/full/obj16/unit.svg
deleted file mode 100644
index b5770b7..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/unit.svg
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   viewBox="0 0 4.2333332 4.2333335"
-   version="1.1"
-   id="svg116"
-   inkscape:version="1.0.1 (c497b03c, 2020-09-10)"
-   sodipodi:docname="unit.svg"
-   inkscape:export-filename="/Users/gayanperera/Projects/eclipse.org/lsp4e/lsp4e/org.eclipse.lsp4e/icons/full/obj16/unit@2x.png"
-   inkscape:export-xdpi="192"
-   inkscape:export-ydpi="192">
-  <defs
-     id="defs110" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="36.56"
-     inkscape:cx="2.7346827"
-     inkscape:cy="8"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:document-rotation="0"
-     showgrid="true"
-     units="px"
-     inkscape:window-width="1440"
-     inkscape:window-height="795"
-     inkscape:window-x="0"
-     inkscape:window-y="23"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid145" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata113">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       style="fill:#2564bf;fill-opacity:1;stroke-width:0.264583;opacity:0.69453376"
-       id="rect1031"
-       width="2.1166666"
-       height="4.2333331"
-       x="1.0583333"
-       y="0" />
-    <rect
-       style="fill:#2564bf;stroke-width:0.244956;fill-opacity:1"
-       id="rect147"
-       width="1.5875001"
-       height="3.7041667"
-       x="1.3229166"
-       y="0.26458335" />
-    <g
-       id="g206"
-       style="fill:#ffffff">
-      <rect
-         style="fill:#ffffff;stroke-width:0.324047"
-         id="rect151"
-         width="0.79374999"
-         height="0.26458332"
-         x="1.5875001"
-         y="3.4395833" />
-      <rect
-         style="fill:#ffffff;stroke-width:0.264582"
-         id="rect151-0"
-         width="0.52916652"
-         height="0.26458332"
-         x="1.5875001"
-         y="2.9104166" />
-      <rect
-         style="fill:#ffffff;stroke-width:0.264582"
-         id="rect151-1"
-         width="0.52916676"
-         height="0.26458332"
-         x="1.5875"
-         y="2.3812499" />
-      <rect
-         style="fill:#ffffff;stroke-width:0.324046"
-         id="rect151-7"
-         width="0.79374999"
-         height="0.26458332"
-         x="1.5875"
-         y="1.8520833" />
-      <rect
-         style="fill:#ffffff;stroke-width:0.264582"
-         id="rect151-04"
-         width="0.52916676"
-         height="0.26458332"
-         x="1.5875"
-         y="1.3229166" />
-    </g>
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/value.svg b/svg/org.eclipse.languageserver/icons/full/obj16/value.svg
deleted file mode 100644
index dd43b52..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/value.svg
+++ /dev/null
@@ -1,180 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="property_obj.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3902">
-      <stop
-         style="stop-color:#5b6c89;stop-opacity:1"
-         offset="0"
-         id="stop3904" />
-      <stop
-         style="stop-color:#8392a8;stop-opacity:1"
-         offset="1"
-         id="stop3906" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3876">
-      <stop
-         style="stop-color:#a4b0c0;stop-opacity:1"
-         offset="0"
-         id="stop3878" />
-      <stop
-         style="stop-color:#b7c2d0;stop-opacity:1"
-         offset="1"
-         id="stop3880" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6799">
-      <stop
-         style="stop-color:#a6bacf;stop-opacity:1;"
-         offset="0"
-         id="stop6801" />
-      <stop
-         style="stop-color:#798da2;stop-opacity:1;"
-         offset="1"
-         id="stop6803" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3876"
-       id="linearGradient3882"
-       x1="10.499375"
-       y1="1041.8622"
-       x2="13.625428"
-       y2="1041.8622"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-4,0)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3902"
-       id="linearGradient3908"
-       x1="8.2036867"
-       y1="1046.3279"
-       x2="10.335655"
-       y2="1040.6931"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="32"
-     inkscape:cx="7.5378558"
-     inkscape:cy="7.7308252"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1600"
-     inkscape:window-height="851"
-     inkscape:window-x="0"
-     inkscape:window-y="25"
-     inkscape:window-maximized="1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3026" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <rect
-       style="fill:#ffffff;stroke:#47698f;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect3031"
-       width="4.9989586"
-       height="6.9994154"
-       x="5.499609"
-       y="4.4992514"
-       transform="translate(0,1036.3622)" />
-    <path
-       style="fill:#b7c2d0;fill-opacity:1;stroke:#b7c2d0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
-       d="m 5.5625,1043.8622 4.84375,0"
-       id="path3812-1"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:#b7c2d0;fill-opacity:1;stroke:#b7c2d0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
-       d="m 5.5625,1045.8622 4.84375,0"
-       id="path3812-1-7"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:#b7c2d0;fill-opacity:1;stroke:#b7c2d0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
-       d="m 7.50929,1041.1543 0,6.8438"
-       id="path3812-1-7-5"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:url(#linearGradient3882);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 5.5625,1041.8622 4.84375,0"
-       id="path3812"
-       inkscape:connector-curvature="0" />
-    <rect
-       style="fill:none;stroke:url(#linearGradient3908);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
-       id="rect3031-0"
-       width="4.9989586"
-       height="6.9994154"
-       x="5.499609"
-       y="1040.8615" />
-    <path
-       style="fill:none;stroke:#81a3c9;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;display:inline"
-       d="m 12.5,1041.8622 2.03125,2.0156 -2,1.9844"
-       id="path3910-0"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#47698f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
-       d="m 12.5,1040.8622 3.0625,3.0156 -3.03125,2.9844"
-       id="path3910"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#81a3c9;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;display:inline"
-       d="m 3.59375,1041.8622 -2.078125,2.0156 2.03125,1.9844"
-       id="path3910-0-3"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#47698f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;display:inline"
-       d="m 3.59375,1040.8622 -3.109375,3.0156 3.0625,2.9844"
-       id="path3910-02"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-  </g>
-</svg>
diff --git a/svg/org.eclipse.languageserver/icons/full/obj16/variable.svg b/svg/org.eclipse.languageserver/icons/full/obj16/variable.svg
deleted file mode 100644
index dd01ca8..0000000
--- a/svg/org.eclipse.languageserver/icons/full/obj16/variable.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.0 r9654"
-   sodipodi:docname="variable_view.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="31.999998"
-     inkscape:cx="7.9946714"
-     inkscape:cy="8.0787728"
-     inkscape:document-units="px"
-     inkscape:current-layer="g8159"
-     showgrid="true"
-     inkscape:window-width="1245"
-     inkscape:window-height="967"
-     inkscape:window-x="225"
-     inkscape:window-y="225"
-     inkscape:window-maximized="0"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4092" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(0,-1036.3622)">
-    <g
-       style="display:inline"
-       id="g8159"
-       transform="translate(-8.2201163,-12.904699)">
-      <text
-         xml:space="preserve"
-         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Gautami;-inkscape-font-specification:Gautami"
-         x="31.619894"
-         y="1061.2869"
-         id="text4105-1"
-         sodipodi:linespacing="125%"><tspan
-           sodipodi:role="line"
-           id="tspan4107-7"
-           x="31.619894"
-           y="1061.2869">Gautami</tspan></text>
-      <path
-         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#334c6f;fill-opacity:1;stroke:none;display:inline;font-family:Gautami;-inkscape-font-specification:Gautami"
-         d="M 9.0625 3.0625 L 8.5 3.65625 C 8.9915396 4.1738346 9.3876981 4.7867898 9.65625 5.46875 C 9.9248069 6.1507207 10.062502 6.846358 10.0625 7.5625 C 10.062502 8.2949243 9.9199241 8.9921892 9.65625 9.65625 C 9.3795601 10.346355 8.9830761 10.917969 8.46875 11.40625 L 9.0625 12.0625 C 9.6777369 11.486327 10.151695 10.791016 10.5 10 C 10.848309 9.2089858 11.031251 8.402346 11.03125 7.5625 C 11.031251 6.7291706 10.848309 5.9160204 10.5 5.125 C 10.151695 4.3339907 9.6777369 3.6354237 9.0625 3.0625 z M 1.96875 3.125 C 1.3535131 3.6979237 0.8795553 4.3964907 0.53125 5.1875 C 0.18294141 5.9785204 -1.1230469e-006 6.7916706 0 7.625 C -1.1230469e-006 8.464846 0.18294141 9.2714858 0.53125 10.0625 C 0.8795553 10.853516 1.3535131 11.548827 1.96875 12.125 L 2.5625 11.46875 C 2.0481739 10.980469 1.6516899 10.408855 1.375 9.71875 C 1.1113259 9.0546892 0.96874791 8.3574243 0.96875 7.625 C 0.96874791 6.908858 1.1064431 6.2132207 1.375 5.53125 C 1.6435519 4.8492898 2.0084604 4.2363346 2.5 3.71875 L 1.96875 3.125 z M 3.28125 5 L 4.96875 7.40625 L 3.125 9.96875 L 4.21875 9.96875 L 5.46875 8.03125 L 6.6875 9.96875 L 7.8125 9.96875 L 5.96875 7.40625 L 7.65625 5 L 6.5625 5 L 5.46875 6.75 L 4.375 5 L 3.28125 5 z M 11.96875 6.09375 L 11.96875 6.90625 L 16.03125 6.90625 L 16.03125 6.09375 L 11.96875 6.09375 z M 11.96875 8.0625 L 11.96875 8.875 L 16.03125 8.875 L 16.03125 8.0625 L 11.96875 8.0625 z "
-         transform="translate(8.2201163,1049.2669)"
-         id="text4105-1-1-4" />
-    </g>
-  </g>
-</svg>
diff --git a/target-platforms/target-platform-latest/.project b/target-platforms/target-platform-latest/.project
deleted file mode 100644
index c857e39..0000000
--- a/target-platforms/target-platform-latest/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>target-platform-latest</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>
diff --git a/target-platforms/target-platform-latest/pom.xml b/target-platforms/target-platform-latest/pom.xml
deleted file mode 100644
index deaed4e..0000000
--- a/target-platforms/target-platform-latest/pom.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<artifactId>target-platform-latest</artifactId>
-	<parent>
-		<groupId>org.eclipse.lsp4e</groupId>
-		<artifactId>parent</artifactId>
-		<version>0.13.1-SNAPSHOT</version>
-		<relativePath>../..</relativePath>
-	</parent>
-	<packaging>eclipse-target-definition</packaging>
-</project>
diff --git a/target-platforms/target-platform-latest/target-platform-latest.target b/target-platforms/target-platform-latest/target-platform-latest.target
deleted file mode 100644
index 013facb..0000000
--- a/target-platforms/target-platform-latest/target-platform-latest.target
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?>
-<target name="LSP4E Target-platform" sequenceNumber="1473749378">
-	<locations>
-		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-			<unit id="org.eclipse.mylyn.commons.notifications.feature.group" version="0.0.0"/>
-			<repository location="http://download.eclipse.org/mylyn/releases/latest"/>
-		</location>
-		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-			<unit id="org.eclipse.mylyn.wikitext" version="0.0.0"/>
-			<unit id="org.eclipse.mylyn.wikitext.markdown" version="0.0.0"/>
-			<unit id="org.eclipse.mylyn.wikitext.markdown.ui" version="0.0.0"/>
-			<repository location="https://download.eclipse.org/mylyn/docs/releases/3.0.40/"/>
-		</location>
-		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-			<unit id="org.eclipse.lsp4j" version="0.0.0"/>
-			<unit id="org.eclipse.lsp4j.jsonrpc" version="0.0.0"/>
-			<unit id="org.eclipse.lsp4j.debug" version="0.0.0"/>
-			<unit id="org.eclipse.lsp4j.jsonrpc.debug" version="0.0.0"/>
-			<repository location="https://download.eclipse.org/lsp4j/updates/releases/0.12.0/"/>
-		</location>
-		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-			<unit id="org.eclipse.xtext.xbase.lib" version="0.0.0"/>
-			<repository location="https://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.25.0/"/>
-		</location>
-		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-			<unit id="com.google.gson" version="2.8.7.v20210624-1215"/>
-			<unit id="com.google.guava" version="30.1.0.v20210127-2300"/>
-			<repository location="https://download.eclipse.org/tools/orbit/downloads/latest-R/"/>
-		</location>
-		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-			<unit id="org.eclipse.jface.text.tests" version="0.0.0"/>
-			<unit id="org.eclipse.sdk.ide" version="0.0.0"/>
-			<repository location="https://download.eclipse.org/eclipse/updates/latest/"/>
-		</location>
-	</locations>
-	<targetJRE path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
-</target>
\ No newline at end of file