Because want to see that scenarios exact update cost, i think the fragility can be tolerated here,.

Yes, currently, case 1 is unavoidable if one forgets to update getHeapCost().