{"ScriptPreparationCode":"var element = document.getElementById(\u0022foo\u0022);\r\n\r\nclass Observed {\r\n constructor(onChange) {\r\n this._onChange = onChange;\r\n }\r\n\r\n get value() {\r\n return this._val;\r\n }\r\n\r\n set value(val) {\r\n if (this._val !== val) {\r\n this._val = val;\r\n this._onChange(this._val);\r\n }\r\n }\r\n}\r\n\r\nvar obs = new Observed(async val =\u003E {\r\n element.setAttribute(\u0022visibility\u0022, \u0022hidden\u0022);\r\n});\r\nobs.value = 5;\r\n\r\nvar val = 5;","TestCases":[{"Name":"Vanilla stay same","Code":"val = val;\r\nelement.setAttribute(\u0022visibility\u0022, \u0022hidden\u0022);","IsDeferred":false},{"Name":"Vanilla change","Code":"val\u002B\u002B;\r\nelement.setAttribute(\u0022visibility\u0022, \u0022hidden\u0022);","IsDeferred":false},{"Name":"Observed stay same","Code":"obs.value = obs.value;","IsDeferred":false},{"Name":"Observed change","Code":"obs.value\u002B\u002B;","IsDeferred":false}]}