class PropertyValue implements Serializable, Iterable<PropertyValue> {

    public PropertyValue setValue(String value) {
        checkImmutable();
        if(!Objects.equals(this.value, value)) {
            this.value = value;
            incrementVersion();
        }
        return this;
    }

    public  PropertyValue(String key);
    protected  PropertyValue(String key, String value);

}