docs: public ScanSpecPathMatch dirWhitelistMatchStatus(final String relativePath) {
          // In blacklisted path
          if (pathWhiteBlackList.isBlacklisted(relativePath)) {
              // The directory is blacklisted.
              return ScanSpecPathMatch.HAS_BLACKLISTED_PATH_PREFIX;
          }
          if (pathPrefixWhiteBlackList.isBlacklisted(relativePath)) {
              // An prefix of this path is blacklisted.
              return ScanSpecPathMatch.HAS_BLACKLISTED_PATH_PREFIX;
          }
  
          if (pathWhiteBlackList.whitelistIsEmpty() && classPackagePathWhiteBlackList.whitelistIsEmpty()) {
              // If there are no whitelisted packages, the root package is whitelisted
              return relativePath.isEmpty() || relativePath.equals("/") ? ScanSpecPathMatch.AT_WHITELISTED_PATH
                      : ScanSpecPathMatch.HAS_WHITELISTED_PATH_PREFIX;
          }
  
          // At whitelisted path
          if (pathWhiteBlackList.isSpecificallyWhitelistedAndNotBlacklisted(relativePath)) {
              // Reached a whitelisted path
              return ScanSpecPathMatch.AT_WHITELISTED_PATH;
          }
          if (classPackagePathWhiteBlackList.isSpecificallyWhitelistedAndNotBlacklisted(relativePath)) {
              // Reached a package containing a specifically-whitelisted class
              return ScanSpecPathMatch.AT_WHITELISTED_CLASS_PACKAGE;
          }
  
          // Descendant of whitelisted path
          if (pathPrefixWhiteBlackList.isSpecificallyWhitelisted(relativePath)) {
              // Path prefix matches one in the whitelist
              return ScanSpecPathMatch.HAS_WHITELISTED_PATH_PREFIX;
          }
  
          // Ancestor of whitelisted path
          if (relativePath.equals("/")) {
              // The default package is always the ancestor of whitelisted paths (need to keep recursing)
              return ScanSpecPathMatch.ANCESTOR_OF_WHITELISTED_PATH;
          }
          if (pathWhiteBlackList.whitelistHasPrefix(relativePath)) {
              // relativePath is an ancestor (prefix) of a whitelisted path
              return ScanSpecPathMatch.ANCESTOR_OF_WHITELISTED_PATH;
          }
          if (classfilePathWhiteBlackList.whitelistHasPrefix(relativePath)) {
              // relativePath is an ancestor (prefix) of a whitelisted class' parent directory
              return ScanSpecPathMatch.ANCESTOR_OF_WHITELISTED_PATH;
          }
  
          // Not in whitelisted path
          return ScanSpecPathMatch.NOT_WITHIN_WHITELISTED_PATH;
      }