Originally when DiffingPluginWrapper was written it appeared that the broccoli plugins don't change their outputPaths, but we came across several that do (for example mergeTrees, replace plugins).
These outputPaths become inputPaths for our DiffingBroccoliPlugins. The mutability of these inputPaths is causing us to throw ENOENT while dirty checking the filesystem because the TreeDiffer (used by DiffingPluginWrapper that wraps our DiffingBroccoliPlugins), expects that path to be immutable.
In order for us to be fully compatible with existing plugins we need to work around this issue by not tying a tree differ to a path, but instead provide the path to be dirty-checked when calling.
That means to move the path declaration from TreeDiffer constructor to TreeDiffer#diffTree() method.