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;
      }
    }
  }
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 ; } } }
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