@java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8:
                {
                  personId_ = input.readInt64();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
              case 18:
                {
                  input.readMessage(
                      getDetectedPersonIdentifiedBoxFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
              case 26:
                {
                  com.google.cloud.visionai.v1.PersonalProtectiveEquipmentDetectionOutput
                          .PPEIdentifiedBox
                      m =
                          input.readMessage(
                              com.google.cloud.visionai.v1
                                  .PersonalProtectiveEquipmentDetectionOutput.PPEIdentifiedBox
                                  .parser(),
                              extensionRegistry);
                  if (detectedPpeIdentifiedBoxesBuilder_ == null) {
                    ensureDetectedPpeIdentifiedBoxesIsMutable();
                    detectedPpeIdentifiedBoxes_.add(m);
                  } else {
                    detectedPpeIdentifiedBoxesBuilder_.addMessage(m);
                  }
                  break;
                } // case 26
              case 37:
                {
                  faceCoverageScore_ = input.readFloat();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 37
              case 45:
                {
                  eyesCoverageScore_ = input.readFloat();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 45
              case 53:
                {
                  headCoverageScore_ = input.readFloat();
                  bitField0_ |= 0x00000020;
                  break;
                } // case 53
              case 61:
                {
                  handsCoverageScore_ = input.readFloat();
                  bitField0_ |= 0x00000040;
                  break;
                } // case 61
              case 69:
                {
                  bodyCoverageScore_ = input.readFloat();
                  bitField0_ |= 0x00000080;
                  break;
                } // case 69
              case 77:
                {
                  feetCoverageScore_ = input.readFloat();
                  bitField0_ |= 0x00000100;
                  break;
                } // case 77
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
<pre>
Detected Person contains the detected person and their associated
ppes and their protecting information.
</pre>

Protobuf type {@code
google.cloud.visionai.v1.PersonalProtectiveEquipmentDetectionOutput.DetectedPerson}
java-visionai/proto-google-cloud-visionai-v1/src/main/java/com/google/cloud/visionai/v1/PersonalProtectiveEquipmentDetectionOutput.java