private void sendCopyStatus(final Consumer<FolderProcessStatus> statusListener, final ContentStorage.FileInformation fi, final int filesCopied, final int dirsCopied, final ImmutablePair<Integer, Integer> sourceCopyCount) {
        if (statusListener == null) {
            return;
        }
        statusListener.accept(new FolderProcessStatus(fi, filesCopied, dirsCopied, sourceCopyCount == null ? -1 : sourceCopyCount.left, sourceCopyCount == null ? -1 : sourceCopyCount.right));
    }
copyAll First Pass: collect all files to copy, create target folder for each file, mark source folders to keep on move (if target is in source)
returns in left the list of files. Returns in right the files/dirs found in source for copying
main/src/main/java/cgeo/geocaching/storage/FolderUtils.java