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

    if (!getMid().equals(other.getMid())) return false;
    if (!getLocale().equals(other.getLocale())) return false;
    if (!getDescription().equals(other.getDescription())) return false;
    if (java.lang.Float.floatToIntBits(getScore())
        != java.lang.Float.floatToIntBits(other.getScore())) return false;
    if (java.lang.Float.floatToIntBits(getConfidence())
        != java.lang.Float.floatToIntBits(other.getConfidence())) return false;
    if (java.lang.Float.floatToIntBits(getTopicality())
        != java.lang.Float.floatToIntBits(other.getTopicality())) return false;
    if (hasBoundingPoly() != other.hasBoundingPoly()) return false;
    if (hasBoundingPoly()) {
      if (!getBoundingPoly().equals(other.getBoundingPoly())) return false;
    }
    if (!getLocationsList().equals(other.getLocationsList())) return false;
    if (!getPropertiesList().equals(other.getPropertiesList())) return false;
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }
<pre>
Some entities may have optional user-supplied `Property` (name/value)
fields, such a score or string that qualifies the entity.
</pre>

<code>repeated .google.cloud.vision.v1.Property properties = 9;</code>
java-vision/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/EntityAnnotation.java