And so what happens, well this type checks just fine because X is in class A. X is of type A and this argument is also of type A. So if self-type if having an argument type self-type is ever going to work it has to work for this example where the two static types of the, of the dispatched of this parameter and the former parameter are exactly the same. 