In reply to this post:

@christi3k since all RealAs are ProtoAs, all Optional[RealA]s should be Optional[ProtoA]s, no? Which is why (it seems to me that) RealB conforms to ProtoB, because any value assigned to a RealB's a member is of a type allowed by ProtoB's a member.

¯\_(ツ)_/¯

Yeah, I also (clearly) struggle with this sort of thing.