code: public static boolean reflectionEquals(final Object lhs, final Object rhs, final Collection<String> excludeFields) {
          return reflectionEquals(lhs, rhs, ArrayUtil.toArray(excludeFields, String.class));
      }
docs: <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>Transient members will be not be tested, as they are likely derived
  fields, and not part of the value of the Object.</p>
  
  <p>Static fields will not be tested. Superclass fields will be included.</p>
  
  @param lhs  <code>this</code> object
  @param rhs  the other object
  @param excludeFields  Collection of String field names to exclude from testing
  @return <code>true</code> if the two Objects have tested equals.