@mmcdara Incorrectly describing the double-underscore as a means to "index a symbol by another symbol" is not just incorrect here; it confuses the whole issue.
The double-underscore syntax produces a name which renders as subscripted when pretty-printed, by design. But the central purpose of the double-underscore syntax is that it is not indexing.
The main purpose of the double-underscore syntax is to provide an alternate mechanism for subscripting, without the name depending upon (or being mutable with respect to) the subscript.
The way to get an indexed name is to index into a name, by making an indexed reference to it. The syntax for indexing is available via square brackets.
Subscripting is not the same as indexing.
It happens to be the case that indexed names pretty-print as subscripted names. That is a historical feature of Maple, which works well. But it does not mean that all subscripted names are indexed.
The alternate mechanism for creating names which pretty-print as subscripted -- ie. double-underscore -- was introduced so that people could use expressions that contained both the basename as well as the subscripted names without functional collision or interference, and indeed without any programmatic dependence (eg. relation to the basename, mutability of the subscript, or equivalence to the indexed name which happens to pretty-print similarly). For example, using x alongside the indexed name x in calls to solve, dsolve, etc, is problematic, and so one may safely use x alongside x__0 instead.
Some people have now innappropriately conflated the two mechanisms for subscripting. Some people are now innappropriately expecting that double-underscore subscripted names act as if such names depended programmatically upon their subscripts. That is directly contrary to their very design and intended purpose.