docs: private void webClasses(ExternalContext externalContext, String prefix,
              List<Class<?>> list)
      {
  
          ClassLoader loader = getClassLoader();
  
          Set<String> paths = externalContext.getResourcePaths(prefix);
          if(paths == null)
          {
              return; //need this in case there is no WEB-INF/classes directory
          }
          if (log.isLoggable(Level.FINEST))
          {
              log.finest("webClasses(" + prefix + ") - Received " + paths.size()
                      + " paths to check");
          }
  
          String path = null;
  
          if (paths.isEmpty())
          {
              if (log.isLoggable(Level.WARNING))
              {
                  log
                          .warning("AnnotationConfigurator does not found classes "
                                  + "for annotations in "
                                  + prefix
                                  + " ."
                                  + " This could happen because maven jetty plugin is used"
                                  + " (goal jetty:run). Try configure "
                                  + SCAN_PACKAGES + " init parameter "
                                  + "or use jetty:run-exploded instead.");
              }
          }
          else
          {
              for (Object pathObject : paths)
              {
                  path = (String) pathObject;
                  if (path.endsWith("/"))
                  {
                      webClasses(externalContext, path, list);
                  }
                  else if (path.endsWith(".class"))
                  {
                      DataInputStream in = null;
                      boolean couldContainAnnotation = false;
                      try
                      {
                          in = new DataInputStream(externalContext
                                  .getResourceAsStream(path));
                          couldContainAnnotation = _filter
                                  .couldContainAnnotationsOnClassDef(in,
                                          byteCodeAnnotationsNames);
                      }
                      catch (IOException e)
                      {
                          // Include this class - we can't scan this class using
                          // the filter, but it could be valid, so we need to
                          // load it using the classLoader. Anyway, log a debug
                          // message.
                          couldContainAnnotation = true;
                          if (log.isLoggable(Level.FINE))
                          {
                              log.fine("IOException when filtering class " + path
                                      + " for annotations");
                          }
                      }
                      finally
                      {
                          if (in != null)
                          {
                              try
                              {
                                  in.close();
                              }
                              catch (IOException e)
                              {
                                  // No Op
                              }
                          }
                      }
  
                      if (couldContainAnnotation)
                      {
                          //Load it and add it to list for later processing
                          path = path.substring(WEB_CLASSES_PREFIX.length()); // Strip prefix
                          path = path.substring(0, path.length() - 6); // Strip suffix
                          path = path.replace('/', '.'); // Convert to FQCN
  
                          Class<?> clazz = null;
                          try
                          {
                              clazz = loader.loadClass(path);
                          }
                          catch (NoClassDefFoundError e)
                          {
                              // Skip this class - we cannot analyze classes we cannot load
                          }
                          catch (Exception e)
                          {
                              // Skip this class - we cannot analyze classes we cannot load
                          }
                          if (clazz != null)
                          {
                              list.add(clazz);
                          }
                      }
                  }
              }
          }
      }