List<PropertyDescriptor> props = getAllPropertyDescriptors(type);
for (PropertyDescriptor prop : props) {
val readMethod = prop.getReadMethod();
try {
Object v1 = readMethod.invoke(b1);
Object v2 = readMethod.invoke(b2);
if (!ObjectUtils.equals(v1, v2)) {
throw new AssertionError(format(
"%s.%s() = %s != %s.%s() = %s",
b1, readMethod.getName(), v1,
b2, readMethod.getName(), v2));