public static GBasicCellEditor getEditorFor(Object value) {
        GBasicCellEditor editor = null;
        Class c = value.getClass();
        //search super classes
        while (editor == null && c != Object.class) {
            editor = knownEditors.get(c);
            c = c.getSuperclass();
        }
        if (editor == null) {
            //search implementing interfaces
            Class cc[] = value.getClass().getInterfaces();
            for (int i = 0; i < cc.length && editor == null; i++)
                editor = knownEditors.get(cc[i]);
        }
        if (editor == null) {
            //no editor was defiend for this Class
            //take the last chance
            try {
                if (StaticUtils.fromString(value.getClass().getName(), value.toString()) != null) {
                    return oe;   //return oe if it can be reconstructed from a string in StaticUtils
                }
            } catch (Exception e) {
                return null;
            }
        }
        return editor;
    }