docs: private List<ClassNameWrapper> getLocalClassNames (String packageName) {
      
          if (packageName == null || packageName.equals("")) {
              return Collections.emptyList();
          }
          
          String folder = packageName.replace('.', '/');
          URL local = AddOnLoader.class.getClassLoader().getResource(folder);
          if (local == null) {
              return Collections.emptyList();
          }
          String jarFile = null;
          if (local.getProtocol().equals("jar")) {
              jarFile = local.toString().substring("jar:".length());
              int pos = jarFile.indexOf("!");
              jarFile = jarFile.substring(0, pos);
              
              try {
                  // ZAP: Changed to take into account the package name
                  return getJarClassNames(this.getClass().getClassLoader(), new File(new URI(jarFile)), packageName);
              } catch (URISyntaxException e) {
              	logger.error(e.getMessage(), e);
              }
          } else {
              try {
                  // ZAP: Changed to pass a FileFilter (ClassRecurseDirFileFilter)
                  // and to pass the "packageName" with the dots already replaced.
                  return parseClassDir(this.getClass().getClassLoader(), new File(new URI(local.toString())),
                                packageName.replace('.', File.separatorChar),
                                new ClassRecurseDirFileFilter(true));
              } catch (URISyntaxException e) {
              	logger.error(e.getMessage(), e);
              }
          }
          return Collections.emptyList();
      }