/** @since servlet-api-3.0 */
    @Override
    public ServletRegistration.Dynamic addServlet(
        String servletName, Class<? extends Servlet> servletClass) {
      if (!isStarting()) throw new IllegalStateException();

      if (servletName == null || "".equals(servletName.trim()))
        throw new IllegalStateException("Missing servlet name");

      if (!_enabled) throw new UnsupportedOperationException();

      final ServletHandler handler = ServletContextHandler.this.getServletHandler();
      ServletHolder holder = handler.getServlet(servletName);
      if (holder == null) {
        // new servlet
        holder = handler.newServletHolder(Source.JAVAX_API);
        holder.setName(servletName);
        holder.setHeldClass(servletClass);
        handler.addServlet(holder);
        return dynamicHolderAdded(holder);
      }

      // complete a partial registration
      if (holder.getClassName() == null && holder.getHeldClass() == null) {
        holder.setHeldClass(servletClass);
        return holder.getRegistration();
      } else return null; // existing completed registration for servlet name
    }