* Name this protocol to match usage
It would have been possible here to change the bound of the TypeVar
on line 495 to 'Shape', however I've opted to change the names of
the definitions so that they match the later (similar) definitions
of this protocol.
* Fix example generic class name
I'm guessing this was just a copy/pasta error or similar; there is
no generic class named 'Foo' which is in scope here, however there
is a 'Bar' that has just been defined and isn't yet used.
Thanks to Eric Traut who tested all the code examples in Pyright and
raised implementation concerns about ``Self`` type in aliases.
I ran into implementation issues in Pyre too. This is because Pyre
preprocesses things like ``Self`` in an early phase and does alias
resolution in a later phase. Mixing the two would lead to a lot of
hacks.