private List<Song> listSongs(File directory) {
    ArrayList<Song> ret = new ArrayList<>();

    if (!directory.exists()) {
        System.out.println("Directory does not exist: " + directory);
        return ret;
    }

    File[] files = directory.listFiles();
    if (files == null) return ret;

    for (File file : files) {
        if (file.isDirectory()) {
            ret.addAll(listSongs(file));
        } else {
            Song song = tryToReadSong(file);
            if (song == null) continue;
            ret.add(song);
        }
    }
    return ret;
}

        
main