docs: protected ClassLoader getClassLoader()
      {
          final ClassLoader parentClassLoader = Thread.currentThread().getContextClassLoader();
          final List<URL> jarFileUrls = new ArrayList<>();
  
          if (libPath == null || libPath.length == 0)
          {
              return parentClassLoader;
          }
  
          for (String libPathEntry : libPath)
          {
              final File libDir = new File(libPathEntry);
              if (!libDir.isDirectory())
              {
                  continue;
              }
  
              final File[] jarFiles = libDir.listFiles(new FilenameFilter()
              {
                  public boolean accept(File dir, String name)
                  {
                      return name.endsWith(".jar");
                  }
              });
              if (jarFiles != null)
              {
  
                  for (File jarFile : jarFiles)
                  {
                      try
                      {
                          jarFileUrls.add(jarFile.toURI().toURL());
                      }
                      catch (MalformedURLException e)
                      {
                          // should not happen
                      }
                  }
              }
              else
              {
                  logger.error("Didn't find any jar files at " + libDir.getAbsolutePath());
              }
          }
  
          if (jarFileUrls.isEmpty())
          {
              return parentClassLoader;
          }
  
          return new URLClassLoader(jarFileUrls.toArray(new URL[jarFileUrls.size()]), parentClassLoader);
      }