code: public synchronized Servlet removeServletByAlias(String alias) {
          final boolean destroy = true;
  
          Servlet servlet = this.aliasMap.remove(alias);
          this.container.removeContextRoot(alias);
  
          ServletHandler handler = this.servletMap.remove(servlet);
          if (handler != null) {
              updateServletArray();
              if (destroy) {
                  handler.destroy();
              }
          } else {
              throw new IllegalArgumentException("Servlet is not registered: " + servlet);
          }
  
          return servlet;
      }
docs: IBM: there was a (reliable) failure for double-unregister of a servlet without
  this method: the compliance test (TC12) unregisters via an alias.
  Calling getServletByAlias separately from removeServlet left a window
  for a double remove. Do the check atomically (and more directly) here instead.
  
  @param alias
  @return removed/destroyed Servlet.