Don't use hasChanges outside of a performBlock on non-confinement type contexts