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

    if (hasBoundingPoly() != other.hasBoundingPoly()) return false;
    if (hasBoundingPoly()) {
      if (!getBoundingPoly().equals(other.getBoundingPoly())) return false;
    }
    if (hasFdBoundingPoly() != other.hasFdBoundingPoly()) return false;
    if (hasFdBoundingPoly()) {
      if (!getFdBoundingPoly().equals(other.getFdBoundingPoly())) return false;
    }
    if (!getLandmarksList().equals(other.getLandmarksList())) return false;
    if (java.lang.Float.floatToIntBits(getRollAngle())
        != java.lang.Float.floatToIntBits(other.getRollAngle())) return false;
    if (java.lang.Float.floatToIntBits(getPanAngle())
        != java.lang.Float.floatToIntBits(other.getPanAngle())) return false;
    if (java.lang.Float.floatToIntBits(getTiltAngle())
        != java.lang.Float.floatToIntBits(other.getTiltAngle())) return false;
    if (java.lang.Float.floatToIntBits(getDetectionConfidence())
        != java.lang.Float.floatToIntBits(other.getDetectionConfidence())) return false;
    if (java.lang.Float.floatToIntBits(getLandmarkingConfidence())
        != java.lang.Float.floatToIntBits(other.getLandmarkingConfidence())) return false;
    if (joyLikelihood_ != other.joyLikelihood_) return false;
    if (sorrowLikelihood_ != other.sorrowLikelihood_) return false;
    if (angerLikelihood_ != other.angerLikelihood_) return false;
    if (surpriseLikelihood_ != other.surpriseLikelihood_) return false;
    if (underExposedLikelihood_ != other.underExposedLikelihood_) return false;
    if (blurredLikelihood_ != other.blurredLikelihood_) return false;
    if (headwearLikelihood_ != other.headwearLikelihood_) return false;
    if (!getRecognitionResultList().equals(other.getRecognitionResultList())) return false;
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }
<pre>
Additional recognition information. Only computed if
image_context.face_recognition_params is provided, **and** a match is found
to a [Celebrity][google.cloud.vision.v1p4beta1.Celebrity] in the input
[CelebritySet][google.cloud.vision.v1p4beta1.CelebritySet]. This field is
sorted in order of decreasing confidence values.
</pre>

<code>repeated .google.cloud.vision.v1p4beta1.FaceRecognitionResult recognition_result = 16;
</code>
java-vision/proto-google-cloud-vision-v1p4beta1/src/main/java/com/google/cloud/vision/v1p4beta1/FaceAnnotation.java