code: protected PropertyChangeEvent newPropertyChangeEvent(String propertyName, Object oldValue, Object newValue) {
      if (isEventDispatchEnabled()) {
        if (vetoableChangeSupport.hasListeners(propertyName) || propertyChangeSupport.hasListeners(propertyName)) {
          return new PropertyChangeEvent(this, propertyName, oldValue, newValue);
        }
      }
  
      return this.propertyChangeEvent;
    }
docs: Creates a new instance of the PropertyChangeEvent initialized with this Bean as the source as well as the
  name of the property that is changing along with the property's old and new values.  A PropertyChangeEvent
  will be created only if event dispatching to registered listeners is enabled and there are either
  PropertyChangeListeners or VetoableChangeListeners registered on this Bean.
  
  @param propertyName a String value specifying the name of the property on this Bean that is being changed.
  @param oldValue an Object containing the old value of the specified property.
  @param newValue an Object containing the new value for the specified property.
  @return a PropertyChangeEvent for this Bean specifying the name of the property changing along with the
  property's old and new value.
  @see java.beans.PropertyChangeEvent