code: public static void removePropertyChangeListener(Object bean, String propertyName, PropertyChangeListener listener) {
          Assert.notNull(propertyName, "The property name must not be null.");
          Assert.notNull(listener, "The listener must not be null.");
          if (bean instanceof PropertyChangePublisher) {
              ((PropertyChangePublisher)bean).removePropertyChangeListener(propertyName, listener);
          }
          else {
              Class beanClass = bean.getClass();
              Method namedPCLRemover = getNamedPCLRemover(beanClass);
              if (namedPCLRemover == null)
                  throw new FatalBeanException("Could not find the bean method"
                          + "/npublic void removePropertyChangeListener(String, PropertyChangeListener);/nin bean '"
                          + bean + "'");
              try {
                  namedPCLRemover.invoke(bean, new Object[] {propertyName, listener});
              }
              catch (InvocationTargetException e) {
                  throw new FatalBeanException("Due to an InvocationTargetException we failed to remove "
                          + "a named PropertyChangeListener from bean '" + bean + "'", e);
              }
              catch (IllegalAccessException e) {
                  throw new FatalBeanException("Due to an IllegalAccessException we failed to remove "
                          + "a named PropertyChangeListener from bean '" + bean + "'", e);
              }
          }
      }
docs: Removes a named property change listener to the given JavaBean. The bean
  must provide the optional support for listening on named properties
  as described in section 7.4.5 of the
  <a href="http://java.sun.com/products/javabeans/docs/spec.html">Java Bean
  Specification</a>. The bean class must provide the method:
  <pre>
  public void removePropertyChangeHandler(String, PropertyChangeListener);
  </pre>
  
  @param bean          the bean to remove the property change listener from
  @param propertyName  the name of the observed property
  @param listener      the listener to remove
  @throws FatalBeanException
  if the property change handler cannot be removed successfully