@GwtIncompatible("incompatible method")
    public static boolean reflectionEquals(final Object lhs, final Object rhs, final boolean testTransients, final Class<?> reflectUpToClass,
            final String... excludeFields) {
        return reflectionEquals(lhs, rhs, testTransients, reflectUpToClass, false, excludeFields);
    }
@ GwtIncompatible ( "incompatible method" ) public static boolean reflectionEquals ( final Object lhs , final Object rhs , final boolean testTransients , final Class < ? > reflectUpToClass , final String ... excludeFields ) { return reflectionEquals ( lhs , rhs , testTransients , reflectUpToClass , false , excludeFields ) ; }
<p>This method uses reflection to determine if the two <code>Object</code>s
are equal.</p>

<p>It uses <code>AccessibleObject.setAccessible</code> to gain access to private
fields. This means that it will throw a security exception if run under
a security manager, if the permissions are not set up correctly. It is also
not as efficient as testing explicitly. Non-primitive fields are compared using
<code>equals()</code>.</p>

<p>If the testTransients parameter is set to <code>true</code>, transient
members will be tested, otherwise they are ignored, as they are likely
derived fields, and not part of the value of the <code>Object</code>.</p>

<p>Static fields will not be included. Superclass fields will be appended
up to and including the specified superclass. A null superclass is treated
as java.lang.Object.</p>

@param lhs  <code>this</code> object
@param rhs  the other object
@param testTransients  whether to include transient fields
@param reflectUpToClass  the superclass to reflect up to (inclusive),
may be <code>null</code>
@param excludeFields  array of field names to exclude from testing
@return <code>true</code> if the two Objects have tested equals.

@see EqualsExclude
@since 2.0