} else if (getEnumClass(other.getClass()).getName().equals(getEnumClass(this.getClass()).getName())) {
} else if (((Enum) other).iEnumClass.getName().equals(iEnumClass.getName())) {
    public final boolean equals(Object other) {        if (other == this) {            return true;        } else if (other == null) {            return false;        } else if (other.getClass() == this.getClass()) {            // shouldn't happen, but...            return iName.equals(((Enum) other).iName);        } else if (getEnumClass(other.getClass()).getName().equals(getEnumClass(this.getClass()).getName())) {            // different classloaders            try {                // try to avoid reflection                return iName.equals(((Enum) other).iName);            } catch (ClassCastException ex) {                // use reflection                try {                    Method mth = other.getClass().getMethod("getName", null);                    String name = (String) mth.invoke(other, null);                    return iName.equals(name);                } catch (NoSuchMethodException ex2) {                    // ignore - should never happen                } catch (IllegalAccessException ex2) {                    // ignore - should never happen                } catch (InvocationTargetException ex2) {                    // ignore - should never happen                }                return false;            }        } else {            return false;        }    }