@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 10:
              {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
            case 18:
              {
                company_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
            case 26:
              {
                requisitionId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
            case 34:
              {
                title_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
            case 42:
              {
                description_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
            case 50:
              {
                java.lang.String s = input.readStringRequireUtf8();
                ensureAddressesIsMutable();
                addresses_.add(s);
                break;
              } // case 50
            case 58:
              {
                input.readMessage(getApplicationInfoFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
            case 64:
              {
                int tmpRaw = input.readEnum();
                ensureJobBenefitsIsMutable();
                jobBenefits_.add(tmpRaw);
                break;
              } // case 64
            case 66:
              {
                int length = input.readRawVarint32();
                int oldLimit = input.pushLimit(length);
                while (input.getBytesUntilLimit() > 0) {
                  int tmpRaw = input.readEnum();
                  ensureJobBenefitsIsMutable();
                  jobBenefits_.add(tmpRaw);
                }
                input.popLimit(oldLimit);
                break;
              } // case 66
            case 74:
              {
                input.readMessage(
                    getCompensationInfoFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 74
            case 82:
              {
                com.google.protobuf.MapEntry<
                        java.lang.String, com.google.cloud.talent.v4.CustomAttribute>
                    customAttributes__ =
                        input.readMessage(
                            CustomAttributesDefaultEntryHolder.defaultEntry.getParserForType(),
                            extensionRegistry);
                internalGetMutableCustomAttributes()
                    .ensureBuilderMap()
                    .put(customAttributes__.getKey(), customAttributes__.getValue());
                bitField0_ |= 0x00000200;
                break;
              } // case 82
            case 88:
              {
                int tmpRaw = input.readEnum();
                ensureDegreeTypesIsMutable();
                degreeTypes_.add(tmpRaw);
                break;
              } // case 88
            case 90:
              {
                int length = input.readRawVarint32();
                int oldLimit = input.pushLimit(length);
                while (input.getBytesUntilLimit() > 0) {
                  int tmpRaw = input.readEnum();
                  ensureDegreeTypesIsMutable();
                  degreeTypes_.add(tmpRaw);
                }
                input.popLimit(oldLimit);
                break;
              } // case 90
            case 98:
              {
                department_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000800;
                break;
              } // case 98
            case 104:
              {
                int tmpRaw = input.readEnum();
                ensureEmploymentTypesIsMutable();
                employmentTypes_.add(tmpRaw);
                break;
              } // case 104
            case 106:
              {
                int length = input.readRawVarint32();
                int oldLimit = input.pushLimit(length);
                while (input.getBytesUntilLimit() > 0) {
                  int tmpRaw = input.readEnum();
                  ensureEmploymentTypesIsMutable();
                  employmentTypes_.add(tmpRaw);
                }
                input.popLimit(oldLimit);
                break;
              } // case 106
            case 114:
              {
                incentives_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00002000;
                break;
              } // case 114
            case 122:
              {
                languageCode_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00004000;
                break;
              } // case 122
            case 128:
              {
                jobLevel_ = input.readEnum();
                bitField0_ |= 0x00008000;
                break;
              } // case 128
            case 136:
              {
                promotionValue_ = input.readInt32();
                bitField0_ |= 0x00010000;
                break;
              } // case 136
            case 146:
              {
                qualifications_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00020000;
                break;
              } // case 146
            case 154:
              {
                responsibilities_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00040000;
                break;
              } // case 154
            case 160:
              {
                postingRegion_ = input.readEnum();
                bitField0_ |= 0x00080000;
                break;
              } // case 160
            case 168:
              {
                visibility_ = input.readEnum();
                bitField0_ |= 0x00100000;
                break;
              } // case 168
            case 178:
              {
                input.readMessage(getJobStartTimeFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00200000;
                break;
              } // case 178
            case 186:
              {
                input.readMessage(getJobEndTimeFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00400000;
                break;
              } // case 186
            case 194:
              {
                input.readMessage(
                    getPostingPublishTimeFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00800000;
                break;
              } // case 194
            case 202:
              {
                input.readMessage(
                    getPostingExpireTimeFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x01000000;
                break;
              } // case 202
            case 210:
              {
                input.readMessage(
                    getPostingCreateTimeFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x02000000;
                break;
              } // case 210
            case 218:
              {
                input.readMessage(
                    getPostingUpdateTimeFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x04000000;
                break;
              } // case 218
            case 226:
              {
                companyDisplayName_ = input.readStringRequireUtf8();
                bitField0_ |= 0x08000000;
                break;
              } // case 226
            case 234:
              {
                input.readMessage(getDerivedInfoFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x10000000;
                break;
              } // case 234
            case 242:
              {
                input.readMessage(
                    getProcessingOptionsFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x20000000;
                break;
              } // case 242
            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>
A Job resource represents a job posting (also referred to as a "job listing"
or "job requisition"). A job belongs to a
[Company][google.cloud.talent.v4.Company], which is the hiring entity
responsible for the job.
</pre>

Protobuf type {@code google.cloud.talent.v4.Job}
java-talent/proto-google-cloud-talent-v4/src/main/java/com/google/cloud/talent/v4/Job.java