docs: private List<Class<?>> archiveClasses(JarFile jar, List<Class<?>> list)
      {
          // Accumulate and return a list of classes in this JAR file
          ClassLoader loader = ClassUtils.getContextClassLoader();
          if (loader == null)
          {
              loader = this.getClass().getClassLoader();
          }
          Enumeration<JarEntry> entries = jar.entries();
          while (entries.hasMoreElements())
          {
              JarEntry entry = entries.nextElement();
              if (entry.isDirectory())
              {
                  continue; // This is a directory
              }
              String name = entry.getName();
              if (name.startsWith("META-INF/"))
              {
                  continue; // Attribute files
              }
              if (!name.endsWith(".class"))
              {
                  continue; // This is not a class
              }
  
              DataInputStream in = null;
              boolean couldContainAnnotation = false;
              try
              {
                  in = new DataInputStream(jar.getInputStream(entry));
                  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 " + name
                              + " for annotations");
                  }
              }
              finally
              {
                  if (in != null)
                  {
                      try
                      {
                          in.close();
                      }
                      catch (IOException e)
                      {
                          // No Op
                      }
                  }
              }
  
              if (couldContainAnnotation)
              {
                  name = name.substring(0, name.length() - 6); // Trim ".class"
                  Class<?> clazz = null;
                  try
                  {
                      clazz = loader.loadClass(name.replace('/', '.'));
                  }
                  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);
                  }
              }
          }
          return list;
  
      }