This right here indicates that you are not actually enforcing the "is a proper subtype" rule, because `B` and `A` can't both be proper subtypes of each other.