@SuppressWarnings("unchecked")
    @Override
    public final boolean equals(Object o)
    {
        if (o == this) return true;
        if (o == null) return false;
        /* Here we assume final classes, and comparisons only
         * between leaf (final) classes
         */
        if (o.getClass() != getClass()) return false;
        return _equals((T) o);
    }