docs: private static void addBundleFile(final Object bundlefile, final Set<Object> path,
              final ClassLoader classLoader, final ClasspathOrder classpathOrderOut, final ScanSpec scanSpec,
              final LogNode log) {
          // Don't get stuck in infinite loop
          if (bundlefile != null && path.add(bundlefile)) {
              // type File
              final Object basefile = ReflectionUtils.getFieldVal(bundlefile, "basefile", false);
              if (basefile != null) {
                  boolean foundClassPathElement = false;
                  for (final String fieldName : FIELD_NAMES) {
                      final Object fieldVal = ReflectionUtils.getFieldVal(bundlefile, fieldName, false);
                      foundClassPathElement = fieldVal != null;
                      if (foundClassPathElement) {
                          // We found the base file and a classpath element, e.g. "bin/"
                          classpathOrderOut.addClasspathEntry(basefile.toString() + "/" + fieldVal.toString(),
                                  classLoader, scanSpec, log);
                          break;
                      }
                  }
  
                  if (!foundClassPathElement) {
                      // No classpath element found, just use basefile
                      classpathOrderOut.addClasspathEntry(basefile.toString(), classLoader, scanSpec, log);
                  }
  
              }
              addBundleFile(ReflectionUtils.getFieldVal(bundlefile, "wrapped", false), path, classLoader,
                      classpathOrderOut, scanSpec, log);
              addBundleFile(ReflectionUtils.getFieldVal(bundlefile, "next", false), path, classLoader,
                      classpathOrderOut, scanSpec, log);
          }
      }