code: public void start(U options) throws IOException {
      List<T> servers = new ArrayList<>();
      for (T server : getServers()) {
        try {
          server.start(options);
          servers.add(server);
        } catch (IOException e) {
          for (T started : servers) {
            started.stop();
          }
          throw e;
        }
      }
    }
docs: Starts all {@link Server}s in dependency order. If A depends on B, A is started before B.
  
  If a {@link Server} fails to start, already-started {@link Server}s will be stopped.
  
  @param options the start options