restoreOutputsFromCache will update the last modified time of the cache marker file, to make sure that the outputs of the node don't get cleaned up over time.
However this is not done transitively, so for example the outputs of the decompile step will eventually get GC'ed because nothing else is depending on it directly. We should instead try to update the last modified times of the whole dependency tree.