### Question:
ReflectionUtil { static public boolean equals(Object left, Object right){ if(left instanceof PMMLObject && right instanceof PMMLObject){ return equals((PMMLObject)left, (PMMLObject)right); } return Objects.equals(left, right); } private  ReflectionUtil(); static boolean equals(Object left, Object right); static boolean equals(PMMLObject left, PMMLObject right); static void copyState(E from, E to); static Field getField(Class<?> clazz, String name); static List<Field> getFields(Class<?> clazz); static List<Field> getAttributeFields(); static List<Field> getElementFields(); static Method getGetterMethod(Field field); static Map<Field, Method> getGetterMethods(Class<?> clazz); @SuppressWarnings ( value = {"unchecked"} ) static E getFieldValue(Field field, Object object); static void setFieldValue(Field field, Object object, Object value); @SuppressWarnings ( value = {"unchecked"} ) static E getGetterMethodValue(Method method, Object object); static boolean isPrimitiveWrapper(Class<?> clazz); static boolean isDefaultValue(Object value); static List<Field> getClassConstants(List<Class<?>> clazzes);  }### Answer:
@Test public void equals(){ DataField left = new DataField() .setName(FieldName.create("x")) .setCyclic(null); DataField right = new DataField() .setName(FieldName.create("x")) .setCyclic(DataField.Cyclic.ZERO); right.getValues(); assertTrue(ReflectionUtil.equals(left, right)); Value leftValue = new Value() .setValue(0) .setProperty(null); Value rightValue = new Value() .setValue(0) .setProperty(Value.Property.VALID); right.addValues(rightValue); assertFalse(ReflectionUtil.equals(left, right)); left.addValues(leftValue); assertTrue(ReflectionUtil.equals(left, right)); leftValue.setValue(((Number)rightValue.getValue()).doubleValue()); assertFalse(ReflectionUtil.equals(left, right)); leftValue.setValue(rightValue.getValue()); assertTrue(ReflectionUtil.equals(left, right)); Value missingValue = new Value() .setValue(-999) .setProperty(Value.Property.MISSING); right.addValues(missingValue); assertFalse(ReflectionUtil.equals(left, right)); }