code: protected void registerEditorsWithSubClasses(PropertyEditor editor, Class<? extends BioPAXElement> domain) {
  
          for (Class<? extends BioPAXElement> c : classToEditorMap.keySet())
          {
              if (domain.isAssignableFrom(c)) {
                  //workaround for participants - can be replaced w/ a general
                  // annotation based system. For the time being, I am just handling it
                  //as a special case
                  if ((editor.getProperty().equals("PARTICIPANTS") &&
                          (conversion.class.isAssignableFrom(c) || control.class.isAssignableFrom(c))) ||
                          (editor.getProperty().equals("participant") &&
                                  (Conversion.class.isAssignableFrom(c) || Control.class.isAssignableFrom(c)))) {
                      if (log.isDebugEnabled()) {
                          log.debug("skipping restricted participant property");
                      }
                  } else {
                      classToEditorMap.get(c).put(editor.getProperty(), editor);
                  }
              }
  
          }
  
          if (editor instanceof ObjectPropertyEditor) {
              registerInverseEditors((ObjectPropertyEditor) editor);
          }
      }
docs: This method registers an editor with sub classes - i.e. inserts the editor to the proper value in editor maps.
  @param editor to be registered
  @param domain a subclass of the editor's original domain.