Check that private properties originate in the same declaration

We used to assume that private properties that were not the same symbol are not compatible. In fact, this is false because of the way generic instantiation works. It is possible that a private symbol might be copied due to an instantiation, but still originate in the same declaration. In this case, they should be considered compatible.