Separate pre-processing and writing of classes to separate steps.
Fire off each pre-processor step into an Executor.
Waits for pre-process to finish.
Fires off writing classes into an Executor.
Makes ClassesProcessor.mapRootClasses synchronized due to LambdaProcessor adding classes during pre-processing. Not ideal but no real simple way to fix that..
Makes Exprent.inferredLambdaTypes ThreadLocal.
Adds a new ResultSaver, Thread-safe merge of ConsoleDecompiler and SingleFileSaver
Changes:
ClassesProcessor.mapRootClasses
synchronized due to LambdaProcessor adding classes during pre-processing. Not ideal but no real simple way to fix that..Exprent.inferredLambdaTypes
ThreadLocal.ConsoleDecompiler
andSingleFileSaver