@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:
              {
                displayName_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
            case 26:
              {
                uid_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
            case 32:
              {
                reconciling_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
            case 42:
              {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String> annotations__ =
                    input.readMessage(
                        AnnotationsDefaultEntryHolder.defaultEntry.getParserForType(),
                        extensionRegistry);
                internalGetMutableAnnotations()
                    .getMutableMap()
                    .put(annotations__.getKey(), annotations__.getValue());
                bitField0_ |= 0x00000010;
                break;
              } // case 42
            case 50:
              {
                input.readMessage(getCreateTimeFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 50
            case 58:
              {
                input.readMessage(getUpdateTimeFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 58
            case 66:
              {
                input.readMessage(getDeleteTimeFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 66
            case 74:
              {
                etag_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000200;
                break;
              } // case 74
            case 82:
              {
                input.readMessage(getIdleTimeoutFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 82
            case 90:
              {
                input.readMessage(getRunningTimeoutFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000800;
                break;
              } // case 90
            case 98:
              {
                input.readMessage(getHostFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00001000;
                break;
              } // case 98
            case 106:
              {
                com.google.cloud.workstations.v1beta.WorkstationConfig.PersistentDirectory m =
                    input.readMessage(
                        com.google.cloud.workstations.v1beta.WorkstationConfig.PersistentDirectory
                            .parser(),
                        extensionRegistry);
                if (persistentDirectoriesBuilder_ == null) {
                  ensurePersistentDirectoriesIsMutable();
                  persistentDirectories_.add(m);
                } else {
                  persistentDirectoriesBuilder_.addMessage(m);
                }
                break;
              } // case 106
            case 114:
              {
                input.readMessage(getContainerFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00008000;
                break;
              } // case 114
            case 120:
              {
                degraded_ = input.readBool();
                bitField0_ |= 0x00080000;
                break;
              } // case 120
            case 130:
              {
                com.google.rpc.Status m =
                    input.readMessage(com.google.rpc.Status.parser(), extensionRegistry);
                if (conditionsBuilder_ == null) {
                  ensureConditionsIsMutable();
                  conditions_.add(m);
                } else {
                  conditionsBuilder_.addMessage(m);
                }
                break;
              } // case 130
            case 138:
              {
                input.readMessage(getEncryptionKeyFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00010000;
                break;
              } // case 138
            case 146:
              {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String> labels__ =
                    input.readMessage(
                        LabelsDefaultEntryHolder.defaultEntry.getParserForType(),
                        extensionRegistry);
                internalGetMutableLabels()
                    .getMutableMap()
                    .put(labels__.getKey(), labels__.getValue());
                bitField0_ |= 0x00000020;
                break;
              } // case 146
            case 154:
              {
                com.google.cloud.workstations.v1beta.WorkstationConfig.ReadinessCheck m =
                    input.readMessage(
                        com.google.cloud.workstations.v1beta.WorkstationConfig.ReadinessCheck
                            .parser(),
                        extensionRegistry);
                if (readinessChecksBuilder_ == null) {
                  ensureReadinessChecksIsMutable();
                  readinessChecks_.add(m);
                } else {
                  readinessChecksBuilder_.addMessage(m);
                }
                break;
              } // case 154
            case 160:
              {
                enableAuditAgent_ = input.readBool();
                bitField0_ |= 0x00200000;
                break;
              } // case 160
            case 178:
              {
                com.google.cloud.workstations.v1beta.WorkstationConfig.EphemeralDirectory m =
                    input.readMessage(
                        com.google.cloud.workstations.v1beta.WorkstationConfig.EphemeralDirectory
                            .parser(),
                        extensionRegistry);
                if (ephemeralDirectoriesBuilder_ == null) {
                  ensureEphemeralDirectoriesIsMutable();
                  ephemeralDirectories_.add(m);
                } else {
                  ephemeralDirectoriesBuilder_.addMessage(m);
                }
                break;
              } // case 178
            case 186:
              {
                java.lang.String s = input.readStringRequireUtf8();
                ensureReplicaZonesIsMutable();
                replicaZones_.add(s);
                break;
              } // case 186
            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 workstation configuration resource in the Cloud Workstations API.

Workstation configurations act as templates for workstations. The workstation
configuration defines details such as the workstation virtual machine (VM)
instance type, persistent storage, container image defining environment,
which IDE or Code Editor to use, and more. Administrators and platform teams
can also use [Identity and Access Management
(IAM)](https://cloud.google.com/iam/docs/overview) rules to grant access to
teams or to individual developers.
</pre>

Protobuf type {@code google.cloud.workstations.v1beta.WorkstationConfig}
java-workstations/proto-google-cloud-workstations-v1beta/src/main/java/com/google/cloud/workstations/v1beta/WorkstationConfig.java