code: @Override
      public final synchronized void addPropertyChangeListener(
              PropertyChangeListener listener) {
          if (listener == null) {
              return;
          }
          if (changeSupport == null) {
              changeSupport = createPropertyChangeSupport(this);
          }
          changeSupport.addPropertyChangeListener(listener);
      }
docs: Adds a PropertyChangeListener to the listener list. The listener is registered for all bound
  properties of this class.<p>
  
  If listener is {@code null}, no exception is thrown and no action is performed.
  
  @param listener the PropertyChangeListener to be added
  
  @see #removePropertyChangeListener(PropertyChangeListener)
  @see #removePropertyChangeListener(String, PropertyChangeListener)
  @see #addPropertyChangeListener(String, PropertyChangeListener)
  @see #getPropertyChangeListeners()