in litho-core/src/main/java/com/facebook/litho/ComponentUtils.java [221:275]
private static boolean isEquivalentUtilWithoutGetAnnotation(
Field field, Class<?> classType, @Nullable Object val1, @Nullable Object val2) {
final Type type = field.getGenericType();
if (classType.isArray()) {
if (!areArraysEquals(classType, val1, val2)) {
return false;
}
} else if (Double.TYPE.isAssignableFrom(classType)) {
if (Double.compare((Double) val1, (Double) val2) != 0) {
return false;
}
} else if (Float.TYPE.isAssignableFrom(classType)) {
if (Float.compare((Float) val1, (Float) val2) != 0) {
return false;
}
} else if (ComparableDrawable.class.isAssignableFrom(classType)) {
if (val1 != null
? !((ComparableDrawable) val1).isEquivalentTo((ComparableDrawable) val2)
: val2 != null) {
return false;
}
} else if (Collection.class.isAssignableFrom(classType)) {
return areCollectionsEquals(type, (Collection) val1, (Collection) val2);
} else if (Component.class.isAssignableFrom(classType)) {
if (val1 != null ? !((Component) val1).isEquivalentTo((Component) val2) : val2 != null) {
return false;
}
// Sections implement Equivalence interface.
} else if (Equivalence.class.isAssignableFrom(classType)) {
if (val1 != null ? !((Equivalence) val1).isEquivalentTo(val2) : val2 != null) {
return false;
}
} else if (EventHandler.class.isAssignableFrom(classType)
|| (type instanceof ParameterizedType
&& EventHandler.class.isAssignableFrom(
(Class) ((ParameterizedType) type).getRawType()))) {
if (val1 != null
? !((EventHandler) val1).isEquivalentTo((EventHandler) val2)
: val2 != null) {
return false;
}
} else if (val1 != null ? !val1.equals(val2) : val2 != null) {
return false;
}
return true;
}