class PropertySourceChangeSupport {

    public long load(Map<String, PropertyValue> properties){
        Objects.requireNonNull(properties);
        if(changeSupport==ChangeSupport.SUPPORTED) {
            Set<String> changedKeys = calculateChangedKeys(this.valueMap, properties);
            if(!changedKeys.isEmpty()) {
                this.valueMap = properties;
                version.incrementAndGet();
                fireListeners(changedKeys);
            }
        } else {
            if(!properties.equals(this.valueMap)){
                this.valueMap = properties;
                version.incrementAndGet();
            }
        }
        return version.get();
    }

    public  PropertySourceChangeSupport(ChangeSupport changeSupport,
                                       PropertySource propertySource);

}