I'd prefer to have this passed as a parameter, rather than side-effecting here, and using it inside `addCompletion`. Both `wordAtPosition` and `wordStart` don't need to be passed as arguments, they are visible in scope, so I wonder if we could avoid passing them around. I see that the special case below needs to pass different values for them, so in the worst case we can leave them in place, and add `contextType`