Yes that sounds right.
> 2. insert "a" on line 2, before "_"
> 3. backspace
> 4. insert "a" on line 2, before "_", again
> 5. inspect text property of "_", and notice it has hilit-chg property
> even though it hasn't been changed.
IIUC the property is added at step 3 to remember that something was
removed here. So I guess what you're saying is that we could remove
that property at step 4 since the insertion makes it redundant.
Stefan