i'm not 100% sure if this explains everything, but it looks like this scenario may be covered in this section of the implicit open existentials evolution doc. seems like the as any P type casts will suppress implicit opening of existentials, which is presumably why you get the self-conformance error in this case. parenthesizing the cast disables that suppression mechanism so you get back the implicit opening behavior.