private List<ContentStorage.FileInformation> listInternal(@NonNull final Folder folder, final boolean validateCache) throws IOException, IllegalArgumentException {
        final Uri dir = getFolderUri(folder, false, false, validateCache);
        if (dir == null) {
            return Collections.emptyList();
        }

        //using dir.listFiles() is FAR too slow. Thus we have to create an explicit query

        return queryDir(dir, new String[]{
                DocumentsContract.Document.COLUMN_DOCUMENT_ID,
                DocumentsContract.Document.COLUMN_DISPLAY_NAME,
                DocumentsContract.Document.COLUMN_MIME_TYPE,
                DocumentsContract.Document.COLUMN_LAST_MODIFIED,
                DocumentsContract.Document.COLUMN_SIZE,

        }, c -> fileInfoFromCursor(c, null, dir, folder));
    }
method tested on SDK21, 23, 29 and 30; both with targetSDK=29 and targetSDk=30
main/src/main/java/cgeo/geocaching/storage/DocumentContentAccessor.java