class FixStackFramesDelegate {

    public void doIncrementalRun(
            @NonNull WorkerExecutorFacade workers, @NonNull Map<File, FileStatus> changedInput)
            throws IOException {
        // We should only process (unzip and fix stack) existing jar input from classesToFix
        // If changedInput contains a folder or deleted jar we will still try to delete
        // corresponding output entry (if exists) but will do no processing
        Set<File> jarsToProcess =
                classesToFix.stream().filter(File::isFile).collect(Collectors.toSet());

        Map<File, FileStatus> inputToProcess =
                changedInput
                        .entrySet()
                        .stream()
                        .filter(
                                e ->
                                        e.getValue() == FileStatus.REMOVED
                                                || jarsToProcess.contains(e.getKey()))
                        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

        processFiles(workers, inputToProcess);
    }

    public  FixStackFramesDelegate(
            @NonNull Set<File> bootClasspath,
            @NonNull Set<File> classesToFix,
            @NonNull Set<File> referencedClasses,
            @NonNull File outFolder,
            @Nullable FileCache userCache);

}