m_Editors[i].addPropertyChangeListener(m_Frame);
  synchronized void wasModified(PropertyChangeEvent evt) {    //    System.err.println("wasModified");    if (evt.getSource() instanceof PropertyEditor) {      PropertyEditor editor = (PropertyEditor) evt.getSource();      for (int i = 0 ; i < m_Editors.length; i++) {	if (m_Editors[i] == editor) {	  PropertyDescriptor property = m_Properties[i];	  Object value = editor.getValue();	  m_Values[i] = value;	  Method setter = property.getWriteMethod();	  try {	    Object args[] = { value };	    args[0] = value;	    setter.invoke(m_Target, args);	  } catch (InvocationTargetException ex) {	    if (ex.getTargetException()		instanceof PropertyVetoException) {	      System.err.println("WARNING: Vetoed; reason is: " 				 + ex.getTargetException().getMessage());	    } else {	      System.err.println("InvocationTargetException while updating " 				 + property.getName());	    }	  } catch (Exception ex) {	    System.err.println("Unexpected exception while updating " 		  + property.getName());	  }	  if (m_Views[i] != null && m_Views[i] instanceof PropertyPanel) {	    //System.err.println("Trying to repaint the property canvas");	    m_Views[i].repaint();	    revalidate();	  }	  break;	}      }    }    // Now re-read all the properties and update the editors    // for any other properties that have changed.    for (int i = 0; i < m_Properties.length; i++) {      Object o;      try {	Method getter = m_Properties[i].getReadMethod();	Object args[] = { };	o = getter.invoke(m_Target, args);      } catch (Exception ex) {	o = null;      }      if (o == m_Values[i] || (o != null && o.equals(m_Values[i]))) {	// The property is equal to its old value.	continue;      }      m_Values[i] = o;      // Make sure we have an editor for this property...      if (m_Editors[i] == null) {	continue;      }      // The property has changed!  Update the editor.      m_Editors[i].setValue(o);      if (m_Views[i] != null) {	//System.err.println("Trying to repaint " + (i + 1));	m_Views[i].repaint();      }    }    // Make sure the target bean gets repainted.    if (Beans.isInstanceOf(m_Target, Component.class)) {      ((Component)(Beans.getInstanceOf(m_Target, Component.class))).repaint();    }  }