if the property is declared in a separate module, then the module can be recompiled separately from the module where the smartcast is applied, which could change the property implementation in a way that would be incompatible with the basic guarantee of the smart cast