I think in other places we cheat a little and don't bother to addRef() for listeners that are exactly tracking the current document or focused editor -- since as long as there's an editor we can be certain the Document isn't going away.  If we did that here too it would simplify the code a bit.  But the way it is here seems fine too... your call.