code: public void listFiles(File directory, String indent) {
  
      directory = validateDirectory(directory);
      indent = Optional.ofNullable(indent).filter(StringUtils::hasText).orElse(StringUtils.EMPTY_STRING);
  
      printDirectoryName(indent, directory);
  
      String directoryContentIndent = buildDirectoryContentIndent(indent);
  
      stream(sort(nullSafeArray(directory.listFiles(), File.class))).forEach(file -> {
        if (FileSystemUtils.isDirectory(file)) {
          listFiles(file, directoryContentIndent);
        }
        else {
          printFileName(directoryContentIndent, file);
        }
      });
    }
docs: Lists the contents of the given {@link File directory} displayed from the given {@link String indent}.
  
  @param directory {@link File} referring to the directory for which the contents will be listed.
  @param indent {@link String} containing the characters of the indent in which to begin the view
  of the directory hierarchy/tree.
  @throws IllegalArgumentException if the given {@link File} is not a valid directory.
  @see #validateDirectory(File)
  @see java.io.File