public static int reflectionCompare(Object lhs, Object rhs) {
        return reflectionCompare(lhs, rhs, false, null);
    }
<p>Compares two <code>Object</code>s via reflection.</p>

<p>Fields can be private, thus <code>AccessibleObject.setAccessible</code>
is used to bypass normal access control checks. This will fail under a 
security manager unless the appropriate permissions are set.</p>

<ul>
<li>Static fields will not be compared</li>
<li>Transient members will be not be compared, as they are likely derived
    fields</li>
<li>Superclass fields will be compared</li>
</ul>

<p>If both <code>lhs</code> and <code>rhs</code> are <code>null</code>,
they are considered equal.</p>

@param lhs  left-hand object
@param rhs  right-hand object
@return a negative integer, zero, or a positive integer as <code>lhs</code>
 is less than, equal to, or greater than <code>rhs</code>
@throws NullPointerException  if either (but not both) parameters are
 <code>null</code>
@throws ClassCastException  if <code>rhs</code> is not assignment-compatible
 with <code>lhs</code>
android/android_framework/base/src/main/java/lang3/builder/CompareToBuilder.java