That creates a dependency from PropertyValueSnak on Property, and introduces a cycle into the dependency graph. This class depends on the notion there is a type of entity that can be identified as 'property', which is fine. Also note how using a constant does not help in refactoring at all, since we cannot simply change the string id, as it is part of the public API.