if (other.getClass().getName().equals(this.getClass().getName()) == false) { return false; }
    public final boolean equals(Object other) {        if (other == this) {            return true;        } else if (other == null) {            return false;        } else if (other.getClass() == this.getClass()) {            // Ok to do a class cast to Enum here since the test above            // guarantee both            // classes are in the same class loader.            return iName.equals(((Enum) other).iName);        } else {            // This and other are in different class loaders, we must use reflection.            try {                Method mth = other.getClass().getMethod("getName", null);                String name = (String) mth.invoke(other, null);                return iName.equals(name);            } catch (NoSuchMethodException e) {                // ignore - should never happen            } catch (IllegalAccessException e) {                // ignore - should never happen            } catch (InvocationTargetException e) {                // ignore - should never happen            }            return false;        }    }