docs: public synchronized void stop() throws DatastoreEmulatorException {
      // We intentionally don't check the internal state. If people want to try and stop the server
      // multiple times that's fine.
      stopEmulatorInternal();
      if (state != State.STOPPED) {
        state = State.STOPPED;
        if (projectDirectory != null) {
          try {
            Process process =
                new ProcessBuilder("rm", "-r", projectDirectory.getAbsolutePath()).start();
            if (process.waitFor() != 0) {
              throw new IOException(
                  "Temporary project directory deletion exited with " + process.exitValue());
            }
          } catch (IOException e) {
            throw new IllegalStateException("Could not delete temporary project directory", e);
          } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            throw new IllegalStateException("Could not delete temporary project directory", e);
          }
        }
      }
    }