I think it's worth keeping in mind that module selectors, especially in member position, are basically meant for two situations:
-
You are machine-generating code and want to be extremely defensive against possible collisions, even at the cost of readability.
-
You are working around a known conflict between two APIs.
I submit that, in both of these circumstances, we don't actually care very much about APIs reading "naturally". In the first case, the code is not primarily meant for human consumption; in the second, the API design has already "failed" so dramatically that the same type has two members with the same name but different behavior. It's better in these scenarios to focus on precision—making it clear that (a) a module selector is being used and (b) what it is being applied to—rather than reading like a sentence.