text:
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/appengine/v1/version.proto

package com.google.appengine.v1;

/**
 *

 * A Version resource is a specific set of source code and configuration files
 * that are deployed into a service.
 *

 *
 * Protobuf type {@code google.appengine.v1.Version}
 */
public  final class Version extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:google.appengine.v1.Version)
    VersionOrBuilder {
  // Use Version.newBuilder() to construct.
  private Version(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private Version() {
    name_ = "";
    id_ = "";
    inboundServices_ = java.util.Collections.emptyList();
    instanceClass_ = "";
    runtime_ = "";
    threadsafe_ = false;
    vm_ = false;
    env_ = "";
    servingStatus_ = 0;
    createdBy_ = "";
    diskUsageBytes_ = 0L;
    handlers_ = java.util.Collections.emptyList();
    errorHandlers_ = java.util.Collections.emptyList();
    libraries_ = java.util.Collections.emptyList();
    nobuildFilesRegex_ = "";
    versionUrl_ = "";
  }

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet
  getUnknownFields() {
    return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
  }
  private Version(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    this();
    int mutable_bitField0_ = 0;
    try {
      boolean done = false;
      while (!done) {
        int tag = input.readTag();
        switch (tag) {
          case 0:
            done = true;
            break;
          default: {
            if (!input.skipField(tag)) {
              done = true;
            }
            break;
          }
          case 10: {
            java.lang.String s = input.readStringRequireUtf8();

            name_ = s;
            break;
          }
          case 18: {
            java.lang.String s = input.readStringRequireUtf8();

            id_ = s;
            break;
          }
          case 26: {
            com.google.appengine.v1.AutomaticScaling.Builder subBuilder = null;
            if (scalingCase_ == 3) {
              subBuilder = ((com.google.appengine.v1.AutomaticScaling) scaling_).toBuilder();
            }
            scaling_ =
                input.readMessage(com.google.appengine.v1.AutomaticScaling.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom((com.google.appengine.v1.AutomaticScaling) scaling_);
              scaling_ = subBuilder.buildPartial();
            }
            scalingCase_ = 3;
            break;
          }
          case 34: {
            com.google.appengine.v1.BasicScaling.Builder subBuilder = null;
            if (scalingCase_ == 4) {
              subBuilder = ((com.google.appengine.v1.BasicScaling) scaling_).toBuilder();
            }
            scaling_ =
                input.readMessage(com.google.appengine.v1.BasicScaling.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom((com.google.appengine.v1.BasicScaling) scaling_);
              scaling_ = subBuilder.buildPartial();
            }
            scalingCase_ = 4;
            break;
          }
          case 42: {
            com.google.appengine.v1.ManualScaling.Builder subBuilder = null;
            if (scalingCase_ == 5) {
              subBuilder = ((com.google.appengine.v1.ManualScaling) scaling_).toBuilder();
            }
            scaling_ =
                input.readMessage(com.google.appengine.v1.ManualScaling.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom((com.google.appengine.v1.ManualScaling) scaling_);
              scaling_ = subBuilder.buildPartial();
            }
            scalingCase_ = 5;
            break;
          }
          case 48: {
            int rawValue = input.readEnum();
            if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
              inboundServices_ = new java.util.ArrayList<java.lang.Integer>();
              mutable_bitField0_ |= 0x00000020;
            }
            inboundServices_.add(rawValue);
            break;
          }
          case 50: {
            int length = input.readRawVarint32();
            int oldLimit = input.pushLimit(length);
            while(input.getBytesUntilLimit() > 0) {
              int rawValue = input.readEnum();
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                inboundServices_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              inboundServices_.add(rawValue);
            }
            input.popLimit(oldLimit);
            break;
          }
          case 58: {
            java.lang.String s = input.readStringRequireUtf8();

            instanceClass_ = s;
            break;
          }
          case 66: {
            com.google.appengine.v1.Network.Builder subBuilder = null;
            if (network_ != null) {
              subBuilder = network_.toBuilder();
            }
            network_ = input.readMessage(com.google.appengine.v1.Network.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(network_);
              network_ = subBuilder.buildPartial();
            }

            break;
          }
          case 74: {
            com.google.appengine.v1.Resources.Builder subBuilder = null;
            if (resources_ != null) {
              subBuilder = resources_.toBuilder();
            }
            resources_ = input.readMessage(com.google.appengine.v1.Resources.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(resources_);
              resources_ = subBuilder.buildPartial();
            }

            break;
          }
          case 82: {
            java.lang.String s = input.readStringRequireUtf8();

            runtime_ = s;
            break;
          }
          case 88: {

            threadsafe_ = input.readBool();
            break;
          }
          case 96: {

            vm_ = input.readBool();
            break;
          }
          case 106: {
            if (!((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
              betaSettings_ = com.google.protobuf.MapField.newMapField(
                  BetaSettingsDefaultEntryHolder.defaultEntry);
              mutable_bitField0_ |= 0x00001000;
            }
            com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
            betaSettings__ = input.readMessage(
                BetaSettingsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
            betaSettings_.getMutableMap().put(
                betaSettings__.getKey(), betaSettings__.getValue());
            break;
          }
          case 114: {
            java.lang.String s = input.readStringRequireUtf8();

            env_ = s;
            break;
          }
          case 120: {
            int rawValue = input.readEnum();

            servingStatus_ = rawValue;
            break;
          }
          case 130: {
            java.lang.String s = input.readStringRequireUtf8();

            createdBy_ = s;
            break;
          }
          case 138: {
            com.google.protobuf.Timestamp.Builder subBuilder = null;
            if (createTime_ != null) {
              subBuilder = createTime_.toBuilder();
            }
            createTime_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(createTime_);
              createTime_ = subBuilder.buildPartial();
            }

            break;
          }
          case 144: {

            diskUsageBytes_ = input.readInt64();
            break;
          }
          case 802: {
            if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
              handlers_ = new java.util.ArrayList<com.google.appengine.v1.UrlMap>();
              mutable_bitField0_ |= 0x00040000;
            }
            handlers_.add(
                input.readMessage(com.google.appengine.v1.UrlMap.parser(), extensionRegistry));
            break;
          }
          case 810: {
            if (!((mutable_bitField0_ & 0x00080000) == 0x00080000)) {
              errorHandlers_ = new java.util.ArrayList<com.google.appengine.v1.ErrorHandler>();
              mutable_bitField0_ |= 0x00080000;
            }
            errorHandlers_.add(
                input.readMessage(com.google.appengine.v1.ErrorHandler.parser(), extensionRegistry));
            break;
          }
          case 818: {
            if (!((mutable_bitField0_ & 0x00100000) == 0x00100000)) {
              libraries_ = new java.util.ArrayList<com.google.appengine.v1.Library>();
              mutable_bitField0_ |= 0x00100000;
            }
            libraries_.add(
                input.readMessage(com.google.appengine.v1.Library.parser(), extensionRegistry));
            break;
          }
          case 826: {
            com.google.appengine.v1.ApiConfigHandler.Builder subBuilder = null;
            if (apiConfig_ != null) {
              subBuilder = apiConfig_.toBuilder();
            }
            apiConfig_ = input.readMessage(com.google.appengine.v1.ApiConfigHandler.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(apiConfig_);
              apiConfig_ = subBuilder.buildPartial();
            }

            break;
          }
          case 834: {
            if (!((mutable_bitField0_ & 0x00400000) == 0x00400000)) {
              envVariables_ = com.google.protobuf.MapField.newMapField(
                  EnvVariablesDefaultEntryHolder.defaultEntry);
              mutable_bitField0_ |= 0x00400000;
            }
            com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
            envVariables__ = input.readMessage(
                EnvVariablesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
            envVariables_.getMutableMap().put(
                envVariables__.getKey(), envVariables__.getValue());
            break;
          }
          case 842: {
            com.google.protobuf.Duration.Builder subBuilder = null;
            if (defaultExpiration_ != null) {
              subBuilder = defaultExpiration_.toBuilder();
            }
            defaultExpiration_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(defaultExpiration_);
              defaultExpiration_ = subBuilder.buildPartial();
            }

            break;
          }
          case 850: {
            com.google.appengine.v1.HealthCheck.Builder subBuilder = null;
            if (healthCheck_ != null) {
              subBuilder = healthCheck_.toBuilder();
            }
            healthCheck_ = input.readMessage(com.google.appengine.v1.HealthCheck.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(healthCheck_);
              healthCheck_ = subBuilder.buildPartial();
            }

            break;
          }
          case 858: {
            java.lang.String s = input.readStringRequireUtf8();

            nobuildFilesRegex_ = s;
            break;
          }
          case 866: {
            com.google.appengine.v1.Deployment.Builder subBuilder = null;
            if (deployment_ != null) {
              subBuilder = deployment_.toBuilder();
            }
            deployment_ = input.readMessage(com.google.appengine.v1.Deployment.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(deployment_);
              deployment_ = subBuilder.buildPartial();
            }

            break;
          }
          case 874: {
            java.lang.String s = input.readStringRequireUtf8();

            versionUrl_ = s;
            break;
          }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(
          e).setUnfinishedMessage(this);
    } finally {
      if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
        inboundServices_ = java.util.Collections.unmodifiableList(inboundServices_);
      }
      if (((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
        handlers_ = java.util.Collections.unmodifiableList(handlers_);
      }
      if (((mutable_bitField0_ & 0x00080000) == 0x00080000)) {
        errorHandlers_ = java.util.Collections.unmodifiableList(errorHandlers_);
      }
      if (((mutable_bitField0_ & 0x00100000) == 0x00100000)) {
        libraries_ = java.util.Collections.unmodifiableList(libraries_);
      }
      makeExtensionsImmutable();
    }
  }
  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return com.google.appengine.v1.VersionProto.internal_static_google_appengine_v1_Version_descriptor;
  }

  @SuppressWarnings({"rawtypes"})
  protected com.google.protobuf.MapField internalGetMapField(
      int number) {
    switch (number) {
      case 13:
        return internalGetBetaSettings();
      case 104:
        return internalGetEnvVariables();
      default:
        throw new RuntimeException(
            "Invalid map field number: " + number);
    }
  }
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.appengine.v1.VersionProto.internal_static_google_appengine_v1_Version_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.appengine.v1.Version.class, com.google.appengine.v1.Version.Builder.class);
  }

  private int bitField0_;
  private int scalingCase_ = 0;
  private java.lang.Object scaling_;
  public enum ScalingCase
      implements com.google.protobuf.Internal.EnumLite {
    AUTOMATIC_SCALING(3),
    BASIC_SCALING(4),
    MANUAL_SCALING(5),
    SCALING_NOT_SET(0);
    private final int value;
    private ScalingCase(int value) {
      this.value = value;
    }
    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static ScalingCase valueOf(int value) {
      return forNumber(value);
    }

    public static ScalingCase forNumber(int value) {
      switch (value) {
        case 3: return AUTOMATIC_SCALING;
        case 4: return BASIC_SCALING;
        case 5: return MANUAL_SCALING;
        case 0: return SCALING_NOT_SET;
        default: return null;
      }
    }
    public int getNumber() {
      return this.value;
    }
  };

  public ScalingCase
  getScalingCase() {
    return ScalingCase.forNumber(
        scalingCase_);
  }

  public static final int NAME_FIELD_NUMBER = 1;
  private volatile java.lang.Object name_;
  /**
   *

   * Full path to the Version resource in the API.  Example:
   * `apps/myapp/services/default/versions/v1`.
   * @OutputOnly
   *

   *
   * optional string name = 1;
   */
  public java.lang.String getName() {
    java.lang.Object ref = name_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs =
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      name_ = s;
      return s;
    }
  }
  /**
   *

   * Full path to the Version resource in the API.  Example:
   * `apps/myapp/services/default/versions/v1`.
   * @OutputOnly
   *

   *
   * optional string name = 1;
   */
  public com.google.protobuf.ByteString
      getNameBytes() {
    java.lang.Object ref = name_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      name_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int ID_FIELD_NUMBER = 2;
  private volatile java.lang.Object id_;
  /**
   *

   * Relative name of the version within the service.  Example: `v1`.
   * Version names can contain only lowercase letters, numbers, or hyphens.
   * Reserved names: "default", "latest", and any name with the prefix "ah-".
   *

   *
   * optional string id = 2;
   */
  public java.lang.String getId() {
    java.lang.Object ref = id_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs =
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      id_ = s;
      return s;
    }
  }
  /**
   *

   * Relative name of the version within the service.  Example: `v1`.
   * Version names can contain only lowercase letters, numbers, or hyphens.
   * Reserved names: "default", "latest", and any name with the prefix "ah-".
   *

   *
   * optional string id = 2;
   */
  public com.google.protobuf.ByteString
      getIdBytes() {
    java.lang.Object ref = id_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      id_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int AUTOMATIC_SCALING_FIELD_NUMBER = 3;
  /**
   *

   * Automatic scaling is based on request rate, response latencies, and other
   * application metrics.
   *

   *
   * optional .google.appengine.v1.AutomaticScaling automatic_scaling = 3;
   */
  public com.google.appengine.v1.AutomaticScaling getAutomaticScaling() {
    if (scalingCase_ == 3) {
       return (com.google.appengine.v1.AutomaticScaling) scaling_;
    }
    return com.google.appengine.v1.AutomaticScaling.getDefaultInstance();
  }
  /**
   *

   * Automatic scaling is based on request rate, response latencies, and other
   * application metrics.
   *

   *
   * optional .google.appengine.v1.AutomaticScaling automatic_scaling = 3;
   */
  public com.google.appengine.v1.AutomaticScalingOrBuilder getAutomaticScalingOrBuilder() {
    if (scalingCase_ == 3) {
       return (com.google.appengine.v1.AutomaticScaling) scaling_;
    }
    return com.google.appengine.v1.AutomaticScaling.getDefaultInstance();
  }

  public static final int BASIC_SCALING_FIELD_NUMBER = 4;
  /**
   *

   * A service with basic scaling will create an instance when the application
   * receives a request. The instance will be turned down when the app becomes
   * idle. Basic scaling is ideal for work that is intermittent or driven by
   * user activity.
   *

   *
   * optional .google.appengine.v1.BasicScaling basic_scaling = 4;
   */
  public com.google.appengine.v1.BasicScaling getBasicScaling() {
    if (scalingCase_ == 4) {
       return (com.google.appengine.v1.BasicScaling) scaling_;
    }
    return com.google.appengine.v1.BasicScaling.getDefaultInstance();
  }
  /**
   *

   * A service with basic scaling will create an instance when the application
   * receives a request. The instance will be turned down when the app becomes
   * idle. Basic scaling is ideal for work that is intermittent or driven by
   * user activity.
   *

   *
   * optional .google.appengine.v1.BasicScaling basic_scaling = 4;
   */
  public com.google.appengine.v1.BasicScalingOrBuilder getBasicScalingOrBuilder() {
    if (scalingCase_ == 4) {
       return (com.google.appengine.v1.BasicScaling) scaling_;
    }
    return com.google.appengine.v1.BasicScaling.getDefaultInstance();
  }

  public static final int MANUAL_SCALING_FIELD_NUMBER = 5;
  /**
   *

   * A service with manual scaling runs continuously, allowing you to perform
   * complex initialization and rely on the state of its memory over time.
   *

   *
   * optional .google.appengine.v1.ManualScaling manual_scaling = 5;
   */
  public com.google.appengine.v1.ManualScaling getManualScaling() {
    if (scalingCase_ == 5) {
       return (com.google.appengine.v1.ManualScaling) scaling_;
    }
    return com.google.appengine.v1.ManualScaling.getDefaultInstance();
  }
  /**
   *

   * A service with manual scaling runs continuously, allowing you to perform
   * complex initialization and rely on the state of its memory over time.
   *

   *
   * optional .google.appengine.v1.ManualScaling manual_scaling = 5;
   */
  public com.google.appengine.v1.ManualScalingOrBuilder getManualScalingOrBuilder() {
    if (scalingCase_ == 5) {
       return (com.google.appengine.v1.ManualScaling) scaling_;
    }
    return com.google.appengine.v1.ManualScaling.getDefaultInstance();
  }

  public static final int INBOUND_SERVICES_FIELD_NUMBER = 6;
  private java.util.List<java.lang.Integer> inboundServices_;
  private static final com.google.protobuf.Internal.ListAdapter.Converter<
      java.lang.Integer, com.google.appengine.v1.InboundServiceType> inboundServices_converter_ =
          new com.google.protobuf.Internal.ListAdapter.Converter<
              java.lang.Integer, com.google.appengine.v1.InboundServiceType>() {
            public com.google.appengine.v1.InboundServiceType convert(java.lang.Integer from) {
              com.google.appengine.v1.InboundServiceType result = com.google.appengine.v1.InboundServiceType.valueOf(from);
              return result == null ? com.google.appengine.v1.InboundServiceType.UNRECOGNIZED : result;
            }
          };
  /**
   *

   * Before an application can receive email or XMPP messages, the application
   * must be configured to enable the service.
   *

   *
   * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
   */
  public java.util.List<com.google.appengine.v1.InboundServiceType> getInboundServicesList() {
    return new com.google.protobuf.Internal.ListAdapter<
        java.lang.Integer, com.google.appengine.v1.InboundServiceType>(inboundServices_, inboundServices_converter_);
  }
  /**
   *

   * Before an application can receive email or XMPP messages, the application
   * must be configured to enable the service.
   *

   *
   * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
   */
  public int getInboundServicesCount() {
    return inboundServices_.size();
  }
  /**
   *

   * Before an application can receive email or XMPP messages, the application
   * must be configured to enable the service.
   *

   *
   * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
   */
  public com.google.appengine.v1.InboundServiceType getInboundServices(int index) {
    return inboundServices_converter_.convert(inboundServices_.get(index));
  }
  /**
   *

   * Before an application can receive email or XMPP messages, the application
   * must be configured to enable the service.
   *

   *
   * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
   */
  public java.util.List<java.lang.Integer>
  getInboundServicesValueList() {
    return inboundServices_;
  }
  /**
   *

   * Before an application can receive email or XMPP messages, the application
   * must be configured to enable the service.
   *

   *
   * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
   */
  public int getInboundServicesValue(int index) {
    return inboundServices_.get(index);
  }
  private int inboundServicesMemoizedSerializedSize;

  public static final int INSTANCE_CLASS_FIELD_NUMBER = 7;
  private volatile java.lang.Object instanceClass_;
  /**
   *

   * Instance class that is used to run this version. Valid values are:
   * * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G`
   * * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G`
   * Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or
   * BasicScaling.
   *

   *
   * optional string instance_class = 7;
   */
  public java.lang.String getInstanceClass() {
    java.lang.Object ref = instanceClass_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs =
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      instanceClass_ = s;
      return s;
    }
  }
  /**
   *

   * Instance class that is used to run this version. Valid values are:
   * * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G`
   * * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G`
   * Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or
   * BasicScaling.
   *

   *
   * optional string instance_class = 7;
   */
  public com.google.protobuf.ByteString
      getInstanceClassBytes() {
    java.lang.Object ref = instanceClass_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      instanceClass_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int NETWORK_FIELD_NUMBER = 8;
  private com.google.appengine.v1.Network network_;
  /**
   *

   * Extra network settings. Only applicable for VM runtimes.
   *

   *
   * optional .google.appengine.v1.Network network = 8;
   */
  public boolean hasNetwork() {
    return network_ != null;
  }
  /**
   *

   * Extra network settings. Only applicable for VM runtimes.
   *

   *
   * optional .google.appengine.v1.Network network = 8;
   */
  public com.google.appengine.v1.Network getNetwork() {
    return network_ == null ? com.google.appengine.v1.Network.getDefaultInstance() : network_;
  }
  /**
   *

   * Extra network settings. Only applicable for VM runtimes.
   *

   *
   * optional .google.appengine.v1.Network network = 8;
   */
  public com.google.appengine.v1.NetworkOrBuilder getNetworkOrBuilder() {
    return getNetwork();
  }

  public static final int RESOURCES_FIELD_NUMBER = 9;
  private com.google.appengine.v1.Resources resources_;
  /**
   *

   * Machine resources for this version. Only applicable for VM runtimes.
   *

   *
   * optional .google.appengine.v1.Resources resources = 9;
   */
  public boolean hasResources() {
    return resources_ != null;
  }
  /**
   *

   * Machine resources for this version. Only applicable for VM runtimes.
   *

   *
   * optional .google.appengine.v1.Resources resources = 9;
   */
  public com.google.appengine.v1.Resources getResources() {
    return resources_ == null ? com.google.appengine.v1.Resources.getDefaultInstance() : resources_;
  }
  /**
   *

   * Machine resources for this version. Only applicable for VM runtimes.
   *

   *
   * optional .google.appengine.v1.Resources resources = 9;
   */
  public com.google.appengine.v1.ResourcesOrBuilder getResourcesOrBuilder() {
    return getResources();
  }

  public static final int RUNTIME_FIELD_NUMBER = 10;
  private volatile java.lang.Object runtime_;
  /**
   *

   * Desired runtime. Example: `python27`.
   *

   *
   * optional string runtime = 10;
   */
  public java.lang.String getRuntime() {
    java.lang.Object ref = runtime_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs =
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      runtime_ = s;
      return s;
    }
  }
  /**
   *

   * Desired runtime. Example: `python27`.
   *

   *
   * optional string runtime = 10;
   */
  public com.google.protobuf.ByteString
      getRuntimeBytes() {
    java.lang.Object ref = runtime_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      runtime_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int THREADSAFE_FIELD_NUMBER = 11;
  private boolean threadsafe_;
  /**
   *

   * Whether multiple requests can be dispatched to this version at once.
   *

   *
   * optional bool threadsafe = 11;
   */
  public boolean getThreadsafe() {
    return threadsafe_;
  }

  public static final int VM_FIELD_NUMBER = 12;
  private boolean vm_;
  /**
   *

   * Whether to deploy this version in a container on a virtual machine.
   *

   *
   * optional bool vm = 12;
   */
  public boolean getVm() {
    return vm_;
  }

  public static final int BETA_SETTINGS_FIELD_NUMBER = 13;
  private static final class BetaSettingsDefaultEntryHolder {
    static final com.google.protobuf.MapEntry<
        java.lang.String, java.lang.String> defaultEntry =
            com.google.protobuf.MapEntry
            .<java.lang.String, java.lang.String>newDefaultInstance(
                com.google.appengine.v1.VersionProto.internal_static_google_appengine_v1_Version_BetaSettingsEntry_descriptor,
                com.google.protobuf.WireFormat.FieldType.STRING,
                "",
                com.google.protobuf.WireFormat.FieldType.STRING,
                "");
  }
  private com.google.protobuf.MapField<
      java.lang.String, java.lang.String> betaSettings_;
  private com.google.protobuf.MapField<java.lang.String, java.lang.String>
  internalGetBetaSettings() {
    if (betaSettings_ == null) {
      return com.google.protobuf.MapField.emptyMapField(
          BetaSettingsDefaultEntryHolder.defaultEntry);
    }
    return betaSettings_;
  }

  public int getBetaSettingsCount() {
    return internalGetBetaSettings().getMap().size();
  }
  /**
   *

   * Metadata settings that are supplied to this version to enable
   * beta runtime features.
   *

   *
   * map<string, string> beta_settings = 13;
   */

  public boolean containsBetaSettings(
      java.lang.String key) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    return internalGetBetaSettings().getMap().containsKey(key);
  }
  /**
   * Use {@link #getBetaSettingsMap()} instead.
   */
  @java.lang.Deprecated
  public java.util.Map<java.lang.String, java.lang.String> getBetaSettings() {
    return getBetaSettingsMap();
  }
  /**
   *

   * Metadata settings that are supplied to this version to enable
   * beta runtime features.
   *

   *
   * map<string, string> beta_settings = 13;
   */

  public java.util.Map<java.lang.String, java.lang.String> getBetaSettingsMap() {
    return internalGetBetaSettings().getMap();
  }
  /**
   *

   * Metadata settings that are supplied to this version to enable
   * beta runtime features.
   *

   *
   * map<string, string> beta_settings = 13;
   */

  public java.lang.String getBetaSettingsOrDefault(
      java.lang.String key,
      java.lang.String defaultValue) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    java.util.Map<java.lang.String, java.lang.String> map =
        internalGetBetaSettings().getMap();
    return map.containsKey(key) ? map.get(key) : defaultValue;
  }
  /**
   *

   * Metadata settings that are supplied to this version to enable
   * beta runtime features.
   *

   *
   * map<string, string> beta_settings = 13;
   */

  public java.lang.String getBetaSettingsOrThrow(
      java.lang.String key) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    java.util.Map<java.lang.String, java.lang.String> map =
        internalGetBetaSettings().getMap();
    if (!map.containsKey(key)) {
      throw new java.lang.IllegalArgumentException();
    }
    return map.get(key);
  }

  public static final int ENV_FIELD_NUMBER = 14;
  private volatile java.lang.Object env_;
  /**
   *

   * App Engine execution environment for this version.
   * Defaults to `standard`.
   *

   *
   * optional string env = 14;
   */
  public java.lang.String getEnv() {
    java.lang.Object ref = env_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs =
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      env_ = s;
      return s;
    }
  }
  /**
   *

   * App Engine execution environment for this version.
   * Defaults to `standard`.
   *

   *
   * optional string env = 14;
   */
  public com.google.protobuf.ByteString
      getEnvBytes() {
    java.lang.Object ref = env_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      env_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int SERVING_STATUS_FIELD_NUMBER = 15;
  private int servingStatus_;
  /**
   *

   * Current serving status of this version. Only the versions with a
   * `SERVING` status create instances and can be billed.
   * `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
   *

   *
   * optional .google.appengine.v1.ServingStatus serving_status = 15;
   */
  public int getServingStatusValue() {
    return servingStatus_;
  }
  /**
   *

   * Current serving status of this version. Only the versions with a
   * `SERVING` status create instances and can be billed.
   * `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
   *

   *
   * optional .google.appengine.v1.ServingStatus serving_status = 15;
   */
  public com.google.appengine.v1.ServingStatus getServingStatus() {
    com.google.appengine.v1.ServingStatus result = com.google.appengine.v1.ServingStatus.valueOf(servingStatus_);
    return result == null ? com.google.appengine.v1.ServingStatus.UNRECOGNIZED : result;
  }

  public static final int CREATED_BY_FIELD_NUMBER = 16;
  private volatile java.lang.Object createdBy_;
  /**
   *

   * Email address of the user who created this version.
   * @OutputOnly
   *

   *
   * optional string created_by = 16;
   */
  public java.lang.String getCreatedBy() {
    java.lang.Object ref = createdBy_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs =
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      createdBy_ = s;
      return s;
    }
  }
  /**
   *

   * Email address of the user who created this version.
   * @OutputOnly
   *

   *
   * optional string created_by = 16;
   */
  public com.google.protobuf.ByteString
      getCreatedByBytes() {
    java.lang.Object ref = createdBy_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      createdBy_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int CREATE_TIME_FIELD_NUMBER = 17;
  private com.google.protobuf.Timestamp createTime_;
  /**
   *

   * Time that this version was created.
   * @OutputOnly
   *

   *
   * optional .google.protobuf.Timestamp create_time = 17;
   */
  public boolean hasCreateTime() {
    return createTime_ != null;
  }
  /**
   *

   * Time that this version was created.
   * @OutputOnly
   *

   *
   * optional .google.protobuf.Timestamp create_time = 17;
   */
  public com.google.protobuf.Timestamp getCreateTime() {
    return createTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createTime_;
  }
  /**
   *

   * Time that this version was created.
   * @OutputOnly
   *

   *
   * optional .google.protobuf.Timestamp create_time = 17;
   */
  public com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder() {
    return getCreateTime();
  }

  public static final int DISK_USAGE_BYTES_FIELD_NUMBER = 18;
  private long diskUsageBytes_;
  /**
   *

   * Total size in bytes of all the files that are included in this version
   * and curerntly hosted on the App Engine disk.
   * @OutputOnly
   *

   *
   * optional int64 disk_usage_bytes = 18;
   */
  public long getDiskUsageBytes() {
    return diskUsageBytes_;
  }

  public static final int HANDLERS_FIELD_NUMBER = 100;
  private java.util.List<com.google.appengine.v1.UrlMap> handlers_;
  /**
   *

   * An ordered list of URL-matching patterns that should be applied to incoming
   * requests. The first matching URL handles the request and other request
   * handlers are not attempted.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.UrlMap handlers = 100;
   */
  public java.util.List<com.google.appengine.v1.UrlMap> getHandlersList() {
    return handlers_;
  }
  /**
   *

   * An ordered list of URL-matching patterns that should be applied to incoming
   * requests. The first matching URL handles the request and other request
   * handlers are not attempted.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.UrlMap handlers = 100;
   */
  public java.util.List<? extends com.google.appengine.v1.UrlMapOrBuilder>
      getHandlersOrBuilderList() {
    return handlers_;
  }
  /**
   *

   * An ordered list of URL-matching patterns that should be applied to incoming
   * requests. The first matching URL handles the request and other request
   * handlers are not attempted.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.UrlMap handlers = 100;
   */
  public int getHandlersCount() {
    return handlers_.size();
  }
  /**
   *

   * An ordered list of URL-matching patterns that should be applied to incoming
   * requests. The first matching URL handles the request and other request
   * handlers are not attempted.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.UrlMap handlers = 100;
   */
  public com.google.appengine.v1.UrlMap getHandlers(int index) {
    return handlers_.get(index);
  }
  /**
   *

   * An ordered list of URL-matching patterns that should be applied to incoming
   * requests. The first matching URL handles the request and other request
   * handlers are not attempted.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.UrlMap handlers = 100;
   */
  public com.google.appengine.v1.UrlMapOrBuilder getHandlersOrBuilder(
      int index) {
    return handlers_.get(index);
  }

  public static final int ERROR_HANDLERS_FIELD_NUMBER = 101;
  private java.util.List<com.google.appengine.v1.ErrorHandler> errorHandlers_;
  /**
   *

   * Custom static error pages. Limited to 10KB per page.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
   */
  public java.util.List<com.google.appengine.v1.ErrorHandler> getErrorHandlersList() {
    return errorHandlers_;
  }
  /**
   *

   * Custom static error pages. Limited to 10KB per page.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
   */
  public java.util.List<? extends com.google.appengine.v1.ErrorHandlerOrBuilder>
      getErrorHandlersOrBuilderList() {
    return errorHandlers_;
  }
  /**
   *

   * Custom static error pages. Limited to 10KB per page.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
   */
  public int getErrorHandlersCount() {
    return errorHandlers_.size();
  }
  /**
   *

   * Custom static error pages. Limited to 10KB per page.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
   */
  public com.google.appengine.v1.ErrorHandler getErrorHandlers(int index) {
    return errorHandlers_.get(index);
  }
  /**
   *

   * Custom static error pages. Limited to 10KB per page.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
   */
  public com.google.appengine.v1.ErrorHandlerOrBuilder getErrorHandlersOrBuilder(
      int index) {
    return errorHandlers_.get(index);
  }

  public static final int LIBRARIES_FIELD_NUMBER = 102;
  private java.util.List<com.google.appengine.v1.Library> libraries_;
  /**
   *

   * Configuration for third-party Python runtime libraries that are required
   * by the application.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.Library libraries = 102;
   */
  public java.util.List<com.google.appengine.v1.Library> getLibrariesList() {
    return libraries_;
  }
  /**
   *

   * Configuration for third-party Python runtime libraries that are required
   * by the application.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.Library libraries = 102;
   */
  public java.util.List<? extends com.google.appengine.v1.LibraryOrBuilder>
      getLibrariesOrBuilderList() {
    return libraries_;
  }
  /**
   *

   * Configuration for third-party Python runtime libraries that are required
   * by the application.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.Library libraries = 102;
   */
  public int getLibrariesCount() {
    return libraries_.size();
  }
  /**
   *

   * Configuration for third-party Python runtime libraries that are required
   * by the application.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.Library libraries = 102;
   */
  public com.google.appengine.v1.Library getLibraries(int index) {
    return libraries_.get(index);
  }
  /**
   *

   * Configuration for third-party Python runtime libraries that are required
   * by the application.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * repeated .google.appengine.v1.Library libraries = 102;
   */
  public com.google.appengine.v1.LibraryOrBuilder getLibrariesOrBuilder(
      int index) {
    return libraries_.get(index);
  }

  public static final int API_CONFIG_FIELD_NUMBER = 103;
  private com.google.appengine.v1.ApiConfigHandler apiConfig_;
  /**
   *

   * Serving configuration for
   * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
   */
  public boolean hasApiConfig() {
    return apiConfig_ != null;
  }
  /**
   *

   * Serving configuration for
   * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
   */
  public com.google.appengine.v1.ApiConfigHandler getApiConfig() {
    return apiConfig_ == null ? com.google.appengine.v1.ApiConfigHandler.getDefaultInstance() : apiConfig_;
  }
  /**
   *

   * Serving configuration for
   * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
   */
  public com.google.appengine.v1.ApiConfigHandlerOrBuilder getApiConfigOrBuilder() {
    return getApiConfig();
  }

  public static final int ENV_VARIABLES_FIELD_NUMBER = 104;
  private static final class EnvVariablesDefaultEntryHolder {
    static final com.google.protobuf.MapEntry<
        java.lang.String, java.lang.String> defaultEntry =
            com.google.protobuf.MapEntry
            .<java.lang.String, java.lang.String>newDefaultInstance(
                com.google.appengine.v1.VersionProto.internal_static_google_appengine_v1_Version_EnvVariablesEntry_descriptor,
                com.google.protobuf.WireFormat.FieldType.STRING,
                "",
                com.google.protobuf.WireFormat.FieldType.STRING,
                "");
  }
  private com.google.protobuf.MapField<
      java.lang.String, java.lang.String> envVariables_;
  private com.google.protobuf.MapField<java.lang.String, java.lang.String>
  internalGetEnvVariables() {
    if (envVariables_ == null) {
      return com.google.protobuf.MapField.emptyMapField(
          EnvVariablesDefaultEntryHolder.defaultEntry);
    }
    return envVariables_;
  }

  public int getEnvVariablesCount() {
    return internalGetEnvVariables().getMap().size();
  }
  /**
   *

   * Environment variables available to the application.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * map<string, string> env_variables = 104;
   */

  public boolean containsEnvVariables(
      java.lang.String key) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    return internalGetEnvVariables().getMap().containsKey(key);
  }
  /**
   * Use {@link #getEnvVariablesMap()} instead.
   */
  @java.lang.Deprecated
  public java.util.Map<java.lang.String, java.lang.String> getEnvVariables() {
    return getEnvVariablesMap();
  }
  /**
   *

   * Environment variables available to the application.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * map<string, string> env_variables = 104;
   */

  public java.util.Map<java.lang.String, java.lang.String> getEnvVariablesMap() {
    return internalGetEnvVariables().getMap();
  }
  /**
   *

   * Environment variables available to the application.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * map<string, string> env_variables = 104;
   */

  public java.lang.String getEnvVariablesOrDefault(
      java.lang.String key,
      java.lang.String defaultValue) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    java.util.Map<java.lang.String, java.lang.String> map =
        internalGetEnvVariables().getMap();
    return map.containsKey(key) ? map.get(key) : defaultValue;
  }
  /**
   *

   * Environment variables available to the application.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * map<string, string> env_variables = 104;
   */

  public java.lang.String getEnvVariablesOrThrow(
      java.lang.String key) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    java.util.Map<java.lang.String, java.lang.String> map =
        internalGetEnvVariables().getMap();
    if (!map.containsKey(key)) {
      throw new java.lang.IllegalArgumentException();
    }
    return map.get(key);
  }

  public static final int DEFAULT_EXPIRATION_FIELD_NUMBER = 105;
  private com.google.protobuf.Duration defaultExpiration_;
  /**
   *

   * Duration that static files should be cached by web proxies and browsers.
   * Only applicable if the corresponding
   * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
   * does not specify its own expiration time.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.protobuf.Duration default_expiration = 105;
   */
  public boolean hasDefaultExpiration() {
    return defaultExpiration_ != null;
  }
  /**
   *

   * Duration that static files should be cached by web proxies and browsers.
   * Only applicable if the corresponding
   * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
   * does not specify its own expiration time.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.protobuf.Duration default_expiration = 105;
   */
  public com.google.protobuf.Duration getDefaultExpiration() {
    return defaultExpiration_ == null ? com.google.protobuf.Duration.getDefaultInstance() : defaultExpiration_;
  }
  /**
   *

   * Duration that static files should be cached by web proxies and browsers.
   * Only applicable if the corresponding
   * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
   * does not specify its own expiration time.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.protobuf.Duration default_expiration = 105;
   */
  public com.google.protobuf.DurationOrBuilder getDefaultExpirationOrBuilder() {
    return getDefaultExpiration();
  }

  public static final int HEALTH_CHECK_FIELD_NUMBER = 106;
  private com.google.appengine.v1.HealthCheck healthCheck_;
  /**
   *

   * Configures health checking for VM instances. Unhealthy instances are
   * stopped and replaced with new instances. Only applicable for VM
   * runtimes.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.appengine.v1.HealthCheck health_check = 106;
   */
  public boolean hasHealthCheck() {
    return healthCheck_ != null;
  }
  /**
   *

   * Configures health checking for VM instances. Unhealthy instances are
   * stopped and replaced with new instances. Only applicable for VM
   * runtimes.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.appengine.v1.HealthCheck health_check = 106;
   */
  public com.google.appengine.v1.HealthCheck getHealthCheck() {
    return healthCheck_ == null ? com.google.appengine.v1.HealthCheck.getDefaultInstance() : healthCheck_;
  }
  /**
   *

   * Configures health checking for VM instances. Unhealthy instances are
   * stopped and replaced with new instances. Only applicable for VM
   * runtimes.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.appengine.v1.HealthCheck health_check = 106;
   */
  public com.google.appengine.v1.HealthCheckOrBuilder getHealthCheckOrBuilder() {
    return getHealthCheck();
  }

  public static final int NOBUILD_FILES_REGEX_FIELD_NUMBER = 107;
  private volatile java.lang.Object nobuildFilesRegex_;
  /**
   *

   * Files that match this pattern will not be built into this version.
   * Only applicable for Go runtimes.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional string nobuild_files_regex = 107;
   */
  public java.lang.String getNobuildFilesRegex() {
    java.lang.Object ref = nobuildFilesRegex_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs =
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      nobuildFilesRegex_ = s;
      return s;
    }
  }
  /**
   *

   * Files that match this pattern will not be built into this version.
   * Only applicable for Go runtimes.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional string nobuild_files_regex = 107;
   */
  public com.google.protobuf.ByteString
      getNobuildFilesRegexBytes() {
    java.lang.Object ref = nobuildFilesRegex_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      nobuildFilesRegex_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int DEPLOYMENT_FIELD_NUMBER = 108;
  private com.google.appengine.v1.Deployment deployment_;
  /**
   *

   * Code and application artifacts that make up this version.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.appengine.v1.Deployment deployment = 108;
   */
  public boolean hasDeployment() {
    return deployment_ != null;
  }
  /**
   *

   * Code and application artifacts that make up this version.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.appengine.v1.Deployment deployment = 108;
   */
  public com.google.appengine.v1.Deployment getDeployment() {
    return deployment_ == null ? com.google.appengine.v1.Deployment.getDefaultInstance() : deployment_;
  }
  /**
   *

   * Code and application artifacts that make up this version.
   * Only returned in `GET` requests if `view=FULL` is set.
   *

   *
   * optional .google.appengine.v1.Deployment deployment = 108;
   */
  public com.google.appengine.v1.DeploymentOrBuilder getDeploymentOrBuilder() {
    return getDeployment();
  }

  public static final int VERSION_URL_FIELD_NUMBER = 109;
  private volatile java.lang.Object versionUrl_;
  /**
   *

   * Serving URL for this version. Example:
   * "https://myversion-dot-myservice-dot-myapp.appspot.com"
   * @OutputOnly
   *

   *
   * optional string version_url = 109;
   */
  public java.lang.String getVersionUrl() {
    java.lang.Object ref = versionUrl_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs =
          (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      versionUrl_ = s;
      return s;
    }
  }
  /**
   *

   * Serving URL for this version. Example:
   * "https://myversion-dot-myservice-dot-myapp.appspot.com"
   * @OutputOnly
   *

   *
   * optional string version_url = 109;
   */
  public com.google.protobuf.ByteString
      getVersionUrlBytes() {
    java.lang.Object ref = versionUrl_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      versionUrl_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  private byte memoizedIsInitialized = -1;
  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1) return true;
    if (isInitialized == 0) return false;

    memoizedIsInitialized = 1;
    return true;
  }

  public void writeTo(com.google.protobuf.CodedOutputStream output)
                      throws java.io.IOException {
    getSerializedSize();
    if (!getNameBytes().isEmpty()) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
    }
    if (!getIdBytes().isEmpty()) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 2, id_);
    }
    if (scalingCase_ == 3) {
      output.writeMessage(3, (com.google.appengine.v1.AutomaticScaling) scaling_);
    }
    if (scalingCase_ == 4) {
      output.writeMessage(4, (com.google.appengine.v1.BasicScaling) scaling_);
    }
    if (scalingCase_ == 5) {
      output.writeMessage(5, (com.google.appengine.v1.ManualScaling) scaling_);
    }
    if (getInboundServicesList().size() > 0) {
      output.writeUInt32NoTag(50);
      output.writeUInt32NoTag(inboundServicesMemoizedSerializedSize);
    }
    for (int i = 0; i < inboundServices_.size(); i++) {
      output.writeEnumNoTag(inboundServices_.get(i));
    }
    if (!getInstanceClassBytes().isEmpty()) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 7, instanceClass_);
    }
    if (network_ != null) {
      output.writeMessage(8, getNetwork());
    }
    if (resources_ != null) {
      output.writeMessage(9, getResources());
    }
    if (!getRuntimeBytes().isEmpty()) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 10, runtime_);
    }
    if (threadsafe_ != false) {
      output.writeBool(11, threadsafe_);
    }
    if (vm_ != false) {
      output.writeBool(12, vm_);
    }
    com.google.protobuf.GeneratedMessageV3
      .serializeStringMapTo(
        output,
        internalGetBetaSettings(),
        BetaSettingsDefaultEntryHolder.defaultEntry,
        13);
    if (!getEnvBytes().isEmpty()) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 14, env_);
    }
    if (servingStatus_ != com.google.appengine.v1.ServingStatus.SERVING_STATUS_UNSPECIFIED.getNumber()) {
      output.writeEnum(15, servingStatus_);
    }
    if (!getCreatedByBytes().isEmpty()) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 16, createdBy_);
    }
    if (createTime_ != null) {
      output.writeMessage(17, getCreateTime());
    }
    if (diskUsageBytes_ != 0L) {
      output.writeInt64(18, diskUsageBytes_);
    }
    for (int i = 0; i < handlers_.size(); i++) {
      output.writeMessage(100, handlers_.get(i));
    }
    for (int i = 0; i < errorHandlers_.size(); i++) {
      output.writeMessage(101, errorHandlers_.get(i));
    }
    for (int i = 0; i < libraries_.size(); i++) {
      output.writeMessage(102, libraries_.get(i));
    }
    if (apiConfig_ != null) {
      output.writeMessage(103, getApiConfig());
    }
    com.google.protobuf.GeneratedMessageV3
      .serializeStringMapTo(
        output,
        internalGetEnvVariables(),
        EnvVariablesDefaultEntryHolder.defaultEntry,
        104);
    if (defaultExpiration_ != null) {
      output.writeMessage(105, getDefaultExpiration());
    }
    if (healthCheck_ != null) {
      output.writeMessage(106, getHealthCheck());
    }
    if (!getNobuildFilesRegexBytes().isEmpty()) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 107, nobuildFilesRegex_);
    }
    if (deployment_ != null) {
      output.writeMessage(108, getDeployment());
    }
    if (!getVersionUrlBytes().isEmpty()) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 109, versionUrl_);
    }
  }

  public int getSerializedSize() {
    int size = memoizedSize;
    if (size != -1) return size;

    size = 0;
    if (!getNameBytes().isEmpty()) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
    }
    if (!getIdBytes().isEmpty()) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, id_);
    }
    if (scalingCase_ == 3) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(3, (com.google.appengine.v1.AutomaticScaling) scaling_);
    }
    if (scalingCase_ == 4) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(4, (com.google.appengine.v1.BasicScaling) scaling_);
    }
    if (scalingCase_ == 5) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(5, (com.google.appengine.v1.ManualScaling) scaling_);
    }
    {
      int dataSize = 0;
      for (int i = 0; i < inboundServices_.size(); i++) {
        dataSize += com.google.protobuf.CodedOutputStream
          .computeEnumSizeNoTag(inboundServices_.get(i));
      }
      size += dataSize;
      if (!getInboundServicesList().isEmpty()) {  size += 1;
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32SizeNoTag(dataSize);
      }inboundServicesMemoizedSerializedSize = dataSize;
    }
    if (!getInstanceClassBytes().isEmpty()) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, instanceClass_);
    }
    if (network_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(8, getNetwork());
    }
    if (resources_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(9, getResources());
    }
    if (!getRuntimeBytes().isEmpty()) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, runtime_);
    }
    if (threadsafe_ != false) {
      size += com.google.protobuf.CodedOutputStream
        .computeBoolSize(11, threadsafe_);
    }
    if (vm_ != false) {
      size += com.google.protobuf.CodedOutputStream
        .computeBoolSize(12, vm_);
    }
    for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
         : internalGetBetaSettings().getMap().entrySet()) {
      com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
      betaSettings__ = BetaSettingsDefaultEntryHolder.defaultEntry.newBuilderForType()
          .setKey(entry.getKey())
          .setValue(entry.getValue())
          .build();
      size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, betaSettings__);
    }
    if (!getEnvBytes().isEmpty()) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, env_);
    }
    if (servingStatus_ != com.google.appengine.v1.ServingStatus.SERVING_STATUS_UNSPECIFIED.getNumber()) {
      size += com.google.protobuf.CodedOutputStream
        .computeEnumSize(15, servingStatus_);
    }
    if (!getCreatedByBytes().isEmpty()) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, createdBy_);
    }
    if (createTime_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(17, getCreateTime());
    }
    if (diskUsageBytes_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(18, diskUsageBytes_);
    }
    for (int i = 0; i < handlers_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(100, handlers_.get(i));
    }
    for (int i = 0; i < errorHandlers_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(101, errorHandlers_.get(i));
    }
    for (int i = 0; i < libraries_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(102, libraries_.get(i));
    }
    if (apiConfig_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(103, getApiConfig());
    }
    for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
         : internalGetEnvVariables().getMap().entrySet()) {
      com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
      envVariables__ = EnvVariablesDefaultEntryHolder.defaultEntry.newBuilderForType()
          .setKey(entry.getKey())
          .setValue(entry.getValue())
          .build();
      size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(104, envVariables__);
    }
    if (defaultExpiration_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(105, getDefaultExpiration());
    }
    if (healthCheck_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(106, getHealthCheck());
    }
    if (!getNobuildFilesRegexBytes().isEmpty()) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(107, nobuildFilesRegex_);
    }
    if (deployment_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(108, getDeployment());
    }
    if (!getVersionUrlBytes().isEmpty()) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(109, versionUrl_);
    }
    memoizedSize = size;
    return size;
  }

  private static final long serialVersionUID = 0L;
  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
     return true;
    }
    if (!(obj instanceof com.google.appengine.v1.Version)) {
      return super.equals(obj);
    }
    com.google.appengine.v1.Version other = (com.google.appengine.v1.Version) obj;

    boolean result = true;
    result = result && getName()
        .equals(other.getName());
    result = result && getId()
        .equals(other.getId());
    result = result && inboundServices_.equals(other.inboundServices_);
    result = result && getInstanceClass()
        .equals(other.getInstanceClass());
    result = result && (hasNetwork() == other.hasNetwork());
    if (hasNetwork()) {
      result = result && getNetwork()
          .equals(other.getNetwork());
    }
    result = result && (hasResources() == other.hasResources());
    if (hasResources()) {
      result = result && getResources()
          .equals(other.getResources());
    }
    result = result && getRuntime()
        .equals(other.getRuntime());
    result = result && (getThreadsafe()
        == other.getThreadsafe());
    result = result && (getVm()
        == other.getVm());
    result = result && internalGetBetaSettings().equals(
        other.internalGetBetaSettings());
    result = result && getEnv()
        .equals(other.getEnv());
    result = result && servingStatus_ == other.servingStatus_;
    result = result && getCreatedBy()
        .equals(other.getCreatedBy());
    result = result && (hasCreateTime() == other.hasCreateTime());
    if (hasCreateTime()) {
      result = result && getCreateTime()
          .equals(other.getCreateTime());
    }
    result = result && (getDiskUsageBytes()
        == other.getDiskUsageBytes());
    result = result && getHandlersList()
        .equals(other.getHandlersList());
    result = result && getErrorHandlersList()
        .equals(other.getErrorHandlersList());
    result = result && getLibrariesList()
        .equals(other.getLibrariesList());
    result = result && (hasApiConfig() == other.hasApiConfig());
    if (hasApiConfig()) {
      result = result && getApiConfig()
          .equals(other.getApiConfig());
    }
    result = result && internalGetEnvVariables().equals(
        other.internalGetEnvVariables());
    result = result && (hasDefaultExpiration() == other.hasDefaultExpiration());
    if (hasDefaultExpiration()) {
      result = result && getDefaultExpiration()
          .equals(other.getDefaultExpiration());
    }
    result = result && (hasHealthCheck() == other.hasHealthCheck());
    if (hasHealthCheck()) {
      result = result && getHealthCheck()
          .equals(other.getHealthCheck());
    }
    result = result && getNobuildFilesRegex()
        .equals(other.getNobuildFilesRegex());
    result = result && (hasDeployment() == other.hasDeployment());
    if (hasDeployment()) {
      result = result && getDeployment()
          .equals(other.getDeployment());
    }
    result = result && getVersionUrl()
        .equals(other.getVersionUrl());
    result = result && getScalingCase().equals(
        other.getScalingCase());
    if (!result) return false;
    switch (scalingCase_) {
      case 3:
        result = result && getAutomaticScaling()
            .equals(other.getAutomaticScaling());
        break;
      case 4:
        result = result && getBasicScaling()
            .equals(other.getBasicScaling());
        break;
      case 5:
        result = result && getManualScaling()
            .equals(other.getManualScaling());
        break;
      case 0:
      default:
    }
    return result;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptorForType().hashCode();
    hash = (37 * hash) + NAME_FIELD_NUMBER;
    hash = (53 * hash) + getName().hashCode();
    hash = (37 * hash) + ID_FIELD_NUMBER;
    hash = (53 * hash) + getId().hashCode();
    if (getInboundServicesCount() > 0) {
      hash = (37 * hash) + INBOUND_SERVICES_FIELD_NUMBER;
      hash = (53 * hash) + inboundServices_.hashCode();
    }
    hash = (37 * hash) + INSTANCE_CLASS_FIELD_NUMBER;
    hash = (53 * hash) + getInstanceClass().hashCode();
    if (hasNetwork()) {
      hash = (37 * hash) + NETWORK_FIELD_NUMBER;
      hash = (53 * hash) + getNetwork().hashCode();
    }
    if (hasResources()) {
      hash = (37 * hash) + RESOURCES_FIELD_NUMBER;
      hash = (53 * hash) + getResources().hashCode();
    }
    hash = (37 * hash) + RUNTIME_FIELD_NUMBER;
    hash = (53 * hash) + getRuntime().hashCode();
    hash = (37 * hash) + THREADSAFE_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
        getThreadsafe());
    hash = (37 * hash) + VM_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
        getVm());
    if (!internalGetBetaSettings().getMap().isEmpty()) {
      hash = (37 * hash) + BETA_SETTINGS_FIELD_NUMBER;
      hash = (53 * hash) + internalGetBetaSettings().hashCode();
    }
    hash = (37 * hash) + ENV_FIELD_NUMBER;
    hash = (53 * hash) + getEnv().hashCode();
    hash = (37 * hash) + SERVING_STATUS_FIELD_NUMBER;
    hash = (53 * hash) + servingStatus_;
    hash = (37 * hash) + CREATED_BY_FIELD_NUMBER;
    hash = (53 * hash) + getCreatedBy().hashCode();
    if (hasCreateTime()) {
      hash = (37 * hash) + CREATE_TIME_FIELD_NUMBER;
      hash = (53 * hash) + getCreateTime().hashCode();
    }
    hash = (37 * hash) + DISK_USAGE_BYTES_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getDiskUsageBytes());
    if (getHandlersCount() > 0) {
      hash = (37 * hash) + HANDLERS_FIELD_NUMBER;
      hash = (53 * hash) + getHandlersList().hashCode();
    }
    if (getErrorHandlersCount() > 0) {
      hash = (37 * hash) + ERROR_HANDLERS_FIELD_NUMBER;
      hash = (53 * hash) + getErrorHandlersList().hashCode();
    }
    if (getLibrariesCount() > 0) {
      hash = (37 * hash) + LIBRARIES_FIELD_NUMBER;
      hash = (53 * hash) + getLibrariesList().hashCode();
    }
    if (hasApiConfig()) {
      hash = (37 * hash) + API_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getApiConfig().hashCode();
    }
    if (!internalGetEnvVariables().getMap().isEmpty()) {
      hash = (37 * hash) + ENV_VARIABLES_FIELD_NUMBER;
      hash = (53 * hash) + internalGetEnvVariables().hashCode();
    }
    if (hasDefaultExpiration()) {
      hash = (37 * hash) + DEFAULT_EXPIRATION_FIELD_NUMBER;
      hash = (53 * hash) + getDefaultExpiration().hashCode();
    }
    if (hasHealthCheck()) {
      hash = (37 * hash) + HEALTH_CHECK_FIELD_NUMBER;
      hash = (53 * hash) + getHealthCheck().hashCode();
    }
    hash = (37 * hash) + NOBUILD_FILES_REGEX_FIELD_NUMBER;
    hash = (53 * hash) + getNobuildFilesRegex().hashCode();
    if (hasDeployment()) {
      hash = (37 * hash) + DEPLOYMENT_FIELD_NUMBER;
      hash = (53 * hash) + getDeployment().hashCode();
    }
    hash = (37 * hash) + VERSION_URL_FIELD_NUMBER;
    hash = (53 * hash) + getVersionUrl().hashCode();
    switch (scalingCase_) {
      case 3:
        hash = (37 * hash) + AUTOMATIC_SCALING_FIELD_NUMBER;
        hash = (53 * hash) + getAutomaticScaling().hashCode();
        break;
      case 4:
        hash = (37 * hash) + BASIC_SCALING_FIELD_NUMBER;
        hash = (53 * hash) + getBasicScaling().hashCode();
        break;
      case 5:
        hash = (37 * hash) + MANUAL_SCALING_FIELD_NUMBER;
        hash = (53 * hash) + getManualScaling().hashCode();
        break;
      case 0:
      default:
    }
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static com.google.appengine.v1.Version parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static com.google.appengine.v1.Version parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static com.google.appengine.v1.Version parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static com.google.appengine.v1.Version parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static com.google.appengine.v1.Version parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static com.google.appengine.v1.Version parseFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }
  public static com.google.appengine.v1.Version parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }
  public static com.google.appengine.v1.Version parseDelimitedFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
  }
  public static com.google.appengine.v1.Version parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static com.google.appengine.v1.Version parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  public Builder newBuilderForType() { return newBuilder(); }
  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }
  public static Builder newBuilder(com.google.appengine.v1.Version prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(
      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   *

   * A Version resource is a specific set of source code and configuration files
   * that are deployed into a service.
   *

   *
   * Protobuf type {@code google.appengine.v1.Version}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:google.appengine.v1.Version)
      com.google.appengine.v1.VersionOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.appengine.v1.VersionProto.internal_static_google_appengine_v1_Version_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 13:
          return internalGetBetaSettings();
        case 104:
          return internalGetEnvVariables();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMutableMapField(
        int number) {
      switch (number) {
        case 13:
          return internalGetMutableBetaSettings();
        case 104:
          return internalGetMutableEnvVariables();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.appengine.v1.VersionProto.internal_static_google_appengine_v1_Version_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.appengine.v1.Version.class, com.google.appengine.v1.Version.Builder.class);
    }

    // Construct using com.google.appengine.v1.Version.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }
    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3
              .alwaysUseFieldBuilders) {
        getHandlersFieldBuilder();
        getErrorHandlersFieldBuilder();
        getLibrariesFieldBuilder();
      }
    }
    public Builder clear() {
      super.clear();
      name_ = "";

      id_ = "";

      inboundServices_ = java.util.Collections.emptyList();
      bitField0_ = (bitField0_ & ~0x00000020);
      instanceClass_ = "";

      if (networkBuilder_ == null) {
        network_ = null;
      } else {
        network_ = null;
        networkBuilder_ = null;
      }
      if (resourcesBuilder_ == null) {
        resources_ = null;
      } else {
        resources_ = null;
        resourcesBuilder_ = null;
      }
      runtime_ = "";

      threadsafe_ = false;

      vm_ = false;

      internalGetMutableBetaSettings().clear();
      env_ = "";

      servingStatus_ = 0;

      createdBy_ = "";

      if (createTimeBuilder_ == null) {
        createTime_ = null;
      } else {
        createTime_ = null;
        createTimeBuilder_ = null;
      }
      diskUsageBytes_ = 0L;

      if (handlersBuilder_ == null) {
        handlers_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00040000);
      } else {
        handlersBuilder_.clear();
      }
      if (errorHandlersBuilder_ == null) {
        errorHandlers_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00080000);
      } else {
        errorHandlersBuilder_.clear();
      }
      if (librariesBuilder_ == null) {
        libraries_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00100000);
      } else {
        librariesBuilder_.clear();
      }
      if (apiConfigBuilder_ == null) {
        apiConfig_ = null;
      } else {
        apiConfig_ = null;
        apiConfigBuilder_ = null;
      }
      internalGetMutableEnvVariables().clear();
      if (defaultExpirationBuilder_ == null) {
        defaultExpiration_ = null;
      } else {
        defaultExpiration_ = null;
        defaultExpirationBuilder_ = null;
      }
      if (healthCheckBuilder_ == null) {
        healthCheck_ = null;
      } else {
        healthCheck_ = null;
        healthCheckBuilder_ = null;
      }
      nobuildFilesRegex_ = "";

      if (deploymentBuilder_ == null) {
        deployment_ = null;
      } else {
        deployment_ = null;
        deploymentBuilder_ = null;
      }
      versionUrl_ = "";

      scalingCase_ = 0;
      scaling_ = null;
      return this;
    }

    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return com.google.appengine.v1.VersionProto.internal_static_google_appengine_v1_Version_descriptor;
    }

    public com.google.appengine.v1.Version getDefaultInstanceForType() {
      return com.google.appengine.v1.Version.getDefaultInstance();
    }

    public com.google.appengine.v1.Version build() {
      com.google.appengine.v1.Version result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    public com.google.appengine.v1.Version buildPartial() {
      com.google.appengine.v1.Version result = new com.google.appengine.v1.Version(this);
      int from_bitField0_ = bitField0_;
      int to_bitField0_ = 0;
      result.name_ = name_;
      result.id_ = id_;
      if (scalingCase_ == 3) {
        if (automaticScalingBuilder_ == null) {
          result.scaling_ = scaling_;
        } else {
          result.scaling_ = automaticScalingBuilder_.build();
        }
      }
      if (scalingCase_ == 4) {
        if (basicScalingBuilder_ == null) {
          result.scaling_ = scaling_;
        } else {
          result.scaling_ = basicScalingBuilder_.build();
        }
      }
      if (scalingCase_ == 5) {
        if (manualScalingBuilder_ == null) {
          result.scaling_ = scaling_;
        } else {
          result.scaling_ = manualScalingBuilder_.build();
        }
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        inboundServices_ = java.util.Collections.unmodifiableList(inboundServices_);
        bitField0_ = (bitField0_ & ~0x00000020);
      }
      result.inboundServices_ = inboundServices_;
      result.instanceClass_ = instanceClass_;
      if (networkBuilder_ == null) {
        result.network_ = network_;
      } else {
        result.network_ = networkBuilder_.build();
      }
      if (resourcesBuilder_ == null) {
        result.resources_ = resources_;
      } else {
        result.resources_ = resourcesBuilder_.build();
      }
      result.runtime_ = runtime_;
      result.threadsafe_ = threadsafe_;
      result.vm_ = vm_;
      result.betaSettings_ = internalGetBetaSettings();
      result.betaSettings_.makeImmutable();
      result.env_ = env_;
      result.servingStatus_ = servingStatus_;
      result.createdBy_ = createdBy_;
      if (createTimeBuilder_ == null) {
        result.createTime_ = createTime_;
      } else {
        result.createTime_ = createTimeBuilder_.build();
      }
      result.diskUsageBytes_ = diskUsageBytes_;
      if (handlersBuilder_ == null) {
        if (((bitField0_ & 0x00040000) == 0x00040000)) {
          handlers_ = java.util.Collections.unmodifiableList(handlers_);
          bitField0_ = (bitField0_ & ~0x00040000);
        }
        result.handlers_ = handlers_;
      } else {
        result.handlers_ = handlersBuilder_.build();
      }
      if (errorHandlersBuilder_ == null) {
        if (((bitField0_ & 0x00080000) == 0x00080000)) {
          errorHandlers_ = java.util.Collections.unmodifiableList(errorHandlers_);
          bitField0_ = (bitField0_ & ~0x00080000);
        }
        result.errorHandlers_ = errorHandlers_;
      } else {
        result.errorHandlers_ = errorHandlersBuilder_.build();
      }
      if (librariesBuilder_ == null) {
        if (((bitField0_ & 0x00100000) == 0x00100000)) {
          libraries_ = java.util.Collections.unmodifiableList(libraries_);
          bitField0_ = (bitField0_ & ~0x00100000);
        }
        result.libraries_ = libraries_;
      } else {
        result.libraries_ = librariesBuilder_.build();
      }
      if (apiConfigBuilder_ == null) {
        result.apiConfig_ = apiConfig_;
      } else {
        result.apiConfig_ = apiConfigBuilder_.build();
      }
      result.envVariables_ = internalGetEnvVariables();
      result.envVariables_.makeImmutable();
      if (defaultExpirationBuilder_ == null) {
        result.defaultExpiration_ = defaultExpiration_;
      } else {
        result.defaultExpiration_ = defaultExpirationBuilder_.build();
      }
      if (healthCheckBuilder_ == null) {
        result.healthCheck_ = healthCheck_;
      } else {
        result.healthCheck_ = healthCheckBuilder_.build();
      }
      result.nobuildFilesRegex_ = nobuildFilesRegex_;
      if (deploymentBuilder_ == null) {
        result.deployment_ = deployment_;
      } else {
        result.deployment_ = deploymentBuilder_.build();
      }
      result.versionUrl_ = versionUrl_;
      result.bitField0_ = to_bitField0_;
      result.scalingCase_ = scalingCase_;
      onBuilt();
      return result;
    }

    public Builder clone() {
      return (Builder) super.clone();
    }
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        Object value) {
      return (Builder) super.setField(field, value);
    }
    public Builder clearField(
        com.google.protobuf.Descriptors.FieldDescriptor field) {
      return (Builder) super.clearField(field);
    }
    public Builder clearOneof(
        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return (Builder) super.clearOneof(oneof);
    }
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        int index, Object value) {
      return (Builder) super.setRepeatedField(field, index, value);
    }
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        Object value) {
      return (Builder) super.addRepeatedField(field, value);
    }
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof com.google.appengine.v1.Version) {
        return mergeFrom((com.google.appengine.v1.Version)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.appengine.v1.Version other) {
      if (other == com.google.appengine.v1.Version.getDefaultInstance()) return this;
      if (!other.getName().isEmpty()) {
        name_ = other.name_;
        onChanged();
      }
      if (!other.getId().isEmpty()) {
        id_ = other.id_;
        onChanged();
      }
      if (!other.inboundServices_.isEmpty()) {
        if (inboundServices_.isEmpty()) {
          inboundServices_ = other.inboundServices_;
          bitField0_ = (bitField0_ & ~0x00000020);
        } else {
          ensureInboundServicesIsMutable();
          inboundServices_.addAll(other.inboundServices_);
        }
        onChanged();
      }
      if (!other.getInstanceClass().isEmpty()) {
        instanceClass_ = other.instanceClass_;
        onChanged();
      }
      if (other.hasNetwork()) {
        mergeNetwork(other.getNetwork());
      }
      if (other.hasResources()) {
        mergeResources(other.getResources());
      }
      if (!other.getRuntime().isEmpty()) {
        runtime_ = other.runtime_;
        onChanged();
      }
      if (other.getThreadsafe() != false) {
        setThreadsafe(other.getThreadsafe());
      }
      if (other.getVm() != false) {
        setVm(other.getVm());
      }
      internalGetMutableBetaSettings().mergeFrom(
          other.internalGetBetaSettings());
      if (!other.getEnv().isEmpty()) {
        env_ = other.env_;
        onChanged();
      }
      if (other.servingStatus_ != 0) {
        setServingStatusValue(other.getServingStatusValue());
      }
      if (!other.getCreatedBy().isEmpty()) {
        createdBy_ = other.createdBy_;
        onChanged();
      }
      if (other.hasCreateTime()) {
        mergeCreateTime(other.getCreateTime());
      }
      if (other.getDiskUsageBytes() != 0L) {
        setDiskUsageBytes(other.getDiskUsageBytes());
      }
      if (handlersBuilder_ == null) {
        if (!other.handlers_.isEmpty()) {
          if (handlers_.isEmpty()) {
            handlers_ = other.handlers_;
            bitField0_ = (bitField0_ & ~0x00040000);
          } else {
            ensureHandlersIsMutable();
            handlers_.addAll(other.handlers_);
          }
          onChanged();
        }
      } else {
        if (!other.handlers_.isEmpty()) {
          if (handlersBuilder_.isEmpty()) {
            handlersBuilder_.dispose();
            handlersBuilder_ = null;
            handlers_ = other.handlers_;
            bitField0_ = (bitField0_ & ~0x00040000);
            handlersBuilder_ =
              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                 getHandlersFieldBuilder() : null;
          } else {
            handlersBuilder_.addAllMessages(other.handlers_);
          }
        }
      }
      if (errorHandlersBuilder_ == null) {
        if (!other.errorHandlers_.isEmpty()) {
          if (errorHandlers_.isEmpty()) {
            errorHandlers_ = other.errorHandlers_;
            bitField0_ = (bitField0_ & ~0x00080000);
          } else {
            ensureErrorHandlersIsMutable();
            errorHandlers_.addAll(other.errorHandlers_);
          }
          onChanged();
        }
      } else {
        if (!other.errorHandlers_.isEmpty()) {
          if (errorHandlersBuilder_.isEmpty()) {
            errorHandlersBuilder_.dispose();
            errorHandlersBuilder_ = null;
            errorHandlers_ = other.errorHandlers_;
            bitField0_ = (bitField0_ & ~0x00080000);
            errorHandlersBuilder_ =
              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                 getErrorHandlersFieldBuilder() : null;
          } else {
            errorHandlersBuilder_.addAllMessages(other.errorHandlers_);
          }
        }
      }
      if (librariesBuilder_ == null) {
        if (!other.libraries_.isEmpty()) {
          if (libraries_.isEmpty()) {
            libraries_ = other.libraries_;
            bitField0_ = (bitField0_ & ~0x00100000);
          } else {
            ensureLibrariesIsMutable();
            libraries_.addAll(other.libraries_);
          }
          onChanged();
        }
      } else {
        if (!other.libraries_.isEmpty()) {
          if (librariesBuilder_.isEmpty()) {
            librariesBuilder_.dispose();
            librariesBuilder_ = null;
            libraries_ = other.libraries_;
            bitField0_ = (bitField0_ & ~0x00100000);
            librariesBuilder_ =
              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                 getLibrariesFieldBuilder() : null;
          } else {
            librariesBuilder_.addAllMessages(other.libraries_);
          }
        }
      }
      if (other.hasApiConfig()) {
        mergeApiConfig(other.getApiConfig());
      }
      internalGetMutableEnvVariables().mergeFrom(
          other.internalGetEnvVariables());
      if (other.hasDefaultExpiration()) {
        mergeDefaultExpiration(other.getDefaultExpiration());
      }
      if (other.hasHealthCheck()) {
        mergeHealthCheck(other.getHealthCheck());
      }
      if (!other.getNobuildFilesRegex().isEmpty()) {
        nobuildFilesRegex_ = other.nobuildFilesRegex_;
        onChanged();
      }
      if (other.hasDeployment()) {
        mergeDeployment(other.getDeployment());
      }
      if (!other.getVersionUrl().isEmpty()) {
        versionUrl_ = other.versionUrl_;
        onChanged();
      }
      switch (other.getScalingCase()) {
        case AUTOMATIC_SCALING: {
          mergeAutomaticScaling(other.getAutomaticScaling());
          break;
        }
        case BASIC_SCALING: {
          mergeBasicScaling(other.getBasicScaling());
          break;
        }
        case MANUAL_SCALING: {
          mergeManualScaling(other.getManualScaling());
          break;
        }
        case SCALING_NOT_SET: {
          break;
        }
      }
      onChanged();
      return this;
    }

    public final boolean isInitialized() {
      return true;
    }

    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      com.google.appengine.v1.Version parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (com.google.appengine.v1.Version) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }
    private int scalingCase_ = 0;
    private java.lang.Object scaling_;
    public ScalingCase
        getScalingCase() {
      return ScalingCase.forNumber(
          scalingCase_);
    }

    public Builder clearScaling() {
      scalingCase_ = 0;
      scaling_ = null;
      onChanged();
      return this;
    }

    private int bitField0_;

    private java.lang.Object name_ = "";
    /**
     *

     * Full path to the Version resource in the API.  Example:
     * `apps/myapp/services/default/versions/v1`.
     * @OutputOnly
     *

     *
     * optional string name = 1;
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *

     * Full path to the Version resource in the API.  Example:
     * `apps/myapp/services/default/versions/v1`.
     * @OutputOnly
     *

     *
     * optional string name = 1;
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *

     * Full path to the Version resource in the API.  Example:
     * `apps/myapp/services/default/versions/v1`.
     * @OutputOnly
     *

     *
     * optional string name = 1;
     */
    public Builder setName(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }

      name_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * Full path to the Version resource in the API.  Example:
     * `apps/myapp/services/default/versions/v1`.
     * @OutputOnly
     *

     *
     * optional string name = 1;
     */
    public Builder clearName() {

      name_ = getDefaultInstance().getName();
      onChanged();
      return this;
    }
    /**
     *

     * Full path to the Version resource in the API.  Example:
     * `apps/myapp/services/default/versions/v1`.
     * @OutputOnly
     *

     *
     * optional string name = 1;
     */
    public Builder setNameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

      name_ = value;
      onChanged();
      return this;
    }

    private java.lang.Object id_ = "";
    /**
     *

     * Relative name of the version within the service.  Example: `v1`.
     * Version names can contain only lowercase letters, numbers, or hyphens.
     * Reserved names: "default", "latest", and any name with the prefix "ah-".
     *

     *
     * optional string id = 2;
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *

     * Relative name of the version within the service.  Example: `v1`.
     * Version names can contain only lowercase letters, numbers, or hyphens.
     * Reserved names: "default", "latest", and any name with the prefix "ah-".
     *

     *
     * optional string id = 2;
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *

     * Relative name of the version within the service.  Example: `v1`.
     * Version names can contain only lowercase letters, numbers, or hyphens.
     * Reserved names: "default", "latest", and any name with the prefix "ah-".
     *

     *
     * optional string id = 2;
     */
    public Builder setId(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }

      id_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * Relative name of the version within the service.  Example: `v1`.
     * Version names can contain only lowercase letters, numbers, or hyphens.
     * Reserved names: "default", "latest", and any name with the prefix "ah-".
     *

     *
     * optional string id = 2;
     */
    public Builder clearId() {

      id_ = getDefaultInstance().getId();
      onChanged();
      return this;
    }
    /**
     *

     * Relative name of the version within the service.  Example: `v1`.
     * Version names can contain only lowercase letters, numbers, or hyphens.
     * Reserved names: "default", "latest", and any name with the prefix "ah-".
     *

     *
     * optional string id = 2;
     */
    public Builder setIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

      id_ = value;
      onChanged();
      return this;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.AutomaticScaling, com.google.appengine.v1.AutomaticScaling.Builder, com.google.appengine.v1.AutomaticScalingOrBuilder> automaticScalingBuilder_;
    /**
     *

     * Automatic scaling is based on request rate, response latencies, and other
     * application metrics.
     *

     *
     * optional .google.appengine.v1.AutomaticScaling automatic_scaling = 3;
     */
    public com.google.appengine.v1.AutomaticScaling getAutomaticScaling() {
      if (automaticScalingBuilder_ == null) {
        if (scalingCase_ == 3) {
          return (com.google.appengine.v1.AutomaticScaling) scaling_;
        }
        return com.google.appengine.v1.AutomaticScaling.getDefaultInstance();
      } else {
        if (scalingCase_ == 3) {
          return automaticScalingBuilder_.getMessage();
        }
        return com.google.appengine.v1.AutomaticScaling.getDefaultInstance();
      }
    }
    /**
     *

     * Automatic scaling is based on request rate, response latencies, and other
     * application metrics.
     *

     *
     * optional .google.appengine.v1.AutomaticScaling automatic_scaling = 3;
     */
    public Builder setAutomaticScaling(com.google.appengine.v1.AutomaticScaling value) {
      if (automaticScalingBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        scaling_ = value;
        onChanged();
      } else {
        automaticScalingBuilder_.setMessage(value);
      }
      scalingCase_ = 3;
      return this;
    }
    /**
     *

     * Automatic scaling is based on request rate, response latencies, and other
     * application metrics.
     *

     *
     * optional .google.appengine.v1.AutomaticScaling automatic_scaling = 3;
     */
    public Builder setAutomaticScaling(
        com.google.appengine.v1.AutomaticScaling.Builder builderForValue) {
      if (automaticScalingBuilder_ == null) {
        scaling_ = builderForValue.build();
        onChanged();
      } else {
        automaticScalingBuilder_.setMessage(builderForValue.build());
      }
      scalingCase_ = 3;
      return this;
    }
    /**
     *

     * Automatic scaling is based on request rate, response latencies, and other
     * application metrics.
     *

     *
     * optional .google.appengine.v1.AutomaticScaling automatic_scaling = 3;
     */
    public Builder mergeAutomaticScaling(com.google.appengine.v1.AutomaticScaling value) {
      if (automaticScalingBuilder_ == null) {
        if (scalingCase_ == 3 &&
            scaling_ != com.google.appengine.v1.AutomaticScaling.getDefaultInstance()) {
          scaling_ = com.google.appengine.v1.AutomaticScaling.newBuilder((com.google.appengine.v1.AutomaticScaling) scaling_)
              .mergeFrom(value).buildPartial();
        } else {
          scaling_ = value;
        }
        onChanged();
      } else {
        if (scalingCase_ == 3) {
          automaticScalingBuilder_.mergeFrom(value);
        }
        automaticScalingBuilder_.setMessage(value);
      }
      scalingCase_ = 3;
      return this;
    }
    /**
     *

     * Automatic scaling is based on request rate, response latencies, and other
     * application metrics.
     *

     *
     * optional .google.appengine.v1.AutomaticScaling automatic_scaling = 3;
     */
    public Builder clearAutomaticScaling() {
      if (automaticScalingBuilder_ == null) {
        if (scalingCase_ == 3) {
          scalingCase_ = 0;
          scaling_ = null;
          onChanged();
        }
      } else {
        if (scalingCase_ == 3) {
          scalingCase_ = 0;
          scaling_ = null;
        }
        automaticScalingBuilder_.clear();
      }
      return this;
    }
    /**
     *

     * Automatic scaling is based on request rate, response latencies, and other
     * application metrics.
     *

     *
     * optional .google.appengine.v1.AutomaticScaling automatic_scaling = 3;
     */
    public com.google.appengine.v1.AutomaticScaling.Builder getAutomaticScalingBuilder() {
      return getAutomaticScalingFieldBuilder().getBuilder();
    }
    /**
     *

     * Automatic scaling is based on request rate, response latencies, and other
     * application metrics.
     *

     *
     * optional .google.appengine.v1.AutomaticScaling automatic_scaling = 3;
     */
    public com.google.appengine.v1.AutomaticScalingOrBuilder getAutomaticScalingOrBuilder() {
      if ((scalingCase_ == 3) && (automaticScalingBuilder_ != null)) {
        return automaticScalingBuilder_.getMessageOrBuilder();
      } else {
        if (scalingCase_ == 3) {
          return (com.google.appengine.v1.AutomaticScaling) scaling_;
        }
        return com.google.appengine.v1.AutomaticScaling.getDefaultInstance();
      }
    }
    /**
     *

     * Automatic scaling is based on request rate, response latencies, and other
     * application metrics.
     *

     *
     * optional .google.appengine.v1.AutomaticScaling automatic_scaling = 3;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.AutomaticScaling, com.google.appengine.v1.AutomaticScaling.Builder, com.google.appengine.v1.AutomaticScalingOrBuilder>
        getAutomaticScalingFieldBuilder() {
      if (automaticScalingBuilder_ == null) {
        if (!(scalingCase_ == 3)) {
          scaling_ = com.google.appengine.v1.AutomaticScaling.getDefaultInstance();
        }
        automaticScalingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.AutomaticScaling, com.google.appengine.v1.AutomaticScaling.Builder, com.google.appengine.v1.AutomaticScalingOrBuilder>(
                (com.google.appengine.v1.AutomaticScaling) scaling_,
                getParentForChildren(),
                isClean());
        scaling_ = null;
      }
      scalingCase_ = 3;
      onChanged();;
      return automaticScalingBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.BasicScaling, com.google.appengine.v1.BasicScaling.Builder, com.google.appengine.v1.BasicScalingOrBuilder> basicScalingBuilder_;
    /**
     *

     * A service with basic scaling will create an instance when the application
     * receives a request. The instance will be turned down when the app becomes
     * idle. Basic scaling is ideal for work that is intermittent or driven by
     * user activity.
     *

     *
     * optional .google.appengine.v1.BasicScaling basic_scaling = 4;
     */
    public com.google.appengine.v1.BasicScaling getBasicScaling() {
      if (basicScalingBuilder_ == null) {
        if (scalingCase_ == 4) {
          return (com.google.appengine.v1.BasicScaling) scaling_;
        }
        return com.google.appengine.v1.BasicScaling.getDefaultInstance();
      } else {
        if (scalingCase_ == 4) {
          return basicScalingBuilder_.getMessage();
        }
        return com.google.appengine.v1.BasicScaling.getDefaultInstance();
      }
    }
    /**
     *

     * A service with basic scaling will create an instance when the application
     * receives a request. The instance will be turned down when the app becomes
     * idle. Basic scaling is ideal for work that is intermittent or driven by
     * user activity.
     *

     *
     * optional .google.appengine.v1.BasicScaling basic_scaling = 4;
     */
    public Builder setBasicScaling(com.google.appengine.v1.BasicScaling value) {
      if (basicScalingBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        scaling_ = value;
        onChanged();
      } else {
        basicScalingBuilder_.setMessage(value);
      }
      scalingCase_ = 4;
      return this;
    }
    /**
     *

     * A service with basic scaling will create an instance when the application
     * receives a request. The instance will be turned down when the app becomes
     * idle. Basic scaling is ideal for work that is intermittent or driven by
     * user activity.
     *

     *
     * optional .google.appengine.v1.BasicScaling basic_scaling = 4;
     */
    public Builder setBasicScaling(
        com.google.appengine.v1.BasicScaling.Builder builderForValue) {
      if (basicScalingBuilder_ == null) {
        scaling_ = builderForValue.build();
        onChanged();
      } else {
        basicScalingBuilder_.setMessage(builderForValue.build());
      }
      scalingCase_ = 4;
      return this;
    }
    /**
     *

     * A service with basic scaling will create an instance when the application
     * receives a request. The instance will be turned down when the app becomes
     * idle. Basic scaling is ideal for work that is intermittent or driven by
     * user activity.
     *

     *
     * optional .google.appengine.v1.BasicScaling basic_scaling = 4;
     */
    public Builder mergeBasicScaling(com.google.appengine.v1.BasicScaling value) {
      if (basicScalingBuilder_ == null) {
        if (scalingCase_ == 4 &&
            scaling_ != com.google.appengine.v1.BasicScaling.getDefaultInstance()) {
          scaling_ = com.google.appengine.v1.BasicScaling.newBuilder((com.google.appengine.v1.BasicScaling) scaling_)
              .mergeFrom(value).buildPartial();
        } else {
          scaling_ = value;
        }
        onChanged();
      } else {
        if (scalingCase_ == 4) {
          basicScalingBuilder_.mergeFrom(value);
        }
        basicScalingBuilder_.setMessage(value);
      }
      scalingCase_ = 4;
      return this;
    }
    /**
     *

     * A service with basic scaling will create an instance when the application
     * receives a request. The instance will be turned down when the app becomes
     * idle. Basic scaling is ideal for work that is intermittent or driven by
     * user activity.
     *

     *
     * optional .google.appengine.v1.BasicScaling basic_scaling = 4;
     */
    public Builder clearBasicScaling() {
      if (basicScalingBuilder_ == null) {
        if (scalingCase_ == 4) {
          scalingCase_ = 0;
          scaling_ = null;
          onChanged();
        }
      } else {
        if (scalingCase_ == 4) {
          scalingCase_ = 0;
          scaling_ = null;
        }
        basicScalingBuilder_.clear();
      }
      return this;
    }
    /**
     *

     * A service with basic scaling will create an instance when the application
     * receives a request. The instance will be turned down when the app becomes
     * idle. Basic scaling is ideal for work that is intermittent or driven by
     * user activity.
     *

     *
     * optional .google.appengine.v1.BasicScaling basic_scaling = 4;
     */
    public com.google.appengine.v1.BasicScaling.Builder getBasicScalingBuilder() {
      return getBasicScalingFieldBuilder().getBuilder();
    }
    /**
     *

     * A service with basic scaling will create an instance when the application
     * receives a request. The instance will be turned down when the app becomes
     * idle. Basic scaling is ideal for work that is intermittent or driven by
     * user activity.
     *

     *
     * optional .google.appengine.v1.BasicScaling basic_scaling = 4;
     */
    public com.google.appengine.v1.BasicScalingOrBuilder getBasicScalingOrBuilder() {
      if ((scalingCase_ == 4) && (basicScalingBuilder_ != null)) {
        return basicScalingBuilder_.getMessageOrBuilder();
      } else {
        if (scalingCase_ == 4) {
          return (com.google.appengine.v1.BasicScaling) scaling_;
        }
        return com.google.appengine.v1.BasicScaling.getDefaultInstance();
      }
    }
    /**
     *

     * A service with basic scaling will create an instance when the application
     * receives a request. The instance will be turned down when the app becomes
     * idle. Basic scaling is ideal for work that is intermittent or driven by
     * user activity.
     *

     *
     * optional .google.appengine.v1.BasicScaling basic_scaling = 4;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.BasicScaling, com.google.appengine.v1.BasicScaling.Builder, com.google.appengine.v1.BasicScalingOrBuilder>
        getBasicScalingFieldBuilder() {
      if (basicScalingBuilder_ == null) {
        if (!(scalingCase_ == 4)) {
          scaling_ = com.google.appengine.v1.BasicScaling.getDefaultInstance();
        }
        basicScalingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.BasicScaling, com.google.appengine.v1.BasicScaling.Builder, com.google.appengine.v1.BasicScalingOrBuilder>(
                (com.google.appengine.v1.BasicScaling) scaling_,
                getParentForChildren(),
                isClean());
        scaling_ = null;
      }
      scalingCase_ = 4;
      onChanged();;
      return basicScalingBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.ManualScaling, com.google.appengine.v1.ManualScaling.Builder, com.google.appengine.v1.ManualScalingOrBuilder> manualScalingBuilder_;
    /**
     *

     * A service with manual scaling runs continuously, allowing you to perform
     * complex initialization and rely on the state of its memory over time.
     *

     *
     * optional .google.appengine.v1.ManualScaling manual_scaling = 5;
     */
    public com.google.appengine.v1.ManualScaling getManualScaling() {
      if (manualScalingBuilder_ == null) {
        if (scalingCase_ == 5) {
          return (com.google.appengine.v1.ManualScaling) scaling_;
        }
        return com.google.appengine.v1.ManualScaling.getDefaultInstance();
      } else {
        if (scalingCase_ == 5) {
          return manualScalingBuilder_.getMessage();
        }
        return com.google.appengine.v1.ManualScaling.getDefaultInstance();
      }
    }
    /**
     *

     * A service with manual scaling runs continuously, allowing you to perform
     * complex initialization and rely on the state of its memory over time.
     *

     *
     * optional .google.appengine.v1.ManualScaling manual_scaling = 5;
     */
    public Builder setManualScaling(com.google.appengine.v1.ManualScaling value) {
      if (manualScalingBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        scaling_ = value;
        onChanged();
      } else {
        manualScalingBuilder_.setMessage(value);
      }
      scalingCase_ = 5;
      return this;
    }
    /**
     *

     * A service with manual scaling runs continuously, allowing you to perform
     * complex initialization and rely on the state of its memory over time.
     *

     *
     * optional .google.appengine.v1.ManualScaling manual_scaling = 5;
     */
    public Builder setManualScaling(
        com.google.appengine.v1.ManualScaling.Builder builderForValue) {
      if (manualScalingBuilder_ == null) {
        scaling_ = builderForValue.build();
        onChanged();
      } else {
        manualScalingBuilder_.setMessage(builderForValue.build());
      }
      scalingCase_ = 5;
      return this;
    }
    /**
     *

     * A service with manual scaling runs continuously, allowing you to perform
     * complex initialization and rely on the state of its memory over time.
     *

     *
     * optional .google.appengine.v1.ManualScaling manual_scaling = 5;
     */
    public Builder mergeManualScaling(com.google.appengine.v1.ManualScaling value) {
      if (manualScalingBuilder_ == null) {
        if (scalingCase_ == 5 &&
            scaling_ != com.google.appengine.v1.ManualScaling.getDefaultInstance()) {
          scaling_ = com.google.appengine.v1.ManualScaling.newBuilder((com.google.appengine.v1.ManualScaling) scaling_)
              .mergeFrom(value).buildPartial();
        } else {
          scaling_ = value;
        }
        onChanged();
      } else {
        if (scalingCase_ == 5) {
          manualScalingBuilder_.mergeFrom(value);
        }
        manualScalingBuilder_.setMessage(value);
      }
      scalingCase_ = 5;
      return this;
    }
    /**
     *

     * A service with manual scaling runs continuously, allowing you to perform
     * complex initialization and rely on the state of its memory over time.
     *

     *
     * optional .google.appengine.v1.ManualScaling manual_scaling = 5;
     */
    public Builder clearManualScaling() {
      if (manualScalingBuilder_ == null) {
        if (scalingCase_ == 5) {
          scalingCase_ = 0;
          scaling_ = null;
          onChanged();
        }
      } else {
        if (scalingCase_ == 5) {
          scalingCase_ = 0;
          scaling_ = null;
        }
        manualScalingBuilder_.clear();
      }
      return this;
    }
    /**
     *

     * A service with manual scaling runs continuously, allowing you to perform
     * complex initialization and rely on the state of its memory over time.
     *

     *
     * optional .google.appengine.v1.ManualScaling manual_scaling = 5;
     */
    public com.google.appengine.v1.ManualScaling.Builder getManualScalingBuilder() {
      return getManualScalingFieldBuilder().getBuilder();
    }
    /**
     *

     * A service with manual scaling runs continuously, allowing you to perform
     * complex initialization and rely on the state of its memory over time.
     *

     *
     * optional .google.appengine.v1.ManualScaling manual_scaling = 5;
     */
    public com.google.appengine.v1.ManualScalingOrBuilder getManualScalingOrBuilder() {
      if ((scalingCase_ == 5) && (manualScalingBuilder_ != null)) {
        return manualScalingBuilder_.getMessageOrBuilder();
      } else {
        if (scalingCase_ == 5) {
          return (com.google.appengine.v1.ManualScaling) scaling_;
        }
        return com.google.appengine.v1.ManualScaling.getDefaultInstance();
      }
    }
    /**
     *

     * A service with manual scaling runs continuously, allowing you to perform
     * complex initialization and rely on the state of its memory over time.
     *

     *
     * optional .google.appengine.v1.ManualScaling manual_scaling = 5;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.ManualScaling, com.google.appengine.v1.ManualScaling.Builder, com.google.appengine.v1.ManualScalingOrBuilder>
        getManualScalingFieldBuilder() {
      if (manualScalingBuilder_ == null) {
        if (!(scalingCase_ == 5)) {
          scaling_ = com.google.appengine.v1.ManualScaling.getDefaultInstance();
        }
        manualScalingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.ManualScaling, com.google.appengine.v1.ManualScaling.Builder, com.google.appengine.v1.ManualScalingOrBuilder>(
                (com.google.appengine.v1.ManualScaling) scaling_,
                getParentForChildren(),
                isClean());
        scaling_ = null;
      }
      scalingCase_ = 5;
      onChanged();;
      return manualScalingBuilder_;
    }

    private java.util.List<java.lang.Integer> inboundServices_ =
      java.util.Collections.emptyList();
    private void ensureInboundServicesIsMutable() {
      if (!((bitField0_ & 0x00000020) == 0x00000020)) {
        inboundServices_ = new java.util.ArrayList<java.lang.Integer>(inboundServices_);
        bitField0_ |= 0x00000020;
      }
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public java.util.List<com.google.appengine.v1.InboundServiceType> getInboundServicesList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, com.google.appengine.v1.InboundServiceType>(inboundServices_, inboundServices_converter_);
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public int getInboundServicesCount() {
      return inboundServices_.size();
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public com.google.appengine.v1.InboundServiceType getInboundServices(int index) {
      return inboundServices_converter_.convert(inboundServices_.get(index));
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public Builder setInboundServices(
        int index, com.google.appengine.v1.InboundServiceType value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureInboundServicesIsMutable();
      inboundServices_.set(index, value.getNumber());
      onChanged();
      return this;
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public Builder addInboundServices(com.google.appengine.v1.InboundServiceType value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureInboundServicesIsMutable();
      inboundServices_.add(value.getNumber());
      onChanged();
      return this;
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public Builder addAllInboundServices(
        java.lang.Iterable<? extends com.google.appengine.v1.InboundServiceType> values) {
      ensureInboundServicesIsMutable();
      for (com.google.appengine.v1.InboundServiceType value : values) {
        inboundServices_.add(value.getNumber());
      }
      onChanged();
      return this;
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public Builder clearInboundServices() {
      inboundServices_ = java.util.Collections.emptyList();
      bitField0_ = (bitField0_ & ~0x00000020);
      onChanged();
      return this;
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public java.util.List<java.lang.Integer>
    getInboundServicesValueList() {
      return java.util.Collections.unmodifiableList(inboundServices_);
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public int getInboundServicesValue(int index) {
      return inboundServices_.get(index);
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public Builder setInboundServicesValue(
        int index, int value) {
      ensureInboundServicesIsMutable();
      inboundServices_.set(index, value);
      onChanged();
      return this;
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public Builder addInboundServicesValue(int value) {
      ensureInboundServicesIsMutable();
      inboundServices_.add(value);
      onChanged();
      return this;
    }
    /**
     *

     * Before an application can receive email or XMPP messages, the application
     * must be configured to enable the service.
     *

     *
     * repeated .google.appengine.v1.InboundServiceType inbound_services = 6;
     */
    public Builder addAllInboundServicesValue(
        java.lang.Iterable<java.lang.Integer> values) {
      ensureInboundServicesIsMutable();
      for (int value : values) {
        inboundServices_.add(value);
      }
      onChanged();
      return this;
    }

    private java.lang.Object instanceClass_ = "";
    /**
     *

     * Instance class that is used to run this version. Valid values are:
     * * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G`
     * * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G`
     * Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or
     * BasicScaling.
     *

     *
     * optional string instance_class = 7;
     */
    public java.lang.String getInstanceClass() {
      java.lang.Object ref = instanceClass_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        instanceClass_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *

     * Instance class that is used to run this version. Valid values are:
     * * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G`
     * * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G`
     * Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or
     * BasicScaling.
     *

     *
     * optional string instance_class = 7;
     */
    public com.google.protobuf.ByteString
        getInstanceClassBytes() {
      java.lang.Object ref = instanceClass_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        instanceClass_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *

     * Instance class that is used to run this version. Valid values are:
     * * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G`
     * * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G`
     * Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or
     * BasicScaling.
     *

     *
     * optional string instance_class = 7;
     */
    public Builder setInstanceClass(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }

      instanceClass_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * Instance class that is used to run this version. Valid values are:
     * * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G`
     * * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G`
     * Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or
     * BasicScaling.
     *

     *
     * optional string instance_class = 7;
     */
    public Builder clearInstanceClass() {

      instanceClass_ = getDefaultInstance().getInstanceClass();
      onChanged();
      return this;
    }
    /**
     *

     * Instance class that is used to run this version. Valid values are:
     * * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G`
     * * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G`
     * Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or
     * BasicScaling.
     *

     *
     * optional string instance_class = 7;
     */
    public Builder setInstanceClassBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

      instanceClass_ = value;
      onChanged();
      return this;
    }

    private com.google.appengine.v1.Network network_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.Network, com.google.appengine.v1.Network.Builder, com.google.appengine.v1.NetworkOrBuilder> networkBuilder_;
    /**
     *

     * Extra network settings. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Network network = 8;
     */
    public boolean hasNetwork() {
      return networkBuilder_ != null || network_ != null;
    }
    /**
     *

     * Extra network settings. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Network network = 8;
     */
    public com.google.appengine.v1.Network getNetwork() {
      if (networkBuilder_ == null) {
        return network_ == null ? com.google.appengine.v1.Network.getDefaultInstance() : network_;
      } else {
        return networkBuilder_.getMessage();
      }
    }
    /**
     *

     * Extra network settings. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Network network = 8;
     */
    public Builder setNetwork(com.google.appengine.v1.Network value) {
      if (networkBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        network_ = value;
        onChanged();
      } else {
        networkBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     *

     * Extra network settings. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Network network = 8;
     */
    public Builder setNetwork(
        com.google.appengine.v1.Network.Builder builderForValue) {
      if (networkBuilder_ == null) {
        network_ = builderForValue.build();
        onChanged();
      } else {
        networkBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     *

     * Extra network settings. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Network network = 8;
     */
    public Builder mergeNetwork(com.google.appengine.v1.Network value) {
      if (networkBuilder_ == null) {
        if (network_ != null) {
          network_ =
            com.google.appengine.v1.Network.newBuilder(network_).mergeFrom(value).buildPartial();
        } else {
          network_ = value;
        }
        onChanged();
      } else {
        networkBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     *

     * Extra network settings. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Network network = 8;
     */
    public Builder clearNetwork() {
      if (networkBuilder_ == null) {
        network_ = null;
        onChanged();
      } else {
        network_ = null;
        networkBuilder_ = null;
      }

      return this;
    }
    /**
     *

     * Extra network settings. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Network network = 8;
     */
    public com.google.appengine.v1.Network.Builder getNetworkBuilder() {

      onChanged();
      return getNetworkFieldBuilder().getBuilder();
    }
    /**
     *

     * Extra network settings. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Network network = 8;
     */
    public com.google.appengine.v1.NetworkOrBuilder getNetworkOrBuilder() {
      if (networkBuilder_ != null) {
        return networkBuilder_.getMessageOrBuilder();
      } else {
        return network_ == null ?
            com.google.appengine.v1.Network.getDefaultInstance() : network_;
      }
    }
    /**
     *

     * Extra network settings. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Network network = 8;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.Network, com.google.appengine.v1.Network.Builder, com.google.appengine.v1.NetworkOrBuilder>
        getNetworkFieldBuilder() {
      if (networkBuilder_ == null) {
        networkBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.Network, com.google.appengine.v1.Network.Builder, com.google.appengine.v1.NetworkOrBuilder>(
                getNetwork(),
                getParentForChildren(),
                isClean());
        network_ = null;
      }
      return networkBuilder_;
    }

    private com.google.appengine.v1.Resources resources_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.Resources, com.google.appengine.v1.Resources.Builder, com.google.appengine.v1.ResourcesOrBuilder> resourcesBuilder_;
    /**
     *

     * Machine resources for this version. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Resources resources = 9;
     */
    public boolean hasResources() {
      return resourcesBuilder_ != null || resources_ != null;
    }
    /**
     *

     * Machine resources for this version. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Resources resources = 9;
     */
    public com.google.appengine.v1.Resources getResources() {
      if (resourcesBuilder_ == null) {
        return resources_ == null ? com.google.appengine.v1.Resources.getDefaultInstance() : resources_;
      } else {
        return resourcesBuilder_.getMessage();
      }
    }
    /**
     *

     * Machine resources for this version. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Resources resources = 9;
     */
    public Builder setResources(com.google.appengine.v1.Resources value) {
      if (resourcesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        resources_ = value;
        onChanged();
      } else {
        resourcesBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     *

     * Machine resources for this version. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Resources resources = 9;
     */
    public Builder setResources(
        com.google.appengine.v1.Resources.Builder builderForValue) {
      if (resourcesBuilder_ == null) {
        resources_ = builderForValue.build();
        onChanged();
      } else {
        resourcesBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     *

     * Machine resources for this version. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Resources resources = 9;
     */
    public Builder mergeResources(com.google.appengine.v1.Resources value) {
      if (resourcesBuilder_ == null) {
        if (resources_ != null) {
          resources_ =
            com.google.appengine.v1.Resources.newBuilder(resources_).mergeFrom(value).buildPartial();
        } else {
          resources_ = value;
        }
        onChanged();
      } else {
        resourcesBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     *

     * Machine resources for this version. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Resources resources = 9;
     */
    public Builder clearResources() {
      if (resourcesBuilder_ == null) {
        resources_ = null;
        onChanged();
      } else {
        resources_ = null;
        resourcesBuilder_ = null;
      }

      return this;
    }
    /**
     *

     * Machine resources for this version. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Resources resources = 9;
     */
    public com.google.appengine.v1.Resources.Builder getResourcesBuilder() {

      onChanged();
      return getResourcesFieldBuilder().getBuilder();
    }
    /**
     *

     * Machine resources for this version. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Resources resources = 9;
     */
    public com.google.appengine.v1.ResourcesOrBuilder getResourcesOrBuilder() {
      if (resourcesBuilder_ != null) {
        return resourcesBuilder_.getMessageOrBuilder();
      } else {
        return resources_ == null ?
            com.google.appengine.v1.Resources.getDefaultInstance() : resources_;
      }
    }
    /**
     *

     * Machine resources for this version. Only applicable for VM runtimes.
     *

     *
     * optional .google.appengine.v1.Resources resources = 9;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.Resources, com.google.appengine.v1.Resources.Builder, com.google.appengine.v1.ResourcesOrBuilder>
        getResourcesFieldBuilder() {
      if (resourcesBuilder_ == null) {
        resourcesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.Resources, com.google.appengine.v1.Resources.Builder, com.google.appengine.v1.ResourcesOrBuilder>(
                getResources(),
                getParentForChildren(),
                isClean());
        resources_ = null;
      }
      return resourcesBuilder_;
    }

    private java.lang.Object runtime_ = "";
    /**
     *

     * Desired runtime. Example: `python27`.
     *

     *
     * optional string runtime = 10;
     */
    public java.lang.String getRuntime() {
      java.lang.Object ref = runtime_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        runtime_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *

     * Desired runtime. Example: `python27`.
     *

     *
     * optional string runtime = 10;
     */
    public com.google.protobuf.ByteString
        getRuntimeBytes() {
      java.lang.Object ref = runtime_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        runtime_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *

     * Desired runtime. Example: `python27`.
     *

     *
     * optional string runtime = 10;
     */
    public Builder setRuntime(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }

      runtime_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * Desired runtime. Example: `python27`.
     *

     *
     * optional string runtime = 10;
     */
    public Builder clearRuntime() {

      runtime_ = getDefaultInstance().getRuntime();
      onChanged();
      return this;
    }
    /**
     *

     * Desired runtime. Example: `python27`.
     *

     *
     * optional string runtime = 10;
     */
    public Builder setRuntimeBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

      runtime_ = value;
      onChanged();
      return this;
    }

    private boolean threadsafe_ ;
    /**
     *

     * Whether multiple requests can be dispatched to this version at once.
     *

     *
     * optional bool threadsafe = 11;
     */
    public boolean getThreadsafe() {
      return threadsafe_;
    }
    /**
     *

     * Whether multiple requests can be dispatched to this version at once.
     *

     *
     * optional bool threadsafe = 11;
     */
    public Builder setThreadsafe(boolean value) {

      threadsafe_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * Whether multiple requests can be dispatched to this version at once.
     *

     *
     * optional bool threadsafe = 11;
     */
    public Builder clearThreadsafe() {

      threadsafe_ = false;
      onChanged();
      return this;
    }

    private boolean vm_ ;
    /**
     *

     * Whether to deploy this version in a container on a virtual machine.
     *

     *
     * optional bool vm = 12;
     */
    public boolean getVm() {
      return vm_;
    }
    /**
     *

     * Whether to deploy this version in a container on a virtual machine.
     *

     *
     * optional bool vm = 12;
     */
    public Builder setVm(boolean value) {

      vm_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * Whether to deploy this version in a container on a virtual machine.
     *

     *
     * optional bool vm = 12;
     */
    public Builder clearVm() {

      vm_ = false;
      onChanged();
      return this;
    }

    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> betaSettings_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetBetaSettings() {
      if (betaSettings_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            BetaSettingsDefaultEntryHolder.defaultEntry);
      }
      return betaSettings_;
    }
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetMutableBetaSettings() {
      onChanged();;
      if (betaSettings_ == null) {
        betaSettings_ = com.google.protobuf.MapField.newMapField(
            BetaSettingsDefaultEntryHolder.defaultEntry);
      }
      if (!betaSettings_.isMutable()) {
        betaSettings_ = betaSettings_.copy();
      }
      return betaSettings_;
    }

    public int getBetaSettingsCount() {
      return internalGetBetaSettings().getMap().size();
    }
    /**
     *

     * Metadata settings that are supplied to this version to enable
     * beta runtime features.
     *

     *
     * map<string, string> beta_settings = 13;
     */

    public boolean containsBetaSettings(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetBetaSettings().getMap().containsKey(key);
    }
    /**
     * Use {@link #getBetaSettingsMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getBetaSettings() {
      return getBetaSettingsMap();
    }
    /**
     *

     * Metadata settings that are supplied to this version to enable
     * beta runtime features.
     *

     *
     * map<string, string> beta_settings = 13;
     */

    public java.util.Map<java.lang.String, java.lang.String> getBetaSettingsMap() {
      return internalGetBetaSettings().getMap();
    }
    /**
     *

     * Metadata settings that are supplied to this version to enable
     * beta runtime features.
     *

     *
     * map<string, string> beta_settings = 13;
     */

    public java.lang.String getBetaSettingsOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetBetaSettings().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     *

     * Metadata settings that are supplied to this version to enable
     * beta runtime features.
     *

     *
     * map<string, string> beta_settings = 13;
     */

    public java.lang.String getBetaSettingsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetBetaSettings().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public Builder clearBetaSettings() {
      getMutableBetaSettings().clear();
      return this;
    }
    /**
     *

     * Metadata settings that are supplied to this version to enable
     * beta runtime features.
     *

     *
     * map<string, string> beta_settings = 13;
     */

    public Builder removeBetaSettings(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      getMutableBetaSettings().remove(key);
      return this;
    }
    /**
     * Use alternate mutation accessors instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String>
    getMutableBetaSettings() {
      return internalGetMutableBetaSettings().getMutableMap();
    }
    /**
     *

     * Metadata settings that are supplied to this version to enable
     * beta runtime features.
     *

     *
     * map<string, string> beta_settings = 13;
     */
    public Builder putBetaSettings(
        java.lang.String key,
        java.lang.String value) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      if (value == null) { throw new java.lang.NullPointerException(); }
      getMutableBetaSettings().put(key, value);
      return this;
    }
    /**
     *

     * Metadata settings that are supplied to this version to enable
     * beta runtime features.
     *

     *
     * map<string, string> beta_settings = 13;
     */

    public Builder putAllBetaSettings(
        java.util.Map<java.lang.String, java.lang.String> values) {
      getMutableBetaSettings().putAll(values);
      return this;
    }

    private java.lang.Object env_ = "";
    /**
     *

     * App Engine execution environment for this version.
     * Defaults to `standard`.
     *

     *
     * optional string env = 14;
     */
    public java.lang.String getEnv() {
      java.lang.Object ref = env_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        env_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *

     * App Engine execution environment for this version.
     * Defaults to `standard`.
     *

     *
     * optional string env = 14;
     */
    public com.google.protobuf.ByteString
        getEnvBytes() {
      java.lang.Object ref = env_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        env_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *

     * App Engine execution environment for this version.
     * Defaults to `standard`.
     *

     *
     * optional string env = 14;
     */
    public Builder setEnv(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }

      env_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * App Engine execution environment for this version.
     * Defaults to `standard`.
     *

     *
     * optional string env = 14;
     */
    public Builder clearEnv() {

      env_ = getDefaultInstance().getEnv();
      onChanged();
      return this;
    }
    /**
     *

     * App Engine execution environment for this version.
     * Defaults to `standard`.
     *

     *
     * optional string env = 14;
     */
    public Builder setEnvBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

      env_ = value;
      onChanged();
      return this;
    }

    private int servingStatus_ = 0;
    /**
     *

     * Current serving status of this version. Only the versions with a
     * `SERVING` status create instances and can be billed.
     * `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
     *

     *
     * optional .google.appengine.v1.ServingStatus serving_status = 15;
     */
    public int getServingStatusValue() {
      return servingStatus_;
    }
    /**
     *

     * Current serving status of this version. Only the versions with a
     * `SERVING` status create instances and can be billed.
     * `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
     *

     *
     * optional .google.appengine.v1.ServingStatus serving_status = 15;
     */
    public Builder setServingStatusValue(int value) {
      servingStatus_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * Current serving status of this version. Only the versions with a
     * `SERVING` status create instances and can be billed.
     * `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
     *

     *
     * optional .google.appengine.v1.ServingStatus serving_status = 15;
     */
    public com.google.appengine.v1.ServingStatus getServingStatus() {
      com.google.appengine.v1.ServingStatus result = com.google.appengine.v1.ServingStatus.valueOf(servingStatus_);
      return result == null ? com.google.appengine.v1.ServingStatus.UNRECOGNIZED : result;
    }
    /**
     *

     * Current serving status of this version. Only the versions with a
     * `SERVING` status create instances and can be billed.
     * `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
     *

     *
     * optional .google.appengine.v1.ServingStatus serving_status = 15;
     */
    public Builder setServingStatus(com.google.appengine.v1.ServingStatus value) {
      if (value == null) {
        throw new NullPointerException();
      }

      servingStatus_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     *

     * Current serving status of this version. Only the versions with a
     * `SERVING` status create instances and can be billed.
     * `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
     *

     *
     * optional .google.appengine.v1.ServingStatus serving_status = 15;
     */
    public Builder clearServingStatus() {

      servingStatus_ = 0;
      onChanged();
      return this;
    }

    private java.lang.Object createdBy_ = "";
    /**
     *

     * Email address of the user who created this version.
     * @OutputOnly
     *

     *
     * optional string created_by = 16;
     */
    public java.lang.String getCreatedBy() {
      java.lang.Object ref = createdBy_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        createdBy_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *

     * Email address of the user who created this version.
     * @OutputOnly
     *

     *
     * optional string created_by = 16;
     */
    public com.google.protobuf.ByteString
        getCreatedByBytes() {
      java.lang.Object ref = createdBy_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        createdBy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *

     * Email address of the user who created this version.
     * @OutputOnly
     *

     *
     * optional string created_by = 16;
     */
    public Builder setCreatedBy(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }

      createdBy_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * Email address of the user who created this version.
     * @OutputOnly
     *

     *
     * optional string created_by = 16;
     */
    public Builder clearCreatedBy() {

      createdBy_ = getDefaultInstance().getCreatedBy();
      onChanged();
      return this;
    }
    /**
     *

     * Email address of the user who created this version.
     * @OutputOnly
     *

     *
     * optional string created_by = 16;
     */
    public Builder setCreatedByBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

      createdBy_ = value;
      onChanged();
      return this;
    }

    private com.google.protobuf.Timestamp createTime_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> createTimeBuilder_;
    /**
     *

     * Time that this version was created.
     * @OutputOnly
     *

     *
     * optional .google.protobuf.Timestamp create_time = 17;
     */
    public boolean hasCreateTime() {
      return createTimeBuilder_ != null || createTime_ != null;
    }
    /**
     *

     * Time that this version was created.
     * @OutputOnly
     *

     *
     * optional .google.protobuf.Timestamp create_time = 17;
     */
    public com.google.protobuf.Timestamp getCreateTime() {
      if (createTimeBuilder_ == null) {
        return createTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createTime_;
      } else {
        return createTimeBuilder_.getMessage();
      }
    }
    /**
     *

     * Time that this version was created.
     * @OutputOnly
     *

     *
     * optional .google.protobuf.Timestamp create_time = 17;
     */
    public Builder setCreateTime(com.google.protobuf.Timestamp value) {
      if (createTimeBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        createTime_ = value;
        onChanged();
      } else {
        createTimeBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     *

     * Time that this version was created.
     * @OutputOnly
     *

     *
     * optional .google.protobuf.Timestamp create_time = 17;
     */
    public Builder setCreateTime(
        com.google.protobuf.Timestamp.Builder builderForValue) {
      if (createTimeBuilder_ == null) {
        createTime_ = builderForValue.build();
        onChanged();
      } else {
        createTimeBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     *

     * Time that this version was created.
     * @OutputOnly
     *

     *
     * optional .google.protobuf.Timestamp create_time = 17;
     */
    public Builder mergeCreateTime(com.google.protobuf.Timestamp value) {
      if (createTimeBuilder_ == null) {
        if (createTime_ != null) {
          createTime_ =
            com.google.protobuf.Timestamp.newBuilder(createTime_).mergeFrom(value).buildPartial();
        } else {
          createTime_ = value;
        }
        onChanged();
      } else {
        createTimeBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     *

     * Time that this version was created.
     * @OutputOnly
     *

     *
     * optional .google.protobuf.Timestamp create_time = 17;
     */
    public Builder clearCreateTime() {
      if (createTimeBuilder_ == null) {
        createTime_ = null;
        onChanged();
      } else {
        createTime_ = null;
        createTimeBuilder_ = null;
      }

      return this;
    }
    /**
     *

     * Time that this version was created.
     * @OutputOnly
     *

     *
     * optional .google.protobuf.Timestamp create_time = 17;
     */
    public com.google.protobuf.Timestamp.Builder getCreateTimeBuilder() {

      onChanged();
      return getCreateTimeFieldBuilder().getBuilder();
    }
    /**
     *

     * Time that this version was created.
     * @OutputOnly
     *

     *
     * optional .google.protobuf.Timestamp create_time = 17;
     */
    public com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder() {
      if (createTimeBuilder_ != null) {
        return createTimeBuilder_.getMessageOrBuilder();
      } else {
        return createTime_ == null ?
            com.google.protobuf.Timestamp.getDefaultInstance() : createTime_;
      }
    }
    /**
     *

     * Time that this version was created.
     * @OutputOnly
     *

     *
     * optional .google.protobuf.Timestamp create_time = 17;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>
        getCreateTimeFieldBuilder() {
      if (createTimeBuilder_ == null) {
        createTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                getCreateTime(),
                getParentForChildren(),
                isClean());
        createTime_ = null;
      }
      return createTimeBuilder_;
    }

    private long diskUsageBytes_ ;
    /**
     *

     * Total size in bytes of all the files that are included in this version
     * and curerntly hosted on the App Engine disk.
     * @OutputOnly
     *

     *
     * optional int64 disk_usage_bytes = 18;
     */
    public long getDiskUsageBytes() {
      return diskUsageBytes_;
    }
    /**
     *

     * Total size in bytes of all the files that are included in this version
     * and curerntly hosted on the App Engine disk.
     * @OutputOnly
     *

     *
     * optional int64 disk_usage_bytes = 18;
     */
    public Builder setDiskUsageBytes(long value) {

      diskUsageBytes_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * Total size in bytes of all the files that are included in this version
     * and curerntly hosted on the App Engine disk.
     * @OutputOnly
     *

     *
     * optional int64 disk_usage_bytes = 18;
     */
    public Builder clearDiskUsageBytes() {

      diskUsageBytes_ = 0L;
      onChanged();
      return this;
    }

    private java.util.List<com.google.appengine.v1.UrlMap> handlers_ =
      java.util.Collections.emptyList();
    private void ensureHandlersIsMutable() {
      if (!((bitField0_ & 0x00040000) == 0x00040000)) {
        handlers_ = new java.util.ArrayList<com.google.appengine.v1.UrlMap>(handlers_);
        bitField0_ |= 0x00040000;
       }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        com.google.appengine.v1.UrlMap, com.google.appengine.v1.UrlMap.Builder, com.google.appengine.v1.UrlMapOrBuilder> handlersBuilder_;

    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public java.util.List<com.google.appengine.v1.UrlMap> getHandlersList() {
      if (handlersBuilder_ == null) {
        return java.util.Collections.unmodifiableList(handlers_);
      } else {
        return handlersBuilder_.getMessageList();
      }
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public int getHandlersCount() {
      if (handlersBuilder_ == null) {
        return handlers_.size();
      } else {
        return handlersBuilder_.getCount();
      }
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public com.google.appengine.v1.UrlMap getHandlers(int index) {
      if (handlersBuilder_ == null) {
        return handlers_.get(index);
      } else {
        return handlersBuilder_.getMessage(index);
      }
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public Builder setHandlers(
        int index, com.google.appengine.v1.UrlMap value) {
      if (handlersBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureHandlersIsMutable();
        handlers_.set(index, value);
        onChanged();
      } else {
        handlersBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public Builder setHandlers(
        int index, com.google.appengine.v1.UrlMap.Builder builderForValue) {
      if (handlersBuilder_ == null) {
        ensureHandlersIsMutable();
        handlers_.set(index, builderForValue.build());
        onChanged();
      } else {
        handlersBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public Builder addHandlers(com.google.appengine.v1.UrlMap value) {
      if (handlersBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureHandlersIsMutable();
        handlers_.add(value);
        onChanged();
      } else {
        handlersBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public Builder addHandlers(
        int index, com.google.appengine.v1.UrlMap value) {
      if (handlersBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureHandlersIsMutable();
        handlers_.add(index, value);
        onChanged();
      } else {
        handlersBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public Builder addHandlers(
        com.google.appengine.v1.UrlMap.Builder builderForValue) {
      if (handlersBuilder_ == null) {
        ensureHandlersIsMutable();
        handlers_.add(builderForValue.build());
        onChanged();
      } else {
        handlersBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public Builder addHandlers(
        int index, com.google.appengine.v1.UrlMap.Builder builderForValue) {
      if (handlersBuilder_ == null) {
        ensureHandlersIsMutable();
        handlers_.add(index, builderForValue.build());
        onChanged();
      } else {
        handlersBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public Builder addAllHandlers(
        java.lang.Iterable<? extends com.google.appengine.v1.UrlMap> values) {
      if (handlersBuilder_ == null) {
        ensureHandlersIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, handlers_);
        onChanged();
      } else {
        handlersBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public Builder clearHandlers() {
      if (handlersBuilder_ == null) {
        handlers_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00040000);
        onChanged();
      } else {
        handlersBuilder_.clear();
      }
      return this;
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public Builder removeHandlers(int index) {
      if (handlersBuilder_ == null) {
        ensureHandlersIsMutable();
        handlers_.remove(index);
        onChanged();
      } else {
        handlersBuilder_.remove(index);
      }
      return this;
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public com.google.appengine.v1.UrlMap.Builder getHandlersBuilder(
        int index) {
      return getHandlersFieldBuilder().getBuilder(index);
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public com.google.appengine.v1.UrlMapOrBuilder getHandlersOrBuilder(
        int index) {
      if (handlersBuilder_ == null) {
        return handlers_.get(index);  } else {
        return handlersBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public java.util.List<? extends com.google.appengine.v1.UrlMapOrBuilder>
         getHandlersOrBuilderList() {
      if (handlersBuilder_ != null) {
        return handlersBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(handlers_);
      }
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public com.google.appengine.v1.UrlMap.Builder addHandlersBuilder() {
      return getHandlersFieldBuilder().addBuilder(
          com.google.appengine.v1.UrlMap.getDefaultInstance());
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public com.google.appengine.v1.UrlMap.Builder addHandlersBuilder(
        int index) {
      return getHandlersFieldBuilder().addBuilder(
          index, com.google.appengine.v1.UrlMap.getDefaultInstance());
    }
    /**
     *

     * An ordered list of URL-matching patterns that should be applied to incoming
     * requests. The first matching URL handles the request and other request
     * handlers are not attempted.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.UrlMap handlers = 100;
     */
    public java.util.List<com.google.appengine.v1.UrlMap.Builder>
         getHandlersBuilderList() {
      return getHandlersFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilderV3<
        com.google.appengine.v1.UrlMap, com.google.appengine.v1.UrlMap.Builder, com.google.appengine.v1.UrlMapOrBuilder>
        getHandlersFieldBuilder() {
      if (handlersBuilder_ == null) {
        handlersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.appengine.v1.UrlMap, com.google.appengine.v1.UrlMap.Builder, com.google.appengine.v1.UrlMapOrBuilder>(
                handlers_,
                ((bitField0_ & 0x00040000) == 0x00040000),
                getParentForChildren(),
                isClean());
        handlers_ = null;
      }
      return handlersBuilder_;
    }

    private java.util.List<com.google.appengine.v1.ErrorHandler> errorHandlers_ =
      java.util.Collections.emptyList();
    private void ensureErrorHandlersIsMutable() {
      if (!((bitField0_ & 0x00080000) == 0x00080000)) {
        errorHandlers_ = new java.util.ArrayList<com.google.appengine.v1.ErrorHandler>(errorHandlers_);
        bitField0_ |= 0x00080000;
       }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        com.google.appengine.v1.ErrorHandler, com.google.appengine.v1.ErrorHandler.Builder, com.google.appengine.v1.ErrorHandlerOrBuilder> errorHandlersBuilder_;

    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public java.util.List<com.google.appengine.v1.ErrorHandler> getErrorHandlersList() {
      if (errorHandlersBuilder_ == null) {
        return java.util.Collections.unmodifiableList(errorHandlers_);
      } else {
        return errorHandlersBuilder_.getMessageList();
      }
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public int getErrorHandlersCount() {
      if (errorHandlersBuilder_ == null) {
        return errorHandlers_.size();
      } else {
        return errorHandlersBuilder_.getCount();
      }
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public com.google.appengine.v1.ErrorHandler getErrorHandlers(int index) {
      if (errorHandlersBuilder_ == null) {
        return errorHandlers_.get(index);
      } else {
        return errorHandlersBuilder_.getMessage(index);
      }
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public Builder setErrorHandlers(
        int index, com.google.appengine.v1.ErrorHandler value) {
      if (errorHandlersBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureErrorHandlersIsMutable();
        errorHandlers_.set(index, value);
        onChanged();
      } else {
        errorHandlersBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public Builder setErrorHandlers(
        int index, com.google.appengine.v1.ErrorHandler.Builder builderForValue) {
      if (errorHandlersBuilder_ == null) {
        ensureErrorHandlersIsMutable();
        errorHandlers_.set(index, builderForValue.build());
        onChanged();
      } else {
        errorHandlersBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public Builder addErrorHandlers(com.google.appengine.v1.ErrorHandler value) {
      if (errorHandlersBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureErrorHandlersIsMutable();
        errorHandlers_.add(value);
        onChanged();
      } else {
        errorHandlersBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public Builder addErrorHandlers(
        int index, com.google.appengine.v1.ErrorHandler value) {
      if (errorHandlersBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureErrorHandlersIsMutable();
        errorHandlers_.add(index, value);
        onChanged();
      } else {
        errorHandlersBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public Builder addErrorHandlers(
        com.google.appengine.v1.ErrorHandler.Builder builderForValue) {
      if (errorHandlersBuilder_ == null) {
        ensureErrorHandlersIsMutable();
        errorHandlers_.add(builderForValue.build());
        onChanged();
      } else {
        errorHandlersBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public Builder addErrorHandlers(
        int index, com.google.appengine.v1.ErrorHandler.Builder builderForValue) {
      if (errorHandlersBuilder_ == null) {
        ensureErrorHandlersIsMutable();
        errorHandlers_.add(index, builderForValue.build());
        onChanged();
      } else {
        errorHandlersBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public Builder addAllErrorHandlers(
        java.lang.Iterable<? extends com.google.appengine.v1.ErrorHandler> values) {
      if (errorHandlersBuilder_ == null) {
        ensureErrorHandlersIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, errorHandlers_);
        onChanged();
      } else {
        errorHandlersBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public Builder clearErrorHandlers() {
      if (errorHandlersBuilder_ == null) {
        errorHandlers_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00080000);
        onChanged();
      } else {
        errorHandlersBuilder_.clear();
      }
      return this;
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public Builder removeErrorHandlers(int index) {
      if (errorHandlersBuilder_ == null) {
        ensureErrorHandlersIsMutable();
        errorHandlers_.remove(index);
        onChanged();
      } else {
        errorHandlersBuilder_.remove(index);
      }
      return this;
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public com.google.appengine.v1.ErrorHandler.Builder getErrorHandlersBuilder(
        int index) {
      return getErrorHandlersFieldBuilder().getBuilder(index);
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public com.google.appengine.v1.ErrorHandlerOrBuilder getErrorHandlersOrBuilder(
        int index) {
      if (errorHandlersBuilder_ == null) {
        return errorHandlers_.get(index);  } else {
        return errorHandlersBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public java.util.List<? extends com.google.appengine.v1.ErrorHandlerOrBuilder>
         getErrorHandlersOrBuilderList() {
      if (errorHandlersBuilder_ != null) {
        return errorHandlersBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(errorHandlers_);
      }
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public com.google.appengine.v1.ErrorHandler.Builder addErrorHandlersBuilder() {
      return getErrorHandlersFieldBuilder().addBuilder(
          com.google.appengine.v1.ErrorHandler.getDefaultInstance());
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public com.google.appengine.v1.ErrorHandler.Builder addErrorHandlersBuilder(
        int index) {
      return getErrorHandlersFieldBuilder().addBuilder(
          index, com.google.appengine.v1.ErrorHandler.getDefaultInstance());
    }
    /**
     *

     * Custom static error pages. Limited to 10KB per page.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.ErrorHandler error_handlers = 101;
     */
    public java.util.List<com.google.appengine.v1.ErrorHandler.Builder>
         getErrorHandlersBuilderList() {
      return getErrorHandlersFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilderV3<
        com.google.appengine.v1.ErrorHandler, com.google.appengine.v1.ErrorHandler.Builder, com.google.appengine.v1.ErrorHandlerOrBuilder>
        getErrorHandlersFieldBuilder() {
      if (errorHandlersBuilder_ == null) {
        errorHandlersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.appengine.v1.ErrorHandler, com.google.appengine.v1.ErrorHandler.Builder, com.google.appengine.v1.ErrorHandlerOrBuilder>(
                errorHandlers_,
                ((bitField0_ & 0x00080000) == 0x00080000),
                getParentForChildren(),
                isClean());
        errorHandlers_ = null;
      }
      return errorHandlersBuilder_;
    }

    private java.util.List<com.google.appengine.v1.Library> libraries_ =
      java.util.Collections.emptyList();
    private void ensureLibrariesIsMutable() {
      if (!((bitField0_ & 0x00100000) == 0x00100000)) {
        libraries_ = new java.util.ArrayList<com.google.appengine.v1.Library>(libraries_);
        bitField0_ |= 0x00100000;
       }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        com.google.appengine.v1.Library, com.google.appengine.v1.Library.Builder, com.google.appengine.v1.LibraryOrBuilder> librariesBuilder_;

    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public java.util.List<com.google.appengine.v1.Library> getLibrariesList() {
      if (librariesBuilder_ == null) {
        return java.util.Collections.unmodifiableList(libraries_);
      } else {
        return librariesBuilder_.getMessageList();
      }
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public int getLibrariesCount() {
      if (librariesBuilder_ == null) {
        return libraries_.size();
      } else {
        return librariesBuilder_.getCount();
      }
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public com.google.appengine.v1.Library getLibraries(int index) {
      if (librariesBuilder_ == null) {
        return libraries_.get(index);
      } else {
        return librariesBuilder_.getMessage(index);
      }
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public Builder setLibraries(
        int index, com.google.appengine.v1.Library value) {
      if (librariesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureLibrariesIsMutable();
        libraries_.set(index, value);
        onChanged();
      } else {
        librariesBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public Builder setLibraries(
        int index, com.google.appengine.v1.Library.Builder builderForValue) {
      if (librariesBuilder_ == null) {
        ensureLibrariesIsMutable();
        libraries_.set(index, builderForValue.build());
        onChanged();
      } else {
        librariesBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public Builder addLibraries(com.google.appengine.v1.Library value) {
      if (librariesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureLibrariesIsMutable();
        libraries_.add(value);
        onChanged();
      } else {
        librariesBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public Builder addLibraries(
        int index, com.google.appengine.v1.Library value) {
      if (librariesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureLibrariesIsMutable();
        libraries_.add(index, value);
        onChanged();
      } else {
        librariesBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public Builder addLibraries(
        com.google.appengine.v1.Library.Builder builderForValue) {
      if (librariesBuilder_ == null) {
        ensureLibrariesIsMutable();
        libraries_.add(builderForValue.build());
        onChanged();
      } else {
        librariesBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public Builder addLibraries(
        int index, com.google.appengine.v1.Library.Builder builderForValue) {
      if (librariesBuilder_ == null) {
        ensureLibrariesIsMutable();
        libraries_.add(index, builderForValue.build());
        onChanged();
      } else {
        librariesBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public Builder addAllLibraries(
        java.lang.Iterable<? extends com.google.appengine.v1.Library> values) {
      if (librariesBuilder_ == null) {
        ensureLibrariesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, libraries_);
        onChanged();
      } else {
        librariesBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public Builder clearLibraries() {
      if (librariesBuilder_ == null) {
        libraries_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00100000);
        onChanged();
      } else {
        librariesBuilder_.clear();
      }
      return this;
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public Builder removeLibraries(int index) {
      if (librariesBuilder_ == null) {
        ensureLibrariesIsMutable();
        libraries_.remove(index);
        onChanged();
      } else {
        librariesBuilder_.remove(index);
      }
      return this;
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public com.google.appengine.v1.Library.Builder getLibrariesBuilder(
        int index) {
      return getLibrariesFieldBuilder().getBuilder(index);
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public com.google.appengine.v1.LibraryOrBuilder getLibrariesOrBuilder(
        int index) {
      if (librariesBuilder_ == null) {
        return libraries_.get(index);  } else {
        return librariesBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public java.util.List<? extends com.google.appengine.v1.LibraryOrBuilder>
         getLibrariesOrBuilderList() {
      if (librariesBuilder_ != null) {
        return librariesBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(libraries_);
      }
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public com.google.appengine.v1.Library.Builder addLibrariesBuilder() {
      return getLibrariesFieldBuilder().addBuilder(
          com.google.appengine.v1.Library.getDefaultInstance());
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public com.google.appengine.v1.Library.Builder addLibrariesBuilder(
        int index) {
      return getLibrariesFieldBuilder().addBuilder(
          index, com.google.appengine.v1.Library.getDefaultInstance());
    }
    /**
     *

     * Configuration for third-party Python runtime libraries that are required
     * by the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * repeated .google.appengine.v1.Library libraries = 102;
     */
    public java.util.List<com.google.appengine.v1.Library.Builder>
         getLibrariesBuilderList() {
      return getLibrariesFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilderV3<
        com.google.appengine.v1.Library, com.google.appengine.v1.Library.Builder, com.google.appengine.v1.LibraryOrBuilder>
        getLibrariesFieldBuilder() {
      if (librariesBuilder_ == null) {
        librariesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.appengine.v1.Library, com.google.appengine.v1.Library.Builder, com.google.appengine.v1.LibraryOrBuilder>(
                libraries_,
                ((bitField0_ & 0x00100000) == 0x00100000),
                getParentForChildren(),
                isClean());
        libraries_ = null;
      }
      return librariesBuilder_;
    }

    private com.google.appengine.v1.ApiConfigHandler apiConfig_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.ApiConfigHandler, com.google.appengine.v1.ApiConfigHandler.Builder, com.google.appengine.v1.ApiConfigHandlerOrBuilder> apiConfigBuilder_;
    /**
     *

     * Serving configuration for
     * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
     */
    public boolean hasApiConfig() {
      return apiConfigBuilder_ != null || apiConfig_ != null;
    }
    /**
     *

     * Serving configuration for
     * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
     */
    public com.google.appengine.v1.ApiConfigHandler getApiConfig() {
      if (apiConfigBuilder_ == null) {
        return apiConfig_ == null ? com.google.appengine.v1.ApiConfigHandler.getDefaultInstance() : apiConfig_;
      } else {
        return apiConfigBuilder_.getMessage();
      }
    }
    /**
     *

     * Serving configuration for
     * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
     */
    public Builder setApiConfig(com.google.appengine.v1.ApiConfigHandler value) {
      if (apiConfigBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        apiConfig_ = value;
        onChanged();
      } else {
        apiConfigBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     *

     * Serving configuration for
     * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
     */
    public Builder setApiConfig(
        com.google.appengine.v1.ApiConfigHandler.Builder builderForValue) {
      if (apiConfigBuilder_ == null) {
        apiConfig_ = builderForValue.build();
        onChanged();
      } else {
        apiConfigBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     *

     * Serving configuration for
     * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
     */
    public Builder mergeApiConfig(com.google.appengine.v1.ApiConfigHandler value) {
      if (apiConfigBuilder_ == null) {
        if (apiConfig_ != null) {
          apiConfig_ =
            com.google.appengine.v1.ApiConfigHandler.newBuilder(apiConfig_).mergeFrom(value).buildPartial();
        } else {
          apiConfig_ = value;
        }
        onChanged();
      } else {
        apiConfigBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     *

     * Serving configuration for
     * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
     */
    public Builder clearApiConfig() {
      if (apiConfigBuilder_ == null) {
        apiConfig_ = null;
        onChanged();
      } else {
        apiConfig_ = null;
        apiConfigBuilder_ = null;
      }

      return this;
    }
    /**
     *

     * Serving configuration for
     * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
     */
    public com.google.appengine.v1.ApiConfigHandler.Builder getApiConfigBuilder() {

      onChanged();
      return getApiConfigFieldBuilder().getBuilder();
    }
    /**
     *

     * Serving configuration for
     * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
     */
    public com.google.appengine.v1.ApiConfigHandlerOrBuilder getApiConfigOrBuilder() {
      if (apiConfigBuilder_ != null) {
        return apiConfigBuilder_.getMessageOrBuilder();
      } else {
        return apiConfig_ == null ?
            com.google.appengine.v1.ApiConfigHandler.getDefaultInstance() : apiConfig_;
      }
    }
    /**
     *

     * Serving configuration for
     * [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/).
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.ApiConfigHandler api_config = 103;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.ApiConfigHandler, com.google.appengine.v1.ApiConfigHandler.Builder, com.google.appengine.v1.ApiConfigHandlerOrBuilder>
        getApiConfigFieldBuilder() {
      if (apiConfigBuilder_ == null) {
        apiConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.ApiConfigHandler, com.google.appengine.v1.ApiConfigHandler.Builder, com.google.appengine.v1.ApiConfigHandlerOrBuilder>(
                getApiConfig(),
                getParentForChildren(),
                isClean());
        apiConfig_ = null;
      }
      return apiConfigBuilder_;
    }

    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> envVariables_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetEnvVariables() {
      if (envVariables_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            EnvVariablesDefaultEntryHolder.defaultEntry);
      }
      return envVariables_;
    }
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetMutableEnvVariables() {
      onChanged();;
      if (envVariables_ == null) {
        envVariables_ = com.google.protobuf.MapField.newMapField(
            EnvVariablesDefaultEntryHolder.defaultEntry);
      }
      if (!envVariables_.isMutable()) {
        envVariables_ = envVariables_.copy();
      }
      return envVariables_;
    }

    public int getEnvVariablesCount() {
      return internalGetEnvVariables().getMap().size();
    }
    /**
     *

     * Environment variables available to the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * map<string, string> env_variables = 104;
     */

    public boolean containsEnvVariables(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetEnvVariables().getMap().containsKey(key);
    }
    /**
     * Use {@link #getEnvVariablesMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getEnvVariables() {
      return getEnvVariablesMap();
    }
    /**
     *

     * Environment variables available to the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * map<string, string> env_variables = 104;
     */

    public java.util.Map<java.lang.String, java.lang.String> getEnvVariablesMap() {
      return internalGetEnvVariables().getMap();
    }
    /**
     *

     * Environment variables available to the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * map<string, string> env_variables = 104;
     */

    public java.lang.String getEnvVariablesOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetEnvVariables().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     *

     * Environment variables available to the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * map<string, string> env_variables = 104;
     */

    public java.lang.String getEnvVariablesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetEnvVariables().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public Builder clearEnvVariables() {
      getMutableEnvVariables().clear();
      return this;
    }
    /**
     *

     * Environment variables available to the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * map<string, string> env_variables = 104;
     */

    public Builder removeEnvVariables(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      getMutableEnvVariables().remove(key);
      return this;
    }
    /**
     * Use alternate mutation accessors instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String>
    getMutableEnvVariables() {
      return internalGetMutableEnvVariables().getMutableMap();
    }
    /**
     *

     * Environment variables available to the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * map<string, string> env_variables = 104;
     */
    public Builder putEnvVariables(
        java.lang.String key,
        java.lang.String value) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      if (value == null) { throw new java.lang.NullPointerException(); }
      getMutableEnvVariables().put(key, value);
      return this;
    }
    /**
     *

     * Environment variables available to the application.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * map<string, string> env_variables = 104;
     */

    public Builder putAllEnvVariables(
        java.util.Map<java.lang.String, java.lang.String> values) {
      getMutableEnvVariables().putAll(values);
      return this;
    }

    private com.google.protobuf.Duration defaultExpiration_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> defaultExpirationBuilder_;
    /**
     *

     * Duration that static files should be cached by web proxies and browsers.
     * Only applicable if the corresponding
     * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
     * does not specify its own expiration time.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.protobuf.Duration default_expiration = 105;
     */
    public boolean hasDefaultExpiration() {
      return defaultExpirationBuilder_ != null || defaultExpiration_ != null;
    }
    /**
     *

     * Duration that static files should be cached by web proxies and browsers.
     * Only applicable if the corresponding
     * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
     * does not specify its own expiration time.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.protobuf.Duration default_expiration = 105;
     */
    public com.google.protobuf.Duration getDefaultExpiration() {
      if (defaultExpirationBuilder_ == null) {
        return defaultExpiration_ == null ? com.google.protobuf.Duration.getDefaultInstance() : defaultExpiration_;
      } else {
        return defaultExpirationBuilder_.getMessage();
      }
    }
    /**
     *

     * Duration that static files should be cached by web proxies and browsers.
     * Only applicable if the corresponding
     * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
     * does not specify its own expiration time.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.protobuf.Duration default_expiration = 105;
     */
    public Builder setDefaultExpiration(com.google.protobuf.Duration value) {
      if (defaultExpirationBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        defaultExpiration_ = value;
        onChanged();
      } else {
        defaultExpirationBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     *

     * Duration that static files should be cached by web proxies and browsers.
     * Only applicable if the corresponding
     * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
     * does not specify its own expiration time.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.protobuf.Duration default_expiration = 105;
     */
    public Builder setDefaultExpiration(
        com.google.protobuf.Duration.Builder builderForValue) {
      if (defaultExpirationBuilder_ == null) {
        defaultExpiration_ = builderForValue.build();
        onChanged();
      } else {
        defaultExpirationBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     *

     * Duration that static files should be cached by web proxies and browsers.
     * Only applicable if the corresponding
     * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
     * does not specify its own expiration time.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.protobuf.Duration default_expiration = 105;
     */
    public Builder mergeDefaultExpiration(com.google.protobuf.Duration value) {
      if (defaultExpirationBuilder_ == null) {
        if (defaultExpiration_ != null) {
          defaultExpiration_ =
            com.google.protobuf.Duration.newBuilder(defaultExpiration_).mergeFrom(value).buildPartial();
        } else {
          defaultExpiration_ = value;
        }
        onChanged();
      } else {
        defaultExpirationBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     *

     * Duration that static files should be cached by web proxies and browsers.
     * Only applicable if the corresponding
     * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
     * does not specify its own expiration time.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.protobuf.Duration default_expiration = 105;
     */
    public Builder clearDefaultExpiration() {
      if (defaultExpirationBuilder_ == null) {
        defaultExpiration_ = null;
        onChanged();
      } else {
        defaultExpiration_ = null;
        defaultExpirationBuilder_ = null;
      }

      return this;
    }
    /**
     *

     * Duration that static files should be cached by web proxies and browsers.
     * Only applicable if the corresponding
     * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
     * does not specify its own expiration time.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.protobuf.Duration default_expiration = 105;
     */
    public com.google.protobuf.Duration.Builder getDefaultExpirationBuilder() {

      onChanged();
      return getDefaultExpirationFieldBuilder().getBuilder();
    }
    /**
     *

     * Duration that static files should be cached by web proxies and browsers.
     * Only applicable if the corresponding
     * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
     * does not specify its own expiration time.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.protobuf.Duration default_expiration = 105;
     */
    public com.google.protobuf.DurationOrBuilder getDefaultExpirationOrBuilder() {
      if (defaultExpirationBuilder_ != null) {
        return defaultExpirationBuilder_.getMessageOrBuilder();
      } else {
        return defaultExpiration_ == null ?
            com.google.protobuf.Duration.getDefaultInstance() : defaultExpiration_;
      }
    }
    /**
     *

     * Duration that static files should be cached by web proxies and browsers.
     * Only applicable if the corresponding
     * [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler)
     * does not specify its own expiration time.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.protobuf.Duration default_expiration = 105;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>
        getDefaultExpirationFieldBuilder() {
      if (defaultExpirationBuilder_ == null) {
        defaultExpirationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
                getDefaultExpiration(),
                getParentForChildren(),
                isClean());
        defaultExpiration_ = null;
      }
      return defaultExpirationBuilder_;
    }

    private com.google.appengine.v1.HealthCheck healthCheck_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.HealthCheck, com.google.appengine.v1.HealthCheck.Builder, com.google.appengine.v1.HealthCheckOrBuilder> healthCheckBuilder_;
    /**
     *

     * Configures health checking for VM instances. Unhealthy instances are
     * stopped and replaced with new instances. Only applicable for VM
     * runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.HealthCheck health_check = 106;
     */
    public boolean hasHealthCheck() {
      return healthCheckBuilder_ != null || healthCheck_ != null;
    }
    /**
     *

     * Configures health checking for VM instances. Unhealthy instances are
     * stopped and replaced with new instances. Only applicable for VM
     * runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.HealthCheck health_check = 106;
     */
    public com.google.appengine.v1.HealthCheck getHealthCheck() {
      if (healthCheckBuilder_ == null) {
        return healthCheck_ == null ? com.google.appengine.v1.HealthCheck.getDefaultInstance() : healthCheck_;
      } else {
        return healthCheckBuilder_.getMessage();
      }
    }
    /**
     *

     * Configures health checking for VM instances. Unhealthy instances are
     * stopped and replaced with new instances. Only applicable for VM
     * runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.HealthCheck health_check = 106;
     */
    public Builder setHealthCheck(com.google.appengine.v1.HealthCheck value) {
      if (healthCheckBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        healthCheck_ = value;
        onChanged();
      } else {
        healthCheckBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     *

     * Configures health checking for VM instances. Unhealthy instances are
     * stopped and replaced with new instances. Only applicable for VM
     * runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.HealthCheck health_check = 106;
     */
    public Builder setHealthCheck(
        com.google.appengine.v1.HealthCheck.Builder builderForValue) {
      if (healthCheckBuilder_ == null) {
        healthCheck_ = builderForValue.build();
        onChanged();
      } else {
        healthCheckBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     *

     * Configures health checking for VM instances. Unhealthy instances are
     * stopped and replaced with new instances. Only applicable for VM
     * runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.HealthCheck health_check = 106;
     */
    public Builder mergeHealthCheck(com.google.appengine.v1.HealthCheck value) {
      if (healthCheckBuilder_ == null) {
        if (healthCheck_ != null) {
          healthCheck_ =
            com.google.appengine.v1.HealthCheck.newBuilder(healthCheck_).mergeFrom(value).buildPartial();
        } else {
          healthCheck_ = value;
        }
        onChanged();
      } else {
        healthCheckBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     *

     * Configures health checking for VM instances. Unhealthy instances are
     * stopped and replaced with new instances. Only applicable for VM
     * runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.HealthCheck health_check = 106;
     */
    public Builder clearHealthCheck() {
      if (healthCheckBuilder_ == null) {
        healthCheck_ = null;
        onChanged();
      } else {
        healthCheck_ = null;
        healthCheckBuilder_ = null;
      }

      return this;
    }
    /**
     *

     * Configures health checking for VM instances. Unhealthy instances are
     * stopped and replaced with new instances. Only applicable for VM
     * runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.HealthCheck health_check = 106;
     */
    public com.google.appengine.v1.HealthCheck.Builder getHealthCheckBuilder() {

      onChanged();
      return getHealthCheckFieldBuilder().getBuilder();
    }
    /**
     *

     * Configures health checking for VM instances. Unhealthy instances are
     * stopped and replaced with new instances. Only applicable for VM
     * runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.HealthCheck health_check = 106;
     */
    public com.google.appengine.v1.HealthCheckOrBuilder getHealthCheckOrBuilder() {
      if (healthCheckBuilder_ != null) {
        return healthCheckBuilder_.getMessageOrBuilder();
      } else {
        return healthCheck_ == null ?
            com.google.appengine.v1.HealthCheck.getDefaultInstance() : healthCheck_;
      }
    }
    /**
     *

     * Configures health checking for VM instances. Unhealthy instances are
     * stopped and replaced with new instances. Only applicable for VM
     * runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.HealthCheck health_check = 106;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.HealthCheck, com.google.appengine.v1.HealthCheck.Builder, com.google.appengine.v1.HealthCheckOrBuilder>
        getHealthCheckFieldBuilder() {
      if (healthCheckBuilder_ == null) {
        healthCheckBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.HealthCheck, com.google.appengine.v1.HealthCheck.Builder, com.google.appengine.v1.HealthCheckOrBuilder>(
                getHealthCheck(),
                getParentForChildren(),
                isClean());
        healthCheck_ = null;
      }
      return healthCheckBuilder_;
    }

    private java.lang.Object nobuildFilesRegex_ = "";
    /**
     *

     * Files that match this pattern will not be built into this version.
     * Only applicable for Go runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional string nobuild_files_regex = 107;
     */
    public java.lang.String getNobuildFilesRegex() {
      java.lang.Object ref = nobuildFilesRegex_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        nobuildFilesRegex_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *

     * Files that match this pattern will not be built into this version.
     * Only applicable for Go runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional string nobuild_files_regex = 107;
     */
    public com.google.protobuf.ByteString
        getNobuildFilesRegexBytes() {
      java.lang.Object ref = nobuildFilesRegex_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nobuildFilesRegex_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *

     * Files that match this pattern will not be built into this version.
     * Only applicable for Go runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional string nobuild_files_regex = 107;
     */
    public Builder setNobuildFilesRegex(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }

      nobuildFilesRegex_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * Files that match this pattern will not be built into this version.
     * Only applicable for Go runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional string nobuild_files_regex = 107;
     */
    public Builder clearNobuildFilesRegex() {

      nobuildFilesRegex_ = getDefaultInstance().getNobuildFilesRegex();
      onChanged();
      return this;
    }
    /**
     *

     * Files that match this pattern will not be built into this version.
     * Only applicable for Go runtimes.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional string nobuild_files_regex = 107;
     */
    public Builder setNobuildFilesRegexBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

      nobuildFilesRegex_ = value;
      onChanged();
      return this;
    }

    private com.google.appengine.v1.Deployment deployment_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.Deployment, com.google.appengine.v1.Deployment.Builder, com.google.appengine.v1.DeploymentOrBuilder> deploymentBuilder_;
    /**
     *

     * Code and application artifacts that make up this version.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.Deployment deployment = 108;
     */
    public boolean hasDeployment() {
      return deploymentBuilder_ != null || deployment_ != null;
    }
    /**
     *

     * Code and application artifacts that make up this version.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.Deployment deployment = 108;
     */
    public com.google.appengine.v1.Deployment getDeployment() {
      if (deploymentBuilder_ == null) {
        return deployment_ == null ? com.google.appengine.v1.Deployment.getDefaultInstance() : deployment_;
      } else {
        return deploymentBuilder_.getMessage();
      }
    }
    /**
     *

     * Code and application artifacts that make up this version.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.Deployment deployment = 108;
     */
    public Builder setDeployment(com.google.appengine.v1.Deployment value) {
      if (deploymentBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        deployment_ = value;
        onChanged();
      } else {
        deploymentBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     *

     * Code and application artifacts that make up this version.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.Deployment deployment = 108;
     */
    public Builder setDeployment(
        com.google.appengine.v1.Deployment.Builder builderForValue) {
      if (deploymentBuilder_ == null) {
        deployment_ = builderForValue.build();
        onChanged();
      } else {
        deploymentBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     *

     * Code and application artifacts that make up this version.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.Deployment deployment = 108;
     */
    public Builder mergeDeployment(com.google.appengine.v1.Deployment value) {
      if (deploymentBuilder_ == null) {
        if (deployment_ != null) {
          deployment_ =
            com.google.appengine.v1.Deployment.newBuilder(deployment_).mergeFrom(value).buildPartial();
        } else {
          deployment_ = value;
        }
        onChanged();
      } else {
        deploymentBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     *

     * Code and application artifacts that make up this version.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.Deployment deployment = 108;
     */
    public Builder clearDeployment() {
      if (deploymentBuilder_ == null) {
        deployment_ = null;
        onChanged();
      } else {
        deployment_ = null;
        deploymentBuilder_ = null;
      }

      return this;
    }
    /**
     *

     * Code and application artifacts that make up this version.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.Deployment deployment = 108;
     */
    public com.google.appengine.v1.Deployment.Builder getDeploymentBuilder() {

      onChanged();
      return getDeploymentFieldBuilder().getBuilder();
    }
    /**
     *

     * Code and application artifacts that make up this version.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.Deployment deployment = 108;
     */
    public com.google.appengine.v1.DeploymentOrBuilder getDeploymentOrBuilder() {
      if (deploymentBuilder_ != null) {
        return deploymentBuilder_.getMessageOrBuilder();
      } else {
        return deployment_ == null ?
            com.google.appengine.v1.Deployment.getDefaultInstance() : deployment_;
      }
    }
    /**
     *

     * Code and application artifacts that make up this version.
     * Only returned in `GET` requests if `view=FULL` is set.
     *

     *
     * optional .google.appengine.v1.Deployment deployment = 108;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.appengine.v1.Deployment, com.google.appengine.v1.Deployment.Builder, com.google.appengine.v1.DeploymentOrBuilder>
        getDeploymentFieldBuilder() {
      if (deploymentBuilder_ == null) {
        deploymentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.Deployment, com.google.appengine.v1.Deployment.Builder, com.google.appengine.v1.DeploymentOrBuilder>(
                getDeployment(),
                getParentForChildren(),
                isClean());
        deployment_ = null;
      }
      return deploymentBuilder_;
    }

    private java.lang.Object versionUrl_ = "";
    /**
     *

     * Serving URL for this version. Example:
     * "https://myversion-dot-myservice-dot-myapp.appspot.com"
     * @OutputOnly
     *

     *
     * optional string version_url = 109;
     */
    public java.lang.String getVersionUrl() {
      java.lang.Object ref = versionUrl_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        versionUrl_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *

     * Serving URL for this version. Example:
     * "https://myversion-dot-myservice-dot-myapp.appspot.com"
     * @OutputOnly
     *

     *
     * optional string version_url = 109;
     */
    public com.google.protobuf.ByteString
        getVersionUrlBytes() {
      java.lang.Object ref = versionUrl_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        versionUrl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *

     * Serving URL for this version. Example:
     * "https://myversion-dot-myservice-dot-myapp.appspot.com"
     * @OutputOnly
     *

     *
     * optional string version_url = 109;
     */
    public Builder setVersionUrl(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }

      versionUrl_ = value;
      onChanged();
      return this;
    }
    /**
     *

     * Serving URL for this version. Example:
     * "https://myversion-dot-myservice-dot-myapp.appspot.com"
     * @OutputOnly
     *

     *
     * optional string version_url = 109;
     */
    public Builder clearVersionUrl() {

      versionUrl_ = getDefaultInstance().getVersionUrl();
      onChanged();
      return this;
    }
    /**
     *

     * Serving URL for this version. Example:
     * "https://myversion-dot-myservice-dot-myapp.appspot.com"
     * @OutputOnly
     *

     *
     * optional string version_url = 109;
     */
    public Builder setVersionUrlBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

      versionUrl_ = value;
      onChanged();
      return this;
    }
    public final Builder setUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return this;
    }

    public final Builder mergeUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return this;
    }

    // @@protoc_insertion_point(builder_scope:google.appengine.v1.Version)
  }

  // @@protoc_insertion_point(class_scope:google.appengine.v1.Version)
  private static final com.google.appengine.v1.Version DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new com.google.appengine.v1.Version();
  }

  public static com.google.appengine.v1.Version getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<Version>
      PARSER = new com.google.protobuf.AbstractParser<Version>() {
    public Version parsePartialFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
        return new Version(input, extensionRegistry);
    }
  };

  public static com.google.protobuf.Parser<Version> parser() {
    return PARSER;
  }

  @java.lang.Override
  public com.google.protobuf.Parser<Version> getParserForType() {
    return PARSER;
  }

  public com.google.appengine.v1.Version getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

redpajama_set_name: RedPajamaGithub