code: @Override
      public void setProperty(String key, Object value) throws ValidationException
      {
          if (value == null) {
              throw new NullPointerException("Value for property " + key + " is null");
          }
          fireEvent(EVENT_SET_PROPERTY, key, value, true);
          setPropertyImpl(key, value);
          fireEvent(EVENT_SET_PROPERTY, key, value, false);
      }
docs: Override the same method in {@link AbstractConfiguration} to simplify the logic
  to avoid multiple events being generated. It calls {@link #clearPropertyDirect(String)}
  followed by logic to add the property including calling {@link #addPropertyDirect(String, Object)}.