/**
   * Removes the PropertyChangeListener from the internal list. If the PropertyChangeListener is not
   * on the list, nothing is done.
   *
   * @see #addPropertyChangeListener
   * @param listener The PropertyChangeListener.
   */
  public void removePropertyChangeListener(PropertyChangeListener listener) {
    if (listener == null) throw new NullPointerException("listener");
    if (changes_ != null) changes_.removePropertyChangeListener(listener); // @CRS

    // must call the parents change listener since it is
    // in a different package.
    super.removePropertyChangeListener(listener);
  }
  /**
   * Adds a PropertyChangeListener. The specified PropertyChangeListener's <b>propertyChange</b>
   * method is called each time the value of any bound property is changed.
   *
   * @see #removePropertyChangeListener
   * @param listener The PropertyChangeListener.
   */
  public void addPropertyChangeListener(PropertyChangeListener listener) {
    if (listener == null) throw new NullPointerException("listener");
    if (changes_ == null) changes_ = new PropertyChangeSupport(this); // @CRS
    changes_.addPropertyChangeListener(listener);

    // must call the parents change listener since it is
    // in a different package.
    super.addPropertyChangeListener(listener);
  }