I20260515-1811
The perform() method mixed pm.worked() with SubMonitor.convert() on the same monitor, and called SubMonitor.convert(pm, 1) inside a loop. Both patterns corrupt progress reporting: convert() resets the monitor's remaining work, so repeated calls in a loop or after worked() discard already-reported progress. Replace pm.beginTask/worked/done and the in-loop SubMonitor.convert() calls with a single SubMonitor.convert() up front, then split() for each unit of work.