in src/scala/io/bazel/rules_scala/jmh_support/BenchmarkGenerator.scala [84:93]
private def listFilesRecursively(root: Path)(pred: Path => Boolean): List[Path] = {
def loop(fs0: List[Path], files: List[Path]): List[Path] = fs0 match {
case f :: fs if Files.isDirectory(f) => loop(fs ++ listFiles(f), files)
case f :: fs if pred(f) => loop(fs, f :: files)
case _ :: fs => loop(fs, files)
case Nil => files.reverse
}
loop(root :: Nil, Nil)
}