Please convert the monitor to a SubMonitor and then split up appropriate work units. As is we just pass the original monitor to the discardChange(*) method which implies that the monitor may be marked as completed on just one iteration which leads to incorrect progress reporting. :(