Source:
public void start() throws IOException { Set<IPath> filesToReconnect = Collections.emptySet(); if (this.languageServer != null) { if (isActive()) { return; } else { filesToReconnect = new HashSet(this.connectedFiles.keySet()); stop(); } } try { this.lspStreamProvider.start(); LanguageClient client = new LanguageClient() { private LSPDiagnosticsToMarkers diagnosticHandler = new LSPDiagnosticsToMarkers(project); @Override public void telemetryEvent(Object object) { } @Override public CompletableFuture<Void> showMessageRequest(ShowMessageRequestParams requestParams) { return ServerMessageHandler.showMessageRequest(requestParams); } @Override public void showMessage(MessageParams messageParams) { ServerMessageHandler.showMessage(messageParams); } @Override public void publishDiagnostics(PublishDiagnosticsParams diagnostics) { this.diagnosticHandler.accept(diagnostics); } @Override public void logMessage(MessageParams message) { ServerMessageHandler.logMessage(message); } }; ExecutorService executorService = Executors.newCachedThreadPool(); Launcher<LanguageServer> launcher = LSPLauncher.createClientLauncher(client, this.lspStreamProvider.getInputStream(), this.lspStreamProvider.getOutputStream(), executorService, consumer -> ( message -> { consumer.consume(message); logServerError(message); })); this.languageServer = launcher.getRemoteProxy(); this.launcherFuture = launcher.startListening(); InitializeParams initParams = new InitializeParams(); initParams.setRootPath(project.getLocation().toFile().getAbsolutePath()); String name = "Eclipse IDE"; if (Platform.getProduct() != null) { name = Platform.getProduct().getName(); } initParams.setClientName(name); initParams.setCapabilities(new ClientCapabilities()); initParams.setInitializationOptions(this.lspStreamProvider.getInitializationOptions()); initializeFuture = languageServer.initialize(initParams).thenApply(res -> { initializeResult = res; return res;}); for (IPath fileToReconnect : filesToReconnect) { connect(fileToReconnect); } } catch (Exception ex) { LanguageServerPlugin.logError(ex); stop(); } }

Target:
public void start() throws IOException { Set<IPath> filesToReconnect = Collections.emptySet(); if (this.languageServer != null) { if (isActive()) { return; } else { filesToReconnect = new HashSet(this.connectedFiles.keySet()); stop(); } } try { this.lspStreamProvider.start(); LanguageClient client = new LanguageClient() { private LSPDiagnosticsToMarkers diagnosticHandler = new LSPDiagnosticsToMarkers(project); @Override public void telemetryEvent(Object object) { } @Override public CompletableFuture<Void> showMessageRequest(ShowMessageRequestParams requestParams) { return ServerMessageHandler.showMessageRequest(requestParams); } @Override public void showMessage(MessageParams messageParams) { ServerMessageHandler.showMessage(messageParams); } @Override public void publishDiagnostics(PublishDiagnosticsParams diagnostics) { this.diagnosticHandler.accept(diagnostics); } @Override public void logMessage(MessageParams message) { ServerMessageHandler.logMessage(message); } }; ExecutorService executorService = Executors.newCachedThreadPool(); Launcher<LanguageServer> launcher = LSPLauncher.createClientLauncher(client, this.lspStreamProvider.getInputStream(), this.lspStreamProvider.getOutputStream(), executorService, consumer -> ( message -> { consumer.consume(message); logServerError(message); })); this.languageServer = launcher.getRemoteProxy(); this.launcherFuture = launcher.startListening(); InitializeParams initParams = new InitializeParams(); initParams.setRootPath(project.getLocation().toFile().getAbsolutePath()); String name = "Eclipse IDE"; if (Platform.getProduct() != null) { name = Platform.getProduct().getName(); } initParams.setClientName(name); initParams.setCapabilities(new ClientCapabilities()); initParams.setInitializationOptions(this.lspStreamProvider.getInitializationOptions(initParams.getRootPath())); initializeFuture = languageServer.initialize(initParams).thenApply(res -> { initializeResult = res; return res;}); for (IPath fileToReconnect : filesToReconnect) { connect(fileToReconnect); } } catch (Exception ex) { LanguageServerPlugin.logError(ex); stop(); } }