Better fix changed attributes

Previous PR (https://github.com/Versal/versal-gadget-launchers/pull/29) was not enough, this fixes some corner cases better (see tests)
Also, this method is context-free. Is there any reason to keep it on the prototype? ("consistency" counts).