void (final ServerConnector.ConnectionCallback<D> callback) { final ServerRuntimeInstance<D> instance = myRuntimeInstance; if (instance != null) { callback.connected(instance); return; } setStatus(ConnectionStatus.CONNECTING); myConnector.connect(new ServerConnector.ConnectionCallback<>() { @Override public void connected(@NotNull ServerRuntimeInstance<D> instance) { setStatus(ConnectionStatus.CONNECTED); myRuntimeInstance = instance; setupProjectListener(); callback.connected(instance); } @Override public void errorOccurred(@NotNull @Nls String errorMessage) { setStatus(ConnectionStatus.DISCONNECTED, errorMessage); myRuntimeInstance = null; callback.errorOccurred(errorMessage); } }); }