public PropertyEditor getPropertyEditor(int row) {
      Class cls = descriptors[row].getPropertyEditorClass();
      
      PropertyEditor editor = null;
      
      if (cls != null) {
         try {
            editor = (PropertyEditor)cls.newInstance();
         } catch (Exception ex) {
            // XXX - debug
            System.out.println("PropertyTableModel: Instantiation exception creating PropertyEditor");
         }
      } else {
         // Look for a registered editor for this type.
         Class type = getPropertyType(row);
         if (type != null) {
            editor = (PropertyEditor)propEditors.get(type);
            
            if (editor == null) {
               // Load a shared instance of the property editor.
               editor = PropertyEditorManager.findEditor(type);
               if (editor != null)
                  propEditors.put(type, editor);
            }
            
            if (editor == null) {
               // Use the editor for Object.class
               editor = (PropertyEditor)propEditors.get(Object.class);
               if (editor == null) {
                  editor = PropertyEditorManager.findEditor(Object.class);
                  if (editor != null)
                     propEditors.put(Object.class, editor);
               }
               
            }
         }
      }
      
      //Initialize our Editors
      if(editor instanceof EditorSupport) {
         ((EditorSupport)editor).init(descriptors[row]);
      }
      
      return editor;
   }