Yeah, I already noted why I nested the FooVariant<X> instances in tuples rather than leaving them at the top-level of the subtype relation.

I personally do not mind the use of `<:` for `subtype-of`, but I figure others might prefer it written out, especially since its occurring so close to an occurrence of the `>` character, which can make the `<:` hard to parse.  (I briefly considered trying to plug in another operator to represent `subtype-of`, but I don't think there's a good one made solely of ASCII characters, and I don't think people would be happy if we threw in higher unicode codepoints for this little comment...)