@java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
      return true;
    }
    if (!(obj instanceof com.google.cloud.visionai.v1.AnnotationValue)) {
      return super.equals(obj);
    }
    com.google.cloud.visionai.v1.AnnotationValue other =
        (com.google.cloud.visionai.v1.AnnotationValue) obj;

    if (!getValueCase().equals(other.getValueCase())) return false;
    switch (valueCase_) {
      case 1:
        if (getIntValue() != other.getIntValue()) return false;
        break;
      case 2:
        if (java.lang.Float.floatToIntBits(getFloatValue())
            != java.lang.Float.floatToIntBits(other.getFloatValue())) return false;
        break;
      case 3:
        if (!getStrValue().equals(other.getStrValue())) return false;
        break;
      case 5:
        if (!getDatetimeValue().equals(other.getDatetimeValue())) return false;
        break;
      case 7:
        if (!getGeoCoordinate().equals(other.getGeoCoordinate())) return false;
        break;
      case 8:
        if (!getProtoAnyValue().equals(other.getProtoAnyValue())) return false;
        break;
      case 9:
        if (getBoolValue() != other.getBoolValue()) return false;
        break;
      case 10:
        if (!getCustomizedStructDataValue().equals(other.getCustomizedStructDataValue()))
          return false;
        break;
      case 11:
        if (!getListValue().equals(other.getListValue())) return false;
        break;
      case 6:
        if (!getCustomizedStructValue().equals(other.getCustomizedStructValue())) return false;
        break;
      case 0:
      default:
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }
<pre>
Value of custom struct type annotation.
</pre>

<code>.google.cloud.visionai.v1.AnnotationCustomizedStruct customized_struct_value = 6;</code>
java-visionai/proto-google-cloud-visionai-v1/src/main/java/com/google/cloud/visionai/v1/AnnotationValue.java