I don't like the name.
The class should not be aware of why/when it is called. `isFirstPass` means that collectChanges know it will be called multiple times.