private static boolean isEquivalentUtilWithoutGetAnnotation()

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;
  }